XSL шаблон поиска

#
XSL шаблон поиска
Добрый день. Есть у кого нибудь xsl шаблон поиска с выводом карточки товара? Пробовал использовать шаблон из поиска для халявы от kotoff. Карточка товара выводится, но выглядит это так. Заранее спасибо.        
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:hostcms="http://www.hostcms.ru/"
   exclude-result-prefixes="hostcms">
   <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:variable name="n" select="number(3)"/>

   <xsl:template match="/shop">

      <!-- Получаем ID родительской группы и записываем в переменную $group -->
      <xsl:variable name="group" select="group"/>

      <h1>Поиск по товарам
         <xsl:if test="search_text and search_text != ''">
            <xsl:text> - </xsl:text>
            <xsl:value-of disable-output-escaping="yes" select="search_text"/>
         </xsl:if>
      </h1>

      <xsl:variable name="count">1</xsl:variable>

      <xsl:if test="search_error and search_error != ''">
         <div id="error">
            <xsl:value-of disable-output-escaping="yes" select="search_error"/>
         </div>
      </xsl:if>

      <xsl:if test="count(shop_item) = 0 and (not(search_error) or search_error = '')">
         <div id="error">По вашему запросу ничего не найдено.</div>
      </xsl:if>


      <xsl:if test="count(shop_item) &gt; 0 or /shop/filter = 1">
         <!-- дополнение пути для action, если выбрана метка -->
         <xsl:variable name="form_tag_url">
            <xsl:if test="count(tag) = 1">tag/<xsl:value-of select="tag/urlencode"/>/</xsl:if>
         </xsl:variable>

         <xsl:variable name="path">
            <xsl:choose>
               <xsl:when test="/shop//shop_group[@id=$group]/node()">
                  <xsl:value-of select="/shop//shop_group[@id=$group]/url"/>
               </xsl:when>
               <xsl:otherwise>
                  <xsl:value-of select="/shop/url"/>
               </xsl:otherwise>
            </xsl:choose>
         </xsl:variable>

         <form method="get" action="{$path}{$form_tag_url}">

            <div class="shop_block">
               <div class="shop_table">
                  <!-- Выводим товары магазина -->
                  <xsl:apply-templates select="shop_item"/>
               </div>
            </div>

            <xsl:if test="total &gt; 0 and limit &gt; 0 and total &gt; limit">

               <xsl:variable name="count_pages" select="ceiling(total div limit)"/>

               <xsl:variable name="visible_pages" select="5"/>

               <xsl:variable name="real_visible_pages">
                  <xsl:choose>
                     <xsl:when test="$count_pages &lt; $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)) &lt; 0">
                        <xsl:value-of select="page"/>
                     </xsl:when>
                     <xsl:when test="($count_pages - page - 1) &lt; floor($real_visible_pages div 2)">
                        <xsl:value-of select="$real_visible_pages - ($count_pages - page - 1) - 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 &gt; page - (floor($real_visible_pages div 2) - 1)">
                        <xsl:value-of select="$real_visible_pages - page - 1"/>
                     </xsl:when>
                     <xsl:when test="($count_pages - page - 1) &lt; 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 &gt; 0">
                        <xsl:value-of select="page - $pre_count_page"/>
                     </xsl:when>
                     <xsl:otherwise>0</xsl:otherwise>
                  </xsl:choose>
               </xsl:variable>

               <p>
                  <xsl:call-template name="for">
                     <xsl:with-param name="limit" select="limit"/>
                     <xsl:with-param name="page" select="page"/>
                     <xsl:with-param name="items_count" select="total"/>
                     <xsl:with-param name="i" select="$i"/>
                     <xsl:with-param name="post_count_page" select="$post_count_page"/>
                     <xsl:with-param name="pre_count_page" select="$pre_count_page"/>
                     <xsl:with-param name="visible_pages" select="$real_visible_pages"/>
                  </xsl:call-template>
               </p>
               <div style="clear: both"></div>
            </xsl:if>
         </form>
      </xsl:if>
   </xsl:template>

   <!-- Шаблон для товара -->
   <xsl:template match="shop_item">
      <div class="shop_item">
         <div class="shop_table_item">
            <div class="image_row">
               <div class="image_cell">
                  <a href="{url}">
                     <xsl:choose>
                        <xsl:when test="image_small != ''">
                           <img src="{dir}{image_small}" alt="{name}" title="{name}"/>
                        </xsl:when>
                        <xsl:otherwise>
                           <img src="/images/no-image.png" alt="{name}" title="{name}"/>
                        </xsl:otherwise>
                     </xsl:choose>
                  </a>
               </div>
            </div>
            <div class="description_row">
               <div class="description_sell">
                  <p>
                     <a href="{url}" title="{name}" hostcms:id="{@id}" hostcms:field="name" hostcms:entity="shop_item">
                        <xsl:value-of disable-output-escaping="yes" select="name"/>
                     </a>
                  </p>
                  <div class="price">
                     <xsl:value-of select="format-number(price, '### ##0,00', 'my')"/>
                     <xsl:text> </xsl:text>
                     <xsl:value-of select="currency"/>
                     <xsl:text> </xsl:text>
                     <!-- Ссылку на добавление в корзины выводим, если:
                     type = 0 - простой тип товара
                     type = 1 - электронный товар, при этом остаток на складе больше 0 или -1,
                     что означает неограниченное количество -->
                     <xsl:if test="type = 0 or (type = 1 and (digitals &gt; 0 or digitals = -1))">
                        <a href="{/shop/url}cart/?add={@id}" onclick="return $.addIntoCart('{/shop/url}cart/', {@id}, 1)">
                           <img src="/images/add_to_cart.gif" alt="В корзину"/>
                        </a>
                     </xsl:if>
                  </div>
               </div>
            </div>
         </div>
      </div>

      <xsl:if test="position() mod 3 = 0 and position() != last()">
         <span class="table_row"></span>
      </xsl:if>
   </xsl:template>

   <!-- Цикл для вывода строк ссылок -->
   <xsl:template name="for">

      <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="items_count"/>
      <xsl:param name="visible_pages"/>

      <xsl:variable name="n" select="ceiling($items_count 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 &gt; 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:variable name="filter">
         <xsl:if test="search_text_urlencoded != ''">?text=<xsl:value-of select="search_text_urlencoded"/>&amp;group_id=<xsl:value-of select="search_group_id"/></xsl:if>
      </xsl:variable>

      <xsl:if test="$items_count &gt; $limit and ($page + $post_count_page + 1) &gt; $i">
         <!-- Заносим в переменную $group идентификатор текущей группы -->
         <xsl:variable name="group" select="/shop/group"/>

         <!-- Путь для тэга -->
         <xsl:variable name="tag_path">
            <xsl:if test="count(/shop/tag) != 0">tag/<xsl:value-of select="/shop/tag/urlencode"/>/</xsl:if>
         </xsl:variable>

         <!-- Путь для сравнения товара -->
         <xsl:variable name="shop_producer_path">
            <xsl:if test="count(/shop/shop_producer)">producer-<xsl:value-of select="/shop/shop_producer/@id"/>/</xsl:if>
         </xsl:variable>

         <!-- Определяем группу для формирования адреса ссылки -->
         <xsl:variable name="group_link">
            <xsl:value-of select="/shop/url"/>
            <xsl:text>search/</xsl:text>
         </xsl:variable>

         <!-- Определяем адрес ссылки -->
         <xsl:variable name="number_link">
            <xsl:if test="$i != 0">page-<xsl:value-of select="$i + 1"/>/</xsl:if>
         </xsl:variable>



         <!-- Выводим ссылку на первую страницу -->
         <xsl:if test="$page - $pre_count_page &gt; 0 and $i = $start_page">
            <a href="{$group_link}{$tag_path}{$shop_producer_path}{$filter}" class="page_link" style="text-decoration: none;">←</a>
         </xsl:if>

         <!-- Ставим ссылку на страницу-->
         <xsl:if test="$i != $page">
            <xsl:if test="($page - $pre_count_page) &lt;= $i and $i &lt; $n">
               <!-- Выводим ссылки на видимые страницы -->
               <a href="{$group_link}{$number_link}{$tag_path}{$shop_producer_path}{$filter}" class="page_link">
                  <xsl:value-of select="$i + 1"/>
               </a>
            </xsl:if>

            <!-- Выводим ссылку на последнюю страницу -->
            <xsl:if test="$i+1 &gt;= ($page + $post_count_page + 1) and $n &gt; ($page + 1 + $post_count_page)">
               <!-- Выводим ссылку на последнюю страницу -->
               <a href="{$group_link}page-{$n}/{$tag_path}{$shop_producer_path}{$filter}" 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:if test="($page) != 0">page-<xsl:value-of select="$i"/>/</xsl:if>
            </xsl:variable>
            <a href="{$group_link}{$prev_number_link}{$tag_path}{$shop_producer_path}{$filter}" id="id_prev"></a>
         </xsl:if>

         <!-- Ссылка на следующую страницу для Ctrl + вправо -->
         <xsl:if test="($n - 1) &gt; $page and $i = $page">
            <a href="{$group_link}page-{$page+2}/{$tag_path}{$shop_producer_path}{$filter}" 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">
            <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="items_count" select="$items_count"/>
            <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:stylesheet>



#
Re: XSL шаблон поиска
Очень нужно, буду очень благодарен!
Модератор
#
Re: XSL шаблон поиска
у Вас в самом начале применяется шаблон к /shop, а там то /site на самом деле. Ну и дальше пошло-поехало. см. http://www.hostcms.ru/documentation/introduction/top-panel/xml/
#
Re: XSL шаблон поиска
Нашел еще один пример-шаблон. Он тоже не работает((
<?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="/">
<xsl:apply-templates select="/site"/>
</xsl:template>
<xsl:template match="/site">
<!-- Форма поиска -->
<form method=  "get" action="/search/">
<input id=  "search_text" type=  "text" size=  "80" name=  "text"
value="{query}" maxlength=  "200" class=  "input_buttom_search"/>
<input type=  "submit" class=  "input_buttom_search_button" value=  "Искать"/>
</form>
<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">
<div class="shop_block">
<div class="shop_table">
<ol  start="{(page) * limit + 1}">
<xsl:apply-templates select=  "search_page">
</xsl:apply-templates>
</ol>
</div>
</div>
<!-- Строка ссылок на другие страницы результата поиска -->
<p>
<xsl:variable name=  "count_pages" select=  "ceiling  (total div limit)"/>
<xsl:variable name=  "visible_pages" select=  "5"/>
<xsl:variable name=  "real_visible_pages"><xsl:choose>
<xsl:when test="$count_pages &lt; $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)) &lt; 0">
<xsl:value-of select=  "page"/>
</xsl:when>
<xsl:when test="  ($count_pages —  (page) — 1) &lt; floor  ($real_visible_pages div 2)">
<xsl:value-of select="$real_visible_pages —  ($count_pages —  (page) — 1) — 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 &gt;  (page) —  (floor  ($real_visible_pages div 2) — 1)">
<xsl:value-of select="$real_visible_pages —  (page) — 1"/>
</xsl:when>
<xsl:when test="  ($count_pages —  (page) — 1) &lt; 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 &gt; 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">
<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=  "i" select="$i"/>
<xsl:with-param name=  "post_count_page" select="$post_count_page"/>
<xsl:with-param name=  "pre_count_page" select="$pre_count_page"/>
<xsl:with-param name=  "visible_pages" select="$real_visible_pages"/>
</xsl:call-template>
<div style=  "clear: both"></div>
</p>
</xsl:if>
</xsl:if>
<xsl:if test=  "query = ''">
<p>Введите поисковой запрос.</p>
</xsl:if>
</xsl:template>
<xsl:template match=  "search_page">
<xsl:choose>
<!-- Если магазин  (module = 3) и тип элемента товары  (module_value_type = 2) -->
<xsl:when test=  "module = 3 and module_value_type = 2">
<xsl:apply-templates select=  "shop_item" mode=  "shop" />
</xsl:when>
<xsl:otherwise>
<div class=  "shop-search_pages">
<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"/>
</div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- Шаблон для товара -->
<xsl:template match=  "shop_item" mode=  "shop" >
<div class=  "shop_item">
<div class=  "shop_table_item">
<div class=  "image_row">
<div class=  "image_cell">
<a href="{url}">
<xsl:choose>
<xsl:when test=  "image_small! = ''">
<img src="{dir}{image_small}" alt="{name}" title="{name}"/>
</xsl:when>
<xsl:otherwise>
<img src="/images/no-image.png" alt="{name}" title="{name}"/>
</xsl:otherwise>
</xsl:choose>
</a>
</div>
</div>
<div class=  "description_row">
<div class=  "description_sell">
<div class=  "name">
<xsl:value-of disable-output-escaping=  "yes" select=  "name"/>
</div>
<div class=  "price">
<!-- Цена товара -->
<xsl:choose>
<xsl:when test=  "price! = 0">
<span><xsl:value-of select=  "format-number  (price, '### ##0', 'my')"/>
<xsl:text> </xsl:text><xsl:value-of select=  "currency"/>
<xsl:text> </xsl:text></span>
</xsl:when>
<!-- Если цена со скидкой — выводим ее -->
<xsl:when test=  "price_tax! = price">
<span class=  "oldPrice">
<xsl:value-of select=  "format-number  (price_tax, '### ##0', 'my')"/>
<xsl:text> </xsl:text><xsl:value-of select=  "currency" />
</span><xsl:text> </xsl:text></xsl:when>
<xsl:otherwise><span>под заказ</span></xsl:otherwise>
</xsl:choose>
</div>
</div>
</div>
</div>
</div>
<xsl:if test=  "position  () mod 3 = 0 and position  ()! = last  ()">
<div class=  "clear" style=  "height:16px;"></div>
</xsl:if>
</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) &gt; $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) &gt; $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">
<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=  "url" select="/site/url"/>
<xsl:variable name=  "n" select="$total div $limit"/>
<!-- Считаем количество выводимых ссылок перед текущим элементом -->
<xsl:variable name=  "pre_count_page">
<xsl:choose>
<xsl:when test="$page &gt;  ($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 &gt; $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: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 &gt; $limit and $n &gt; $i">
<!-- Определяем адрес ссылки -->
<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:if test="$i! = $page">
<!-- Выводим ссылку на первую страницу -->
<xsl:if test="$page — $pre_count_page &gt; 0 and $i = 0">
<a href="{$url}?text={/site/queryencode}"
class=  "page_link" style=  "text-decoration: none;">←</a>
</xsl:if>
<xsl:choose>
<xsl:when test="$i &gt;=  ($page — $pre_count_page)
and  ($page + $post_count_page) &gt;= $i">
<!-- Выводим ссылки на видимые страницы -->
<a href="{$url}{$number_link}?text={/site/queryencode}" class=  "page_link">
<xsl:value-of select="$i + 1"/>
</a>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
<!-- Выводим ссылку на последнюю страницу -->
<xsl:if test="$i+1 &gt;= $n and $n &gt;  ($page + 1 + $post_count_page)">
<xsl:choose>
<xsl:when test="$n &gt; round  ($n)">
<!-- Выводим ссылку на последнюю страницу -->
<a href="{$url}page-{round  ($n+1)}/?text={/site/queryencode}"
class=  "page_link" style=  "text-decoration: none;">--></a>
</xsl:when>
<xsl:otherwise>
<a href="/page-{round  ($n)}/?text={/site/queryencode}"
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">page-<xsl:value-of select="$i"/>/</xsl:when>
<!-- Иначе если нулевой уровень — просто ссылка на страницу со списком элементов -->
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<a href="{$url}{$prev_number_link}?text={/site/queryencode}" id=  "id_prev"></a>
</xsl:if>
<!-- Ссылка на следующую страницу для Ctrl + вправо -->
<xsl:if test="  ($n — 1) > $page and $i = $page">
<a href="{$url}page-{$page+2}/?text={/site/queryencode}" 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">
<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: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:stylesheet>
Модератор
#
Re: XSL шаблон поиска
newuser__,
тот поиск совсем другой поиск, в данном случае Вам нужно все-же пользоваться стандартным шаблоном вывода товаров, совсем немного доработав его.
Специально для Вас дополнил информацию примером: http://www.hostcms.ru/documentation/modules/search/xml/
#
Re: XSL шаблон поиска
HostCMS,
Спасибо! Работает!

P.S. А еще не подскажите, когда найдено 0 страниц. То выскакивает ошибка
Предупреждение: XSLTProcessor::transformToDoc(): runtime error: file /home/aqq15171/public_html/domen.ru/ line 362 element value-of в файле /home/aqq15171/public_html/domen.ru/modules/xsl/processor/xslt.php (строка 53)

Как исправить?
Модератор
#
Re: XSL шаблон поиска
а что у Вас в 362 строке XSL-шаблона?
#
Re: XSL шаблон поиска
HostCMS,
Разобрался уже, но все равно спасибо!
Авторизация