Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE xsl:stylesheet>
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
- <xsl:decimal-format name="my" decimal-separator="," grouping-separator=" "/>
- <xsl:template match="/">
- <script>
- function countCartAdd(id)
- {
- var countCartValue = $("#countCart_"+id).html();
- var newCount = 1;
- newCount += parseInt(countCartValue);
- $("#countCart_"+id).html(newCount);
- //$("#countCart_"+id).html(countCartValue+1);
- }
- </script>
- <xsl:apply-templates select="/site"/>
- </xsl:template>
- <xsl:template match="/site">
- <!-- <h1>Поиск</h1> -->
- <!-- Форма поиска -->
- <form method="get" action="/search/">
- <input type="text" name="text" value="{query}" maxlength="200" class="search_input_bg"/> 
- <input type="submit" class="search_ok" value=""/>
- </form>
- <br/>
- <xsl:if test="query!=''">
- <!-- <p>
- <strong>Найдено <xsl:value-of select="total"/> <xsl:call-template name="declension">
- <xsl:with-param name="number" select="total"/></xsl:call-template></strong>.</p> -->
- <xsl:if test="total!=0">
- <!-- <ol start="{(page) * limit + 1}"> -->
- <div id="search_pages">
- <ul>
- <xsl:apply-templates select="search_page" mode="new">
- </xsl:apply-templates>
- </ul>
- </div>
- <!-- </ol> -->
- <!-- Строка ссылок на другие страницы результата поиска -->
- <table border="0" width="100%">
- <tr>
- <td width="220" style="padding-top: 0px;">
- <div class="pages_description ffg" style="clear: both">
- <ul>
- <xsl:if test="total > 0 and limit > 0">
- <xsl:variable name="count_pages" select="ceiling(total div limit)"/>
- <xsl:variable name="visible_pages" select="2"/>
- <xsl:variable name="real_visible_pages"><xsl:choose>
- <xsl:when test="$count_pages < $visible_pages"><xsl:value-of select="$count_pages"/></xsl:when>
- <xsl:otherwise><xsl:value-of select="$visible_pages"/></xsl:otherwise>
- </xsl:choose></xsl:variable>
- <!-- Считаем количество выводимых ссылок перед текущим элементом -->
- <xsl:variable name="pre_count_page"><xsl:choose>
- <xsl:when test="page - (floor($real_visible_pages div 2)) < 0">
- <xsl:value-of select="page"/>
- </xsl:when>
- <xsl:when test="($count_pages - page) < floor($real_visible_pages div 2)">
- <xsl:value-of select="$real_visible_pages - ($count_pages - page) - 1"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="round($real_visible_pages div 2) = $real_visible_pages div 2">
- <xsl:value-of select="floor($real_visible_pages div 2) - 1"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="floor($real_visible_pages div 2)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose></xsl:variable>
- <!-- Считаем количество выводимых ссылок после текущего элемента -->
- <xsl:variable name="post_count_page"><xsl:choose>
- <xsl:when test="0 > page - (floor($real_visible_pages div 2) - 1)">
- <xsl:value-of select="$real_visible_pages - page"/>
- </xsl:when>
- <xsl:when test="($count_pages - page) < floor($real_visible_pages div 2)">
- <xsl:value-of select="$real_visible_pages - $pre_count_page - 1"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$real_visible_pages - $pre_count_page - 1"/>
- </xsl:otherwise>
- </xsl:choose></xsl:variable>
- <xsl:variable name="i"><xsl:choose>
- <xsl:when test="page + 1 = $count_pages"><xsl:value-of select="page - $real_visible_pages + 1"/></xsl:when>
- <xsl:when test="page - $pre_count_page > 0"><xsl:value-of select="page - $pre_count_page"/></xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose></xsl:variable>
- <xsl:call-template name="for_arrows_down_prev">
- <xsl:with-param name="limit" select="limit"/>
- <xsl:with-param name="page" select="page"/>
- <xsl:with-param name="total" select="total"/>
- <xsl:with-param name="visible_pages" select="10000"/>
- </xsl:call-template>
- </xsl:if>
- </ul>
- </div>
- </td>
- <td width="100%" style="padding-top: 0px;">
- <div class="pages ffg" style="clear: both">
- <ul>
- <xsl:call-template name="for">
- <xsl:with-param name="limit" select="limit"/>
- <xsl:with-param name="page" select="page"/>
- <xsl:with-param name="total" select="total"/>
- <xsl:with-param name="visible_pages">9999</xsl:with-param>
- </xsl:call-template>
- </ul>
- </div>
- </td>
- <td width="220" style="padding-top: 0px;">
- <div class="pages_description ffg" style="clear: both">
- <ul>
- <xsl:if test="total > 0 and limit > 0">
- <xsl:variable name="count_pages" select="ceiling(total div limit)"/>
- <xsl:variable name="visible_pages" select="2"/>
- <xsl:variable name="real_visible_pages"><xsl:choose>
- <xsl:when test="$count_pages < $visible_pages"><xsl:value-of select="$count_pages"/></xsl:when>
- <xsl:otherwise><xsl:value-of select="$visible_pages"/></xsl:otherwise>
- </xsl:choose></xsl:variable>
- <!-- Считаем количество выводимых ссылок перед текущим элементом -->
- <xsl:variable name="pre_count_page"><xsl:choose>
- <xsl:when test="page - (floor($real_visible_pages div 2)) < 0">
- <xsl:value-of select="page"/>
- </xsl:when>
- <xsl:when test="($count_pages - page) < floor($real_visible_pages div 2)">
- <xsl:value-of select="$real_visible_pages - ($count_pages - page) - 1"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="round($real_visible_pages div 2) = $real_visible_pages div 2">
- <xsl:value-of select="floor($real_visible_pages div 2) - 1"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="floor($real_visible_pages div 2)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose></xsl:variable>
- <!-- Считаем количество выводимых ссылок после текущего элемента -->
- <xsl:variable name="post_count_page"><xsl:choose>
- <xsl:when test="0 > page - (floor($real_visible_pages div 2) - 1)">
- <xsl:value-of select="$real_visible_pages - page"/>
- </xsl:when>
- <xsl:when test="($count_pages - page) < floor($real_visible_pages div 2)">
- <xsl:value-of select="$real_visible_pages - $pre_count_page - 1"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$real_visible_pages - $pre_count_page - 1"/>
- </xsl:otherwise>
- </xsl:choose></xsl:variable>
- <xsl:variable name="i"><xsl:choose>
- <xsl:when test="page + 1 = $count_pages"><xsl:value-of select="page - $real_visible_pages + 1"/></xsl:when>
- <xsl:when test="page - $pre_count_page > 0"><xsl:value-of select="page - $pre_count_page"/></xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose></xsl:variable>
- <xsl:call-template name="for_arrows_down_next">
- <xsl:with-param name="limit" select="limit"/>
- <xsl:with-param name="page" select="page"/>
- <xsl:with-param name="total" select="total"/>
- <xsl:with-param name="visible_pages" select="10000"/>
- </xsl:call-template>
- </xsl:if>
- </ul>
- </div>
- </td>
- </tr>
- </table>
- </xsl:if>
- </xsl:if>
- <xsl:if test="query = ''">
- <p>Введите поисковой запрос.</p>
- </xsl:if>
- </xsl:template>
- <xsl:template match="search_page">
- <li>
- <a href="{url}">
- <xsl:value-of select="title"/>
- </a>
- <br/>
- <!--<xsl:value-of select="url" />-->
- <xsl:apply-templates select="url"/> ·  <xsl:value-of select="size"/> Кб · <xsl:value-of select="date"/></li>
- </xsl:template>
- <xsl:template match="search_page" mode="new">
- <li>
- <div class="search_page" style="height: 300px;">
- <div class="i-head">
- <a href="{url}" style="text-decoration:none;" title="{search_page/name}">
- <img src="{image_small}" width="179" height="179" border="0" alt="{search_page/name}" />
- </a>
- </div>
- <div class="i-body">
- <h2><a href="{url}"><xsl:value-of select="shop_item/name"/></a></h2>
- </div>
- <div class="i-foot">
- <div class="i-price"><xsl:value-of select="format-number(shop_item/price, '### ##0', 'my')" />,<span class="f18">00 P</span></div>
- <div class="i-buy">
- <input type="hidden" size="3" value="1" id="count_{shop_item/@id}"/>
- <a href="/shop/cart/?action=add&search_page_id={shop_item/@id}" class="bttn button-bg" title="Добавить в корзину"
- onclick="return AddIntoCart('/shop/', {shop_item/@id}, document.getElementById('count_{shop_item/@id}').value)">
- <img src="/images/none.gif" class="basket" alt="" />
- <span>Купить</span><span onclick="countCartAdd({shop_item/@id});" style="position: absolute; width: 95px; height: 20px; margin: -6px 0 0 -85px; padding: 5px 0 0 10px; z-index: 999;"></span>
- </a>
- <div style="margin-top: 10px;">Товара в корзине <b><span id="countCart_{shop_item/@id}"><!-- <xsl:value-of select="@countCart" /> -->0</span></b> шт.</div>
- </div>
- </div>
- </div>
- </li>
- <!-- <li>
- <a href="{url}">
- <xsl:value-of select="title"/>
- </a>
- <br/>
- <xsl:apply-templates select="url"/> ·  <xsl:value-of select="size"/> Кб · <xsl:value-of select="date"/></li> -->
- </xsl:template>
- <xsl:template name="url" match="text()">
- <xsl:param name="str" select="."/>
- <xsl:param name="max">50</xsl:param>
- <xsl:param name="hvost">10</xsl:param>
- <xsl:param name="begin">
- <xsl:choose>
- <xsl:when test="string-length($str) > $max">
- <xsl:value-of select="substring($str, 1, $max - $hvost)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="substring($str, 1)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="end">
- <xsl:choose>
- <xsl:when test="string-length($str) > $max">
- <xsl:value-of select="substring($str, string-length($str) - $hvost + 1, $hvost)"/>
- </xsl:when>
- <xsl:otherwise>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="result">
- <xsl:choose>
- <xsl:when test="$end != ''">
- <xsl:value-of select="concat($begin, '…', $end)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$begin"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:value-of disable-output-escaping="yes" select="$result"/>
- </xsl:template>
- <!-- Цикл для вывода строк ссылок -->
- <xsl:template name="for_original">
- <xsl:param name="limit"/>
- <xsl:param name="page"/>
- <xsl:param name="pre_count_page"/>
- <xsl:param name="post_count_page"/>
- <xsl:param name="i" select="0"/>
- <xsl:param name="total"/>
- <xsl:param name="visible_pages"/>
- <xsl:param name="prefix">page</xsl:param>
- <xsl:variable name="n" select="ceiling($total div $limit)"/>
- <xsl:variable name="start_page"><xsl:choose>
- <xsl:when test="$page + 1 = $n"><xsl:value-of select="$page - $visible_pages + 1"/></xsl:when>
- <xsl:when test="$page - $pre_count_page > 0"><xsl:value-of select="$page - $pre_count_page"/></xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose></xsl:variable>
- <xsl:if test="$i = $start_page and $page != 0">
- <span class="ctrl">
- ← Ctrl
- </span>
- </xsl:if>
- <xsl:if test="$i = ($page + $post_count_page + 1) and $n != ($page+1)">
- <span class="ctrl">
- Ctrl →
- </span>
- </xsl:if>
- <xsl:if test="$total > $limit and ($page + $post_count_page + 1) > $i">
- <!-- Определяем адрес ссылки -->
- <xsl:variable name="number_link">
- <xsl:choose>
- <!-- Если не нулевой уровень -->
- <xsl:when test="$i != 0">&<xsl:value-of select="$prefix"/>=<xsl:value-of select="$i + 1"/></xsl:when>
- <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Выводим ссылку на первую страницу -->
- <xsl:if test="$page - $pre_count_page > 0 and $i = $start_page">
- <a href="./?text={/site/queryencode}" class="page_link" style="text-decoration: none;">←</a>
- </xsl:if>
- <!-- Ставим ссылку на страницу-->
- <xsl:if test="$i != $page">
- <xsl:if test="($page - $pre_count_page) <= $i and $i < $n">
- <!-- Выводим ссылки на видимые страницы -->
- <a href="./?text={/site/queryencode}{$number_link}" class="page_link">
- <xsl:value-of select="$i + 1"/>
- </a>
- </xsl:if>
- <!-- Выводим ссылку на последнюю страницу -->
- <xsl:if test="$i+1 >= ($page + $post_count_page + 1) and $n > ($page + 1 + $post_count_page)">
- <a href="./?text={/site/queryencode}&{$prefix}={$n}" class="page_link" style="text-decoration: none;">→</a>
- </xsl:if>
- </xsl:if>
- <!-- Ссылка на предыдущую страницу для Ctrl + влево -->
- <xsl:if test="$page != 0 and $i = $page">
- <xsl:variable name="prev_number_link">
- <xsl:choose>
- <!-- Если не нулевой уровень -->
- <xsl:when test="($page) != 0">page-<xsl:value-of select="$i"/>/</xsl:when>
- <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <a href="./?text={/site/queryencode}{$prev_number_link}" id="id_prev"></a>
- </xsl:if>
- <!-- Ссылка на следующую страницу для Ctrl + вправо -->
- <xsl:if test="($n - 1) > $page and $i = $page">
- <a href="./?text={/site/queryencode}&{$prefix}={$page+2}" id="id_next"></a>
- </xsl:if>
- <!-- Не ставим ссылку на страницу-->
- <xsl:if test="$i = $page">
- <span class="current">
- <xsl:value-of select="$i+1"/>
- </span>
- </xsl:if>
- <!-- Рекурсивный вызов шаблона. НЕОБХОДИМО ПЕРЕДАВАТЬ ВСЕ НЕОБХОДИМЫЕ ПАРАМЕТРЫ! -->
- <xsl:call-template name="for_original">
- <xsl:with-param name="i" select="$i + 1"/>
- <xsl:with-param name="limit" select="$limit"/>
- <xsl:with-param name="page" select="$page"/>
- <xsl:with-param name="total" select="$total"/>
- <xsl:with-param name="pre_count_page" select="$pre_count_page"/>
- <xsl:with-param name="post_count_page" select="$post_count_page"/>
- <xsl:with-param name="visible_pages" select="$visible_pages"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
- <!-- Склонение после числительных -->
- <xsl:template name="declension">
- <xsl:param name="number" select="number"/>
- <!-- Именительный падеж -->
- <xsl:variable name="nominative">
- <xsl:text>страница</xsl:text>
- </xsl:variable>
- <!-- Родительный падеж, единственное число -->
- <xsl:variable name="genitive_singular">
- <xsl:text>страницы</xsl:text>
- </xsl:variable>
- <xsl:variable name="genitive_plural">
- <xsl:text>страниц</xsl:text>
- </xsl:variable>
- <xsl:variable name="last_digit">
- <xsl:value-of select="$number mod 10"/>
- </xsl:variable>
- <xsl:variable name="last_two_digits">
- <xsl:value-of select="$number mod 100"/>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$last_digit = 1 and $last_two_digits != 11">
- <xsl:value-of select="$nominative"/>
- </xsl:when>
- <xsl:when test="$last_digit = 2 and $last_two_digits != 12 or $last_digit = 3 and $last_two_digits != 13 or $last_digit = 4 and $last_two_digits != 14">
- <xsl:value-of select="$genitive_singular"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$genitive_plural"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- <!-- Цикл для вывода строк ссылок -->
- <xsl:template name="for_arrows_down_prev">
- <xsl:param name="i" select="0"/>
- <xsl:param name="limit"/>
- <xsl:param name="page"/>
- <xsl:param name="total"/>
- <xsl:param name="visible_pages"/>
- <xsl:variable name="n" select="ceiling($total div $limit)"/>
- <!-- Считаем количество выводимых ссылок перед текущим элементом -->
- <xsl:variable name="pre_count_page">
- <xsl:choose>
- <xsl:when test="$page > ($n - (round($visible_pages div 2) - 1))">
- <xsl:value-of select="$visible_pages - ($n - $page)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="round($visible_pages div 2) - 1"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Считаем количество выводимых ссылок после текущего элемента -->
- <xsl:variable name="post_count_page">
- <xsl:choose>
- <xsl:when test="0 > $page - (round($visible_pages div 2) - 1)">
- <xsl:value-of select="$visible_pages - $page"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="round($visible_pages div 2) = ($visible_pages div 2)">
- <xsl:value-of select="$visible_pages div 2"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="round($visible_pages div 2) - 1"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- ############################################################################################## -->
- <!-- ############ след и в конец ############### -->
- <!-- Заносим в переменную $parent_group_id идентификатор текущей группы -->
- <xsl:variable name="parent_group_id" select="/shop/ТекущаяГруппа"/>
- <!-- Путь для тэга -->
- <xsl:variable name="tag_path_end">
- <xsl:if test="count(/shop/tag) = 1">tag/<xsl:value-of select="/shop/tag/urlencode"/>/</xsl:if>
- </xsl:variable>
- <!-- Определяем группу для формирования адреса ссылки -->
- <xsl:variable name="group_link_end">
- <xsl:choose>
- <!-- Если группа не корневая (!=0) -->
- <xsl:when test="$parent_group_id != 0">
- <xsl:value-of select="/shop//group[@id=$parent_group_id]/url"/>
- </xsl:when>
- <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Передаем фильтр -->
- <xsl:variable name="filter_end">
- <xsl:choose>
- <xsl:when test="/site/apply_filter/node()">&on_page=<xsl:value-of select="/site/on_page"/>
- <xsl:if test="/shop/property_xml/node()">
- <!-- GET для доп. свойств -->
- <xsl:value-of select="/shop/property_xml"/>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Определяем первый символ вопрос или амперсанд -->
- <xsl:variable name="first_symbol_end">
- <xsl:choose>
- <xsl:when test="$filter_end != ''">&</xsl:when>
- <xsl:otherwise>?</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Данные для стрелок сортировки -->
- <xsl:variable name="arrows">
- <xsl:choose>
- <xsl:when test="(/shop/sort_by_field = 1) or (/shop/sort_by_field = 2)">
- <xsl:choose>
- <!-- Стрелка вверх -->
- <xsl:when test="/shop/order_direction = 'ASC'">
- <xsl:value-of select="$first_symbol_end"/>sort_by_field=<xsl:value-of select="/shop/sort_by_field"/>&order_direction=1</xsl:when>
- <!-- Стрелка вниз -->
- <xsl:otherwise>
- <xsl:value-of select="$first_symbol_end"/>sort_by_field=<xsl:value-of select="/shop/sort_by_field"/>&order_direction=2</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Определяем адрес ссылки -->
- <xsl:variable name="number_link_end">
- <xsl:choose>
- <!-- Если не нулевой уровень -->
- <xsl:when test="$i != 0">page-<xsl:value-of select="$i"/>/</xsl:when>
- <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="$total > $limit and $n > $i">
- <!-- Заносим в переменную $parent_group_id идентификатор текущей группы -->
- <!-- <xsl:variable name="parent_group_id" select="/shop/ТекущаяГруппа"/> -->
- <!-- Путь для тэга -->
- <xsl:variable name="tag_path">
- <xsl:if test="count(/shop/tag) = 1">tag/<xsl:value-of select="/shop/tag/urlencode"/>/</xsl:if>
- </xsl:variable>
- <!-- Определяем группу для формирования адреса ссылки -->
- <xsl:variable name="group_link">
- <xsl:choose>
- <!-- Если группа не корневая (!=0) -->
- <xsl:when test="$parent_group_id != 0">
- <xsl:value-of select="/shop//group[@id=$parent_group_id]/url"/>
- </xsl:when>
- <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Определяем адрес ссылки -->
- <xsl:variable name="number_link">
- <xsl:choose>
- <!-- Если не нулевой уровень -->
- <xsl:when test="$i != 0">page-<xsl:value-of select="$i+1"/>/</xsl:when>
- <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Передаем фильтр -->
- <xsl:variable name="filter">
- <xsl:choose>
- <xsl:when test="/site/apply_filter/node()">&on_page=<xsl:value-of select="/site/on_page"/>
- <xsl:if test="/shop/property_xml/node()">
- <!-- GET для доп. свойств -->
- <xsl:value-of select="/shop/property_xml"/>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Определяем первый символ вопрос или амперсанд -->
- <xsl:variable name="first_symbol">
- <xsl:choose>
- <xsl:when test="$filter != ''">&</xsl:when>
- <xsl:otherwise>?</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- ############ первая и предыдущая ############### -->
- <!-- Выводим ссылку на первую страницу -->
- <xsl:if test="$i = 0">
- <xsl:choose>
- <xsl:when test="$page > 0">
- <li class="back"><a href="./?text={/site/queryencode}&page={$page}{$group_link_end}{$tag_path_end}{$filter_end}{$arrows}">Предыдущая</a></li>
- </xsl:when>
- <xsl:otherwise>
- <!-- <a id="arrow_left" class="nav_bottom_left inactive ie">112</a> -->
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- <!-- / ######## первая и предыдущая ############### -->
- <!-- Рекурсивный вызов шаблона. НЕОБХОДИМО ПЕРЕДАВАТЬ ВСЕ НЕОБХОДИМЫЕ ПАРАМЕТРЫ! -->
- <xsl:call-template name="for_arrows_down_prev">
- <xsl:with-param name="i" select="$i + 1"/>
- <xsl:with-param name="limit" select="$limit"/>
- <xsl:with-param name="page" select="$page"/>
- <xsl:with-param name="total" select="$total"/>
- <xsl:with-param name="visible_pages" select="$visible_pages"/>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="$i >= $n">
- <xsl:choose>
- <xsl:when test="$page+1 != $n">
- <!-- <a href="./?text={/site/queryencode}&page={$page+2}{$group_link_end}{$tag_path_end}{$filter_end}{$arrows}" class="nav_bottom_right ie">113</a> -->
- </xsl:when>
- <xsl:otherwise>
- <!-- <a id="arrow_right" class="nav_bottom_right inactive ie">114</a> -->
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
- <!-- Цикл для вывода строк ссылок -->
- <xsl:template name="for_arrows_down_next">
- <xsl:param name="i" select="0"/>
- <xsl:param name="limit"/>
- <xsl:param name="page"/>
- <xsl:param name="total"/>
- <xsl:param name="visible_pages"/>
- <xsl:variable name="n" select="ceiling($total div $limit)"/>
- <!-- Считаем количество выводимых ссылок перед текущим элементом -->
- <xsl:variable name="pre_count_page">
- <xsl:choose>
- <xsl:when test="$page > ($n - (round($visible_pages div 2) - 1))">
- <xsl:value-of select="$visible_pages - ($n - $page)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="round($visible_pages div 2) - 1"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Считаем количество выводимых ссылок после текущего элемента -->
- <xsl:variable name="post_count_page">
- <xsl:choose>
- <xsl:when test="0 > $page - (round($visible_pages div 2) - 1)">
- <xsl:value-of select="$visible_pages - $page"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="round($visible_pages div 2) = ($visible_pages div 2)">
- <xsl:value-of select="$visible_pages div 2"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="round($visible_pages div 2) - 1"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- ############################################################################################## -->
- <!-- ############ след и в конец ############### -->
- <!-- Заносим в переменную $parent_group_id идентификатор текущей группы -->
- <xsl:variable name="parent_group_id" select="/shop/ТекущаяГруппа"/>
- <!-- Путь для тэга -->
- <xsl:variable name="tag_path_end">
- <xsl:if test="count(/shop/tag) = 1">tag/<xsl:value-of select="/shop/tag/urlencode"/>/</xsl:if>
- </xsl:variable>
- <!-- Определяем группу для формирования адреса ссылки -->
- <xsl:variable name="group_link_end">
- <xsl:choose>
- <!-- Если группа не корневая (!=0) -->
- <xsl:when test="$parent_group_id != 0">
- <xsl:value-of select="/shop//group[@id=$parent_group_id]/url"/>
- </xsl:when>
- <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Передаем фильтр -->
- <xsl:variable name="filter_end">
- <xsl:choose>
- <xsl:when test="/site/apply_filter/node()">&on_page=<xsl:value-of select="/site/on_page"/>
- <xsl:if test="/shop/property_xml/node()">
- <!-- GET для доп. свойств -->
- <xsl:value-of select="/shop/property_xml"/>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Определяем первый символ вопрос или амперсанд -->
- <xsl:variable name="first_symbol_end">
- <xsl:choose>
- <xsl:when test="$filter_end != ''">&</xsl:when>
- <xsl:otherwise>?</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Данные для стрелок сортировки -->
- <xsl:variable name="arrows">
- <xsl:choose>
- <xsl:when test="(/shop/sort_by_field = 1) or (/shop/sort_by_field = 2)">
- <xsl:choose>
- <!-- Стрелка вверх -->
- <xsl:when test="/shop/order_direction = 'ASC'">
- <xsl:value-of select="$first_symbol_end"/>sort_by_field=<xsl:value-of select="/shop/sort_by_field"/>&order_direction=1</xsl:when>
- <!-- Стрелка вниз -->
- <xsl:otherwise>
- <xsl:value-of select="$first_symbol_end"/>sort_by_field=<xsl:value-of select="/shop/sort_by_field"/>&order_direction=2</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Определяем адрес ссылки -->
- <xsl:variable name="number_link_end">
- <xsl:choose>
- <!-- Если не нулевой уровень -->
- <xsl:when test="$i != 0">page-<xsl:value-of select="$i"/>/</xsl:when>
- <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="$total > $limit and $n > $i">
- <!-- Заносим в переменную $parent_group_id идентификатор текущей группы -->
- <!-- <xsl:variable name="parent_group_id" select="/shop/ТекущаяГруппа"/> -->
- <!-- Путь для тэга -->
- <xsl:variable name="tag_path">
- <xsl:if test="count(/shop/tag) = 1">tag/<xsl:value-of select="/shop/tag/urlencode"/>/</xsl:if>
- </xsl:variable>
- <!-- Определяем группу для формирования адреса ссылки -->
- <xsl:variable name="group_link">
- <xsl:choose>
- <!-- Если группа не корневая (!=0) -->
- <xsl:when test="$parent_group_id != 0">
- <xsl:value-of select="/shop//group[@id=$parent_group_id]/url"/>
- </xsl:when>
- <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Определяем адрес ссылки -->
- <xsl:variable name="number_link">
- <xsl:choose>
- <!-- Если не нулевой уровень -->
- <xsl:when test="$i != 0">page-<xsl:value-of select="$i+1"/>/</xsl:when>
- <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Передаем фильтр -->
- <xsl:variable name="filter">
- <xsl:choose>
- <xsl:when test="/site/apply_filter/node()">&on_page=<xsl:value-of select="/site/on_page"/>
- <xsl:if test="/shop/property_xml/node()">
- <!-- GET для доп. свойств -->
- <xsl:value-of select="/shop/property_xml"/>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Определяем первый символ вопрос или амперсанд -->
- <xsl:variable name="first_symbol">
- <xsl:choose>
- <xsl:when test="$filter != ''">&</xsl:when>
- <xsl:otherwise>?</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- ############ первая и предыдущая ############### -->
- <!-- Выводим ссылку на первую страницу -->
- <xsl:if test="$i = 0">
- <xsl:choose>
- <xsl:when test="$page > 0">
- <!-- <li class="back"><a href="./?text={/site/queryencode}&page={$page}{$group_link_end}{$tag_path_end}{$filter_end}{$arrows}">Предыдущая</a></li> -->
- </xsl:when>
- <xsl:otherwise>
- <!-- <a id="arrow_left" class="nav_bottom_left inactive ie">112</a> -->
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- <!-- / ######## первая и предыдущая ############### -->
- <!-- Рекурсивный вызов шаблона. НЕОБХОДИМО ПЕРЕДАВАТЬ ВСЕ НЕОБХОДИМЫЕ ПАРАМЕТРЫ! -->
- <xsl:call-template name="for_arrows_down_next">
- <xsl:with-param name="i" select="$i + 1"/>
- <xsl:with-param name="limit" select="$limit"/>
- <xsl:with-param name="page" select="$page"/>
- <xsl:with-param name="total" select="$total"/>
- <xsl:with-param name="visible_pages" select="$visible_pages"/>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="$i >= $n">
- <xsl:choose>
- <xsl:when test="$page+1 != $n">
- <li class="next"><a href="./?text={/site/queryencode}&page={$page+2}{$group_link_end}{$tag_path_end}{$filter_end}{$arrows}">Следующая</a></li>
- </xsl:when>
- <xsl:otherwise>
- <!-- <a id="arrow_right" class="nav_bottom_right inactive ie">114</a> -->
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
- <!-- Цикл для вывода строк ссылок -->
- <xsl:template name="for">
- <xsl:param name="i" select="0"/>
- <xsl:param name="prefix">page</xsl:param>
- <xsl:param name="limit"/>
- <xsl:param name="page"/>
- <xsl:param name="total"/>
- <xsl:param name="visible_pages"/>
- <xsl:variable name="n" select="$total div $limit"/>
- <!-- Заносим в переменную $parent_group_id идентификатор текущей группы -->
- <xsl:variable name="parent_group_id" select="/site/parent_group_id"/>
- <!-- Считаем количество выводимых ссылок перед текущим элементом -->
- <xsl:variable name="pre_count_page">
- <xsl:choose>
- <xsl:when test="$page > ($n - (round($visible_pages div 2) - 1))">
- <xsl:value-of select="$visible_pages - ($n - $page)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="round($visible_pages div 2) - 1"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Считаем количество выводимых ссылок после текущего элемента -->
- <xsl:variable name="post_count_page">
- <xsl:choose>
- <xsl:when test="0 > $page - (round($visible_pages div 2) - 1)">
- <xsl:value-of select="$visible_pages - $page"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="round($visible_pages div 2) = ($visible_pages div 2)">
- <xsl:value-of select="$visible_pages div 2"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="round($visible_pages div 2) - 1"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Передаем фильтр -->
- <xsl:variable name="filter">
- <xsl:choose>
- <xsl:when test="/site/apply_filter/node()">&on_page=<xsl:value-of select="/site/on_page"/>
- <xsl:if test="/shop/property_xml/node()">
- <!-- GET для доп. свойств -->
- <xsl:value-of select="/shop/property_xml"/>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- <xsl:if test="$i = 0 and $page != 0">
- <span class="ctrl">
- ← Ctrl
- </span>
- </xsl:if>
- <xsl:if test="$i >= $n and ($n - 1) > $page">
- <span class="ctrl">
- Ctrl →
- </span>
- </xsl:if> -->
- <xsl:if test="$total > $limit and $n > $i">
- <!-- Определяем адрес ссылки -->
- <xsl:variable name="number_link">
- <xsl:choose>
- <!-- Если не нулевой уровень -->
- <xsl:when test="$i != 0">&<xsl:value-of select="$prefix"/>=<xsl:value-of select="$i + 1"/></xsl:when>
- <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- Ставим ссылку на страницу-->
- <xsl:if test="$i != $page">
- <!-- Выводим ссылку на первую страницу -->
- <!-- <xsl:if test="$page - $pre_count_page > 0 and $i = 0">
- <a href="./?text={/site/queryencode}" class="page_link" style="text-decoration: none;">←</a>
- </xsl:if> -->
- <xsl:choose>
- <xsl:when test="$i >= ($page - $pre_count_page) and ($page + $post_count_page) >= $i">
- <!-- Выводим ссылки на видимые страницы -->
- <li><a href="./?text={/site/queryencode}{$number_link}{$filter}"><xsl:value-of select="$i + 1"/></a></li>
- </xsl:when>
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- <!-- Выводим ссылку на последнюю страницу -->
- <xsl:if test="$i+1 >= $n and $n > ($page + 1 + $post_count_page)">
- <xsl:choose>
- <xsl:when test="$n > round($n)">
- <!-- Выводим ссылку на последнюю страницу -->
- <!-- <a href="./?text={/site/queryencode}&{$prefix}={round($n+1)}" class="page_link" style="text-decoration: none;">→</a> -->
- </xsl:when>
- <xsl:otherwise>
- <!-- <a href="./?text={/site/queryencode}&{$prefix}={round($n)}" class="page_link" style="text-decoration: none;">→</a> -->
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:if>
- <!-- Ссылка на предыдущую страницу для Ctrl + влево -->
- <xsl:if test="$page != 0 and $i = $page">
- <xsl:variable name="prev_number_link">
- <xsl:choose>
- <!-- Если не нулевой уровень -->
- <xsl:when test="($page) != 0">&<xsl:value-of select="$prefix"/>=<xsl:value-of select="$i"/></xsl:when>
- <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- <a href="./?text={/site/queryencode}{$prev_number_link}" id="id_prev"></a> -->
- </xsl:if>
- <!-- Ссылка на следующую страницу для Ctrl + вправо -->
- <xsl:if test="($n - 1) > $page and $i = $page">
- <!-- <a href="./?text={/site/queryencode}&{$prefix}={$page+2}" id="id_next"></a> -->
- </xsl:if>
- <!-- Не ставим ссылку на страницу-->
- <xsl:if test="$i = $page">
- <!-- <span class="current">
- <xsl:value-of select="$i+1"/>
- </span> -->
- <li class="active"><span><xsl:value-of select="$i+1"/></span></li>
- </xsl:if>
- <!-- Рекурсивный вызов шаблона. НЕОБХОДИМО ПЕРЕДАВАТЬ ВСЕ НЕОБХОДИМЫЕ ПАРАМЕТРЫ! -->
- <xsl:call-template name="for">
- <xsl:with-param name="i" select="$i + 1"/>
- <xsl:with-param name="prefix" select="$prefix"/>
- <xsl:with-param name="limit" select="$limit"/>
- <xsl:with-param name="page" select="$page"/>
- <xsl:with-param name="total" select="$total"/>
- <xsl:with-param name="visible_pages" select="$visible_pages"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
- </xsl:stylesheet>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement