Выдано 136145 лицензий

Фильтр на главной странице по всем товарам интернет магазина

Фильтр на главной странице по всем товарам интернет магазина
#
suba
140
День добрый, вопрос, у меня на сайте реализован интернет магазин с фильтром по дополнительным свойствам    www.nedv.mcdir.ru/shop/videokamery/   , все работает прекрасно и я очень этому рад,  но я хочу продублировать его на главной страничке в блоке поиск, тоесть создать нечто параметрического поиска, как тут слева внизу  www.atlasreal.ru так вот не могу никак вызвать его из магазина на главную страничку, скорее всего просто не знаю.
Поэтому прошу вас подсказать решение...
Делаю то благодаря чему, несмотря ни на что
Re: Фильтр на главной странице по всем товарам интернет магазина
#
hostcms
Модератор
16636
suba,
Делаете просто показ магазина методом ShowShop(), при этом модифицируете XSL-шаблон, исключая из него все лишнее.
Re: Фильтр на главной странице по всем товарам интернет магазина
#
suba
140
пробовал но мне выплевывает он список групп интернет магазина...
   <?php
      $Shop = & singleton('shop');
      $Shop->showshop(1, 'Фильтр');

      ?>
пробую так...
Делаю то благодаря чему, несмотря ни на что
Re: Фильтр на главной странице по всем товарам интернет магазина
#
hostcms
Модератор
16636
suba,
HostCMS писал(а):
при этом модифицируете XSL-шаблон, исключая из него все лишнее.
Re: Фильтр на главной странице по всем товарам интернет магазина
#
suba
140
убрал все ненужное, теперь пустота, мне кажется фильтр просто напросто не вызывается...
Делаю то благодаря чему, несмотря ни на что
Re: Фильтр на главной странице по всем товарам интернет магазина
#
suba
140
<?php
      $Shop = & singleton('shop');
      $Shop->showshop(1, 'Фильтр');

      ?>
таким вод способом вывожу, но ничего не происходит... уповаю на тех поддержку...
поставил такой шаблон,
<?xml version="1.0" encoding="windows-1251"?>
<!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="Windows-1251" 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="/shop"/>
   </xsl:template>
   
   <!-- Шаблон для магазина -->
   <xsl:template match="/shop">
      
            
            <!-- Отображение подгрупп данной группы, только если подгруппы есть и не идет фильтра по меткам -->
      
            
            <xsl:if test="count(item) &gt; 0  or apply_filter = 1"><br/>
               <form method="get" action="{/shop/path}{//group[@id=$parent_group_id]/fullpath}">
                  <div class="green_grad">
                     
                     <div class="tl" ></div>
                     <div class="tr" ></div>
                     <div class="bl" ></div>
                     <div class="br" ></div>
                     
                     <xsl:if test="count(properties_for_group/property[property_show_kind != 0 and (shop_list_of_properties_type = 0 or shop_list_of_properties_type = 2 or shop_list_of_properties_type = 7)]) &gt; 0">
                        <table cellpadding="10px" cellspacing="0">
                           <tr valign="top">
                              <xsl:apply-templates select="properties_for_group/property[property_show_kind != 0 and (shop_list_of_properties_type = 0 or shop_list_of_properties_type = 2 or shop_list_of_properties_type = 7)]"/>
                              <td>   Цена от:&#xA0; <br/>
                                 <input name="price_from" size="5" type="text">
                                    <xsl:if test="/shop/price_from != 0">
                                       <xsl:attribute name="value">
                                          <xsl:value-of disable-output-escaping="yes" select="/shop/price_from"/>
                                       </xsl:attribute>
                                    </xsl:if>
                                 </input>&#xA0;
                                 
                                 до:&#xA0;
                                 <input name="price_to" size="5" type="text">
                                    <xsl:if test="/shop/price_to != 0">
                                       <xsl:attribute name="value">
                                          <xsl:value-of disable-output-escaping="yes" select="/shop/price_to"/>
                                       </xsl:attribute>
                                    </xsl:if>
                           </input>&#xA0;   </td>   <td><br/><input name="apply_filter" value="Применить" type="submit"/>   </td>
                           </tr>
                        </table>
                        <!-- Если есть доступные производители -->
                        
                        
                        
                     </xsl:if>
                     
                     
                  </div>
                  
                  
                  <!-- Сортировка товаров -->
                  <div class="green_grad">
                     
                     <div class="tl" ></div>
                     <div class="tr" ></div>
                     <div class="bl" ></div>
                     <div class="br" ></div>
                     <!-- Определяем ссылку с параметрами фильтра -->
                     <xsl:variable name="filter">
                        <xsl:if test="/shop/apply_filter/node()">?action=apply_filter&amp;producer_id=<xsl:value-of select="/shop/producer_id"/>&amp;saller_id=<xsl:value-of select="/shop/saller_id"/>&amp;price_from=<xsl:value-of select="/shop/price_from"/>&amp;price_to=<xsl:value-of select="/shop/price_to"/>&amp;on_page=<xsl:value-of select="/shop/on_page"/>
                           <xsl:if test="/shop/property_xml/node()">
                              <!-- GET для доп. свойств -->
                              <xsl:value-of select="/shop/property_xml"/>
                           </xsl:if>
                        </xsl:if>
                     </xsl:variable>
                     
                     <!-- Определяем первый символ вопрос или амперсанд -->
                     <xsl:variable name="first_symbol">
                        <xsl:choose>
                           <xsl:when test="$filter != ''">&amp;</xsl:when>
                           <xsl:otherwise>?</xsl:otherwise>
                        </xsl:choose>
                     </xsl:variable>
                     
                     Сортировать по алфавиту
                     
                     <xsl:choose>
                        <xsl:when test="/shop/sort_by_field = 1 and /shop/order_direction = 'ASC'">
                           <div class="arrow_up"></div>
                           <img src="/hostcmsfiles/images/arrow_up.png" style="filter: alpha(opacity=0); margin: 0px 0px -4px 0px" alt="по возрастанию"/>
                        </xsl:when>
                        <xsl:otherwise>
                           <div class="arrow_up_gray"></div>
                           <a href="{$filter}{$first_symbol}sort_by_field=1&amp;order_direction=1" class="without_decor">
                              <img src="/hostcmsfiles/images/arrow_up_gray.png" style="filter: alpha(opacity=0); margin: 0px 0px -4px 0px" alt="по возрастанию"/>
                           </a>
                        </xsl:otherwise>
                     </xsl:choose>
                     
                     <xsl:choose>
                        <xsl:when test="/shop/sort_by_field = 1 and /shop/order_direction = 'DESC'">
                           <div class="arrow_down"></div>
                           <img src="/hostcmsfiles/images/arrow_down.png" style="filter: alpha(opacity=0); margin: 0px 0px -4px 0px" alt="по убыванию"/>
                        </xsl:when>
                        <xsl:otherwise>
                           <div class="arrow_down_gray"></div>
                           <a href="{$filter}{$first_symbol}sort_by_field=1&amp;order_direction=2" class="without_decor">
                              <img src="/hostcmsfiles/images/arrow_down_gray.png" style="filter: alpha(opacity=0); margin: 0px 0px -4px 0px" alt="по убыванию"/>
                           </a>
                        </xsl:otherwise>
                     </xsl:choose>,&#xA0;по цене
                     
                     <xsl:choose>
                        <xsl:when test="/shop/sort_by_field = 2 and /shop/order_direction = 'ASC'">
                           <div class="arrow_up"></div>
                           <img src="/hostcmsfiles/images/arrow_up.png" style="filter: alpha(opacity=0); margin: 0px 0px -4px 0px" alt="по возрастанию"/>
                        </xsl:when>
                        <xsl:otherwise>
                           <div class="arrow_up_gray"></div>
                           <a href="{$filter}{$first_symbol}sort_by_field=2&amp;order_direction=1" class="without_decor">
                              <img src="/hostcmsfiles/images/arrow_up_gray.png" style="filter: alpha(opacity=0); margin: 0px 0px -4px 0px" alt="по возрастанию"/></a>
                        </xsl:otherwise>
                     </xsl:choose>
                     
                     <xsl:choose>
                        <xsl:when test="/shop/sort_by_field = 2 and /shop/order_direction = 'DESC'">
                           <div class="arrow_down"></div>
                           <img src="/hostcmsfiles/images/arrow_down.png" style="filter: alpha(opacity=0); margin: 0px 0px -4px 0px" alt="по убыванию"/>
                        </xsl:when>
                        <xsl:otherwise>
                           <div class="arrow_down_gray"></div>
                           <a href="{$filter}{$first_symbol}sort_by_field=2&amp;order_direction=2" class="without_decor">
                              <img src="/hostcmsfiles/images/arrow_down_gray.png" style="filter: alpha(opacity=0); margin: 0px 0px -4px 0px" alt="по убыванию"/>
                           </a>
                           
                        </xsl:otherwise>
                     </xsl:choose>
                  </div>
                  
                  <!-- Определяем ссылку с параметрами фильтра -->
                  <xsl:variable name="filter">
                     <xsl:choose>
                        <xsl:when test="/shop/apply_filter/node()">?action=apply_filter&amp;producer_id=<xsl:value-of select="/shop/producer_id"/>&amp;saller_id=<xsl:value-of select="/shop/saller_id"/>&amp;price_from=<xsl:value-of select="/shop/price_from"/>&amp;price_to=<xsl:value-of select="/shop/price_to"/>&amp;on_page=<xsl:value-of select="/shop/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 != ''">&amp;</xsl:when>
                        <xsl:otherwise>?</xsl:otherwise>
                     </xsl:choose>
                  </xsl:variable>
                  
                  <xsl:apply-templates select="item" />
                  
                  
                  <xsl:if test="count(/shop/group[@id = /shop/@current_group_id]/propertys/property) > 0">
                     <div style="margin: 10px 0px;">
                        <h2>Атрибуты группы товаров</h2>
                        
                        <xsl:if test="count(property[@dir_id = 0])">
                           <table border="0">
                              <xsl:apply-templates select="property[@dir_id = 0]"/>
                           </table>
                        </xsl:if>
                        
                        <xsl:apply-templates select="/shop/properties_groups_dir"/>
                     </div>
                  </xsl:if>
                  
                  
                  <xsl:if test="count_items &gt; 0 and items_on_page &gt; 0">
                     
                     <xsl:variable name="count_pages" select="ceiling(count_items div items_on_page)"/>
                     
                     <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="current_page  - (floor($real_visible_pages div 2)) &lt; 0">
                              <xsl:value-of select="current_page"/>
                           </xsl:when>
                           <xsl:when test="($count_pages  - current_page - 1) &lt; floor($real_visible_pages div 2)">
                              <xsl:value-of select="$real_visible_pages - ($count_pages  - current_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; current_page - (floor($real_visible_pages div 2) - 1)">
                              <xsl:value-of select="$real_visible_pages - current_page - 1"/>
                           </xsl:when>
                           <xsl:when test="($count_pages  - current_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="current_page + 1 = $count_pages"><xsl:value-of select="current_page - $real_visible_pages + 1"/></xsl:when>
                           <xsl:when test="current_page - $pre_count_page &gt; 0"><xsl:value-of select="current_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="items_on_page" select="items_on_page"/>
                           <xsl:with-param name="current_page" select="current_page"/>
                           <xsl:with-param name="count_items" select="count_items"/>
                           <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="properties_groups_dir">
            
         <p><b><xsl:value-of select="shop_properties_groups_dir_name"/></b></p>
            
            <xsl:variable name="dir_id" select="@id"/>
            
            <xsl:if test="count(/shop/group[@id = /shop/@current_group_id]/propertys/property)">
               <table border="0">
                  <xsl:apply-templates select="/shop/group[@id = /shop/@current_group_id]/propertys/property[@parent_id = $dir_id]"/>
               </table>
            </xsl:if>
            
            <xsl:if test="count(properties_groups_dir)">
               <blockquote>
                  <xsl:apply-templates select="properties_groups_dir"/>
               </blockquote>
            </xsl:if>
         </xsl:template>
         <!-- Вывод строки со значением свойства -->
         <xsl:template match="property">
            
            
            <xsl:choose>
               <xsl:when test="type = '1'"><div class="group_gallery">
                     <div class="t"></div>
                     <div class="r"></div>
                     <div class="b"></div>
                     <div class="l"></div>
               <a rel="lightbox[set1]"  href="{file_path}"><img src="{small_image/file_path}"/></a></div></xsl:when>
               <xsl:otherwise>
                  <tr>
                  <td width="50%" align="left"><b><xsl:value-of disable-output-escaping="yes" select="name"/>:</b>&#xA0;</td>
                     <td  width="50%" align="left"><xsl:value-of disable-output-escaping="yes" select="value"/></td>
                  </tr>
               </xsl:otherwise>
            </xsl:choose>
            
         </xsl:template>
         
         <!-- Шаблон для фильтра производителей -->
         
         
         <!-- Шаблон для фильтра продавцов -->
         
         
         <!-- Шаблон для фильтра по дополнительным свойствам -->
         <xsl:template match="properties_for_group/property">
            <xsl:variable name="nodename">property_id_<xsl:value-of select="@id"/></xsl:variable>
            
            
            <xsl:variable name="nodename_from">property_id_<xsl:value-of select="@id"/>_from</xsl:variable>
            <xsl:variable name="nodename_to">property_id_<xsl:value-of select="@id"/>_to</xsl:variable>
            
            
            <td>
               <xsl:value-of disable-output-escaping="yes" select="property_name"/>&#xA0;
               <xsl:if test="property_show_kind = 1">
                  <!-- Отображаем поле ввода -->
                  <br/>
                  <input type="text" name="property_id_{@id}">
                     <xsl:if test="/shop/*[name()=$nodename] != ''">
                        <xsl:attribute name="value">
                           <xsl:value-of select="/shop/*[name()=$nodename]"/>
                        </xsl:attribute>
                     </xsl:if>
                  </input>
               </xsl:if>
               <xsl:if test="property_show_kind = 2">
                  <!-- Отображаем список -->
                  <br/>
                  <select name="property_id_{@id}">
                     <option value="0">...</option>-->
                     <xsl:apply-templates select="list_items/list_item"/>
                  </select>
               </xsl:if>
               <xsl:if test="property_show_kind = 3">
                  <!-- Отображаем переключатели -->
                  <br/>
                  <input type="radio" name="property_id_{@id}" value="0" id="id_prop_radio_{@id}_0"></input>
                  <label for="id_prop_radio_{@id}_0">Любой вариант</label>
                  <xsl:apply-templates select="list_items/list_item"/>
               </xsl:if>
               
               <xsl:if test=" property_show_kind = 4">
                  <!-- Отображаем флажки -->
                  <xsl:apply-templates select="list_items/list_item"/>
               </xsl:if>
               
               <xsl:if test=" property_show_kind = 5">
                  <!-- Отображаем флажок -->
                  <br/>
                  <input type="checkbox" name="property_id_{@id}" id="property_id_{@id}" style="padding-top:4px">
                     <xsl:if test="/shop/*[name()=$nodename] != ''">
                        <xsl:attribute name="checked">
                           <xsl:value-of select="/shop/*[name()=$nodename]"/>
                        </xsl:attribute>
                     </xsl:if>
                  </input>
                  <label for="property_id_{@id}">Да</label>
               </xsl:if>
               
               
               <xsl:if test=" property_show_kind = 6">
                  <!-- Отображение полей "От.. До.." -->
                  <br/>
                  от: <input type="text" name="property_id_{@id}_from" size="5" value="{/shop/*[name()=$nodename_from]}"/> до: <input type="text" name="property_id_{@id}_to" size="5" value="{/shop/*[name()=$nodename_to]}"/>
               </xsl:if>
               <xsl:if test="property_show_kind = 7">
                  <!-- Отображаем список  с множественным выбором-->
                  <br/>
                  <select name="property_id_{@id}[]" multiple="">
                     <xsl:apply-templates select="list_items/list_item"/>
                  </select>
               </xsl:if>
            </td>
            <xsl:if test="position() mod 5 = 0">
               <xsl:text disable-output-escaping="yes">
                  &lt;/tr&gt;
                  &lt;tr valign="top"&gt;
               </xsl:text>
            </xsl:if>
         </xsl:template>
         
         <xsl:template match="list_items/list_item">
            <xsl:if test="../../property_show_kind = 2">
               <!-- Отображаем список -->
               <xsl:variable name="nodename">property_id_<xsl:value-of select="../../@id"/></xsl:variable>
               <option value="{@id}">
                  <xsl:if test="/shop/*[name()=$nodename] = @id">
                     <xsl:attribute name="selected">
                     </xsl:attribute>
                  </xsl:if>
                  <xsl:value-of disable-output-escaping="yes" select="list_item_value"/>
               </option>
            </xsl:if>
            <xsl:if test="../../property_show_kind = 3">
               <!-- Отображаем переключатели -->
               <xsl:variable name="nodename">property_id_<xsl:value-of select="../../@id"/></xsl:variable>
               <br/>
               <input type="radio" name="property_id_{../../@id}" value="{@id}" id="id_property_id_{../../@id}_{@id}">
                  <xsl:if test="/shop/*[name()=$nodename] = @id">
                     <xsl:attribute name="checked">checked</xsl:attribute>
                  </xsl:if>
                  <label for="id_property_id_{../../@id}_{@id}">
                     <xsl:value-of disable-output-escaping="yes" select="list_item_value"/>
                  </label>
               </input>
            </xsl:if>
            <xsl:if test="../../property_show_kind = 4">
               <!-- Отображаем флажки -->
               <xsl:variable name="nodename">property_id_<xsl:value-of select="../../@id"/>_item_id_<xsl:value-of select="@id"/></xsl:variable>
               <br/>
               <input type="checkbox" name="property_id_{../../@id}_item_id_{@id}" id="id_property_id_{../../@id}_{@id}">
                  <xsl:if test="/shop/*[name()=$nodename] = @id">
                     
                     <xsl:attribute name="checked">checked</xsl:attribute>
                  </xsl:if>
                  <label for="id_property_id_{../../@id}_{@id}">
                     <xsl:value-of disable-output-escaping="yes" select="list_item_value"/>
                  </label>
               </input>
            </xsl:if>
            <xsl:if test="../../property_show_kind = 7">
               <!-- Отображаем список -->
               <xsl:variable name="nodename">property_id_<xsl:value-of select="../../@id"/></xsl:variable>
               <option value="{@id}">
                  <xsl:if test="/shop/*[name()=$nodename] = @id">
                     <xsl:attribute name="selected">
                     </xsl:attribute>
                  </xsl:if>
                  <xsl:value-of disable-output-escaping="yes" select="list_item_value"/>
               </option>
            </xsl:if>
            
         </xsl:template>
         
         <!-- Цикл с шагом 10 для select'a количества элементов на страницу -->
         <xsl:template name="for_on_page">
            <xsl:param name="i" select="0"/>
            <xsl:param name="n"/>
            
            <option value="{$i}">
               <xsl:if test="$i = /shop/on_page">
                  <xsl:attribute name="selected">
                  </xsl:attribute>
               </xsl:if>
               <xsl:value-of select="$i"/>
            </option>
            
            <xsl:if test="$n &gt; $i">
               <!-- Рекурсивный вызов шаблона -->
               <xsl:call-template name="for_on_page">
                  <xsl:with-param name="i" select="$i + 10"/>
                  <xsl:with-param name="n" select="$n"/>
               </xsl:call-template>
            </xsl:if>
         </xsl:template>
         
         <!-- Шаблон для групп товара -->
      
         
         <!-- Шаблон для подразделов -->
   
         
         <!-- Шаблон для товара -->
   
         
         <!-- /// Метки для товаров /// -->
         
         
         <!-- Шаблон для модификаций -->
         
         
         <!-- Шаблон для скидки -->
      
         
         <!-- Цикл для вывода строк ссылок -->
         <xsl:template name="for">
            
            <xsl:param name="items_on_page"/>
            <xsl:param name="current_page"/>
            <xsl:param name="pre_count_page"/>
            <xsl:param name="post_count_page"/>
            <xsl:param name="i" select="0"/>
            <xsl:param name="count_items"/>
            <xsl:param name="visible_pages"/>
            
            <xsl:variable name="n" select="ceiling($count_items div $items_on_page)"/>
            
            <xsl:variable name="start_page"><xsl:choose>
                  <xsl:when test="$current_page + 1 = $n"><xsl:value-of select="$current_page - $visible_pages + 1"/></xsl:when>
                  <xsl:when test="$current_page - $pre_count_page &gt; 0"><xsl:value-of select="$current_page - $pre_count_page"/></xsl:when>
                  <xsl:otherwise>0</xsl:otherwise>
            </xsl:choose></xsl:variable>
            
            <xsl:if test="$i = $start_page and $current_page != 0">
               <span class="ctrl">
                  &#8592; Ctrl
               </span>
            </xsl:if>
            
            <xsl:if test="$i = ($current_page + $post_count_page + 1) and $n != ($current_page+1)">
               <span class="ctrl">
                  Ctrl &#8594;
               </span>
            </xsl:if>
            
            <xsl:if test="$count_items &gt; $items_on_page and ($current_page + $post_count_page + 1) &gt; $i">
               <!-- Заносим в переменную $parent_group_id идентификатор текущей группы -->
               <xsl:variable name="parent_group_id" select="/shop/@current_group_id"/>
               
               <!-- Путь для тэга -->
               <xsl:variable name="tag_path">
                  <xsl:if test="count(/shop/selected_tags/tag) = 1">tag/<xsl:value-of select="/shop/selected_tags/tag/tag_path_name"/>/</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]/fullpath"/>
                     </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="/shop/apply_filter/node()">?action=apply_filter&amp;producer_id=<xsl:value-of select="/shop/producer_id"/>&amp;saller_id=<xsl:value-of select="/shop/saller_id"/>&amp;price_from=<xsl:value-of select="/shop/price_from"/>&amp;price_to=<xsl:value-of select="/shop/price_to"/>&amp;on_page=<xsl:value-of select="/shop/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 != ''">&amp;</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"/>sort_by_field=<xsl:value-of select="/shop/sort_by_field"/>&amp;order_direction=1</xsl:when>
                           <!-- Стрелка вниз -->
                           <xsl:otherwise>
                              <xsl:value-of select="$first_symbol"/>sort_by_field=<xsl:value-of select="/shop/sort_by_field"/>&amp;order_direction=2</xsl:otherwise>
                        </xsl:choose>
                     </xsl:when>
                     <xsl:otherwise></xsl:otherwise>
                  </xsl:choose>
               </xsl:variable>
               
               <!-- Выводим ссылку на первую страницу -->
               <xsl:if test="$current_page - $pre_count_page &gt; 0 and $i = $start_page">
                  <a href="{/shop/path}{$group_link}{$tag_path}{$filter}{$arrows}" class="page_link" style="text-decoration: none;">&#x2190;</a>
               </xsl:if>
               
               <!-- Ставим ссылку на страницу-->
               <xsl:if test="$i != $current_page">
                  <xsl:if test="($current_page - $pre_count_page) &lt;= $i and $i &lt; $n">
                     <!-- Выводим ссылки на видимые страницы -->
                     <a href="{/shop/path}{$group_link}{$tag_path}{$number_link}{$filter}{$arrows}" class="page_link">
                        <xsl:value-of select="$i + 1"/>
                     </a>
                  </xsl:if>
                  
                  <!-- Выводим ссылку на последнюю страницу -->
                  <xsl:if test="$i+1 &gt;= ($current_page + $post_count_page + 1) and $n &gt; ($current_page + 1 + $post_count_page)">
                     <!-- Выводим ссылку на последнюю страницу -->
                     <a href="{/shop/path}{$group_link}{$tag_path}page-{$n}/{$filter}{$arrows}" class="page_link" style="text-decoration: none;">&#x2192;</a>
                  </xsl:if>
               </xsl:if>
               
               <!-- Ссылка на предыдущую страницу для Ctrl + влево -->
               <xsl:if test="$current_page != 0 and $i = $current_page">
                  <xsl:variable name="prev_number_link">
                     <xsl:choose>
                        <!-- Если не нулевой уровень -->
                        <xsl:when test="($current_page - 1) != 0">page-<xsl:value-of select="$i"/>/</xsl:when>
                        <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов -->
                        <xsl:otherwise></xsl:otherwise>
                     </xsl:choose>
                  </xsl:variable>
                  
                  <a href="{/shop/path}{$group_link}{$tag_path}{$prev_number_link}{$filter}{$arrows}" id="id_prev"></a>
               </xsl:if>
               
               <!-- Ссылка на следующую страницу для Ctrl + вправо -->
               <xsl:if test="($n - 1) > $current_page and $i = $current_page">
                  <a href="{/shop/path}{$group_link}{$tag_path}page-{$current_page+2}/{$filter}{$arrows}" id="id_next"></a>
               </xsl:if>
               
               <!-- Не ставим ссылку на страницу-->
               <xsl:if test="$i = $current_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="items_on_page" select="$items_on_page"/>
                  <xsl:with-param name="current_page" select="$current_page"/>
                  <xsl:with-param name="count_items" select="$count_items"/>
                  <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 match="group" mode="goup_path">
            <xsl:param name="parent_id" select="@parent"/>
            
            <!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
            <xsl:param name="parent_group_id" select="/shop/@current_group_id"/>
            
            <xsl:apply-templates select="//group[@id=$parent_id]" mode="goup_path"/>
            
            <xsl:if test="@parent=0">
               <a href="{/shop/path}">
                  <xsl:value-of select="/shop/name"/>
               </a>
            </xsl:if>
            
            <span class="path_arrow">&#x2192;</span>
            
            <xsl:choose>
               <xsl:when test="$parent_group_id = @id">
                  <xsl:value-of disable-output-escaping="yes" select="name"/>
               </xsl:when>
               <xsl:otherwise>
                  <a href="{/shop/path}{fullpath}">
                     <xsl:value-of disable-output-escaping="yes" select="name"/>
                  </a>
               </xsl:otherwise>
            </xsl:choose>
         </xsl:template>
      </xsl:stylesheet>
Делаю то благодаря чему, несмотря ни на что
Re: Фильтр на главной странице по всем товарам интернет магазина
#
suba
140
Ау, есть тут кто?
Делаю то благодаря чему, несмотря ни на что
Re: Фильтр на главной странице по всем товарам интернет магазина
#
hostcms
Модератор
16636
suba писал(а):
таким вод способом вывожу, но ничего не происходит…

В настройках сайта установите режим вывода ошибок E_ALL и посмотрите на кучу ошибок в XSL-шаблоне!
Re: Фильтр на главной странице по всем товарам интернет магазина
#
hostcms
Модератор
16636
Фильтр:
<?xml version="1.0" encoding="windows-1251"?>
<!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="Windows-1251" 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="/shop"/>
   </xsl:template>
   
   <!-- Шаблон для магазина -->
   <xsl:template match="/shop">
      
      <!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
      <xsl:variable name="parent_group_id" select="@current_group_id"/>
            
      <xsl:variable name="count">1</xsl:variable>
      
      <xsl:if test="count(item) &gt; 0  or apply_filter = 1">
         <form method="get" action="{/shop/path}{//group[@id=$parent_group_id]/fullpath}">
            <div class="shop_block">
               <div>
                  <!-- Если есть доступные производители -->
                  <xsl:if test="count(producerslist/producer) > 0">
                     Производитель:&#xA0;
                     <select name="producer_id">
                        <option value="0">&#x2026;</option>
                        <xsl:apply-templates select="producerslist/producer"/>
                     </select>&#xA0;
                  </xsl:if>
                  
                  <!-- Если есть доступные продавцы -->
                  <xsl:if test="count(sallers/saller) > 0">
                     Продавец:&#xA0;
                     <select name="saller_id">
                        <option value="0">&#x2026;</option>
                        <xsl:apply-templates select="sallers/saller"/>
                     </select>&#xA0;
                  </xsl:if>
                  
                  Цена от:&#xA0;
                  <input name="price_from" size="5" type="text">
                     <xsl:if test="/shop/price_from != 0">
                        <xsl:attribute name="value">
                           <xsl:value-of disable-output-escaping="yes" select="/shop/price_from"/>
                        </xsl:attribute>
                     </xsl:if>
                  </input>&#xA0;
                  
                  до:&#xA0;
                  <input name="price_to" size="5" type="text">
                     <xsl:if test="/shop/price_to != 0">
                        <xsl:attribute name="value">
                           <xsl:value-of disable-output-escaping="yes" select="/shop/price_to"/>
                        </xsl:attribute>
                     </xsl:if>
                  </input>&#xA0;
                  
                  <span style="white-space: nowrap">Товаров на странице:</span>&#xA0;
                  <select name="on_page">
                     <option value="0">&#x2026;</option>
                     <xsl:call-template name="for_on_page">
                        <xsl:with-param name="i" select="10"/>
                        <xsl:with-param name="n" select="50"/>
                     </xsl:call-template>
                  </select>&#xA0;
               </div>
            
               <xsl:if test="count(properties_for_group/property[property_show_kind != 0 and (shop_list_of_properties_type = 0 or shop_list_of_properties_type = 2 or shop_list_of_properties_type = 7)]) &gt; 0">
                  <p>
                     <b>Фильтр по дополнительным свойствам товара:</b>
                  </p>
                  <table cellpadding="10px" cellspacing="0">
                     <tr valign="top">
                        <xsl:apply-templates select="properties_for_group/property[property_show_kind != 0 and (shop_list_of_properties_type = 0 or shop_list_of_properties_type = 2 or shop_list_of_properties_type = 7)]"/>
                     </tr>
                  </table>
               </xsl:if>
               <div class="nofloat" style="margin-left: 40%">
                  <div class="gray_button">
                     <div>
                        <input name="apply_filter" value="Применить" type="submit"/>
                     </div>
                  </div>
               </div>
            </div>
            
            <!-- Таблица с элементами для сравнения -->
            <xsl:if test="count(/shop/compare_items/compare_item) &gt; 0">
               <table cellpadding="5px" cellspacing="0" border="0">
                  <tr>
                     <td>
                        <input type="checkbox" onclick="SelectAllItemsByPrefix(this.checked, 'del_compare_id_')" />
                     </td>
                     <td>
                        <b>Сравниваемые элементы</b>
                     </td>
                  </tr>
                  <xsl:apply-templates select="compare_items/compare_item"/>
               </table>

               <div class="nofloat" style="height: 47px; padding: 5px 0;">
                  <div class="gray_button left">
                     <div>
                        <input name="apply_compare" value="Сравнить" type="button" onclick="javascript:location='{/shop/path}compare_items/';"/>
                     </div>
                  </div>
                  <div class="gray_button right">
                     <div>
                        <input name="delete_compare" value="Удалить" type="submit"/>
                     </div>
                  </div>
               </div>

               <!-- <input name="delete_all_compare" value="Удалить все" type="submit"/> -->
            </xsl:if>
            
            
            
            <!-- Определяем ссылку с параметрами фильтра -->
            <xsl:variable name="filter">
               <xsl:choose>
                  <xsl:when test="/shop/apply_filter/node()">?action=apply_filter&amp;producer_id=<xsl:value-of select="/shop/producer_id"/>&amp;saller_id=<xsl:value-of select="/shop/saller_id"/>&amp;price_from=<xsl:value-of select="/shop/price_from"/>&amp;price_to=<xsl:value-of select="/shop/price_to"/>&amp;on_page=<xsl:value-of select="/shop/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 != ''">&amp;</xsl:when>
                  <xsl:otherwise>?</xsl:otherwise>
               </xsl:choose>
            </xsl:variable>
            
   
            <xsl:if test="count(/shop/group[@id = /shop/@current_group_id]/propertys/property) > 0">
               <div style="margin: 10px 0px;">
                  <h2>Атрибуты группы товаров</h2>
                  
                  <xsl:if test="count(property[@dir_id = 0])">
                     <table border="0">
                        <xsl:apply-templates select="property[@dir_id = 0]"/>
                     </table>
                  </xsl:if>
                  
                  <xsl:apply-templates select="/shop/properties_groups_dir"/>
               </div>
            </xsl:if>
            
            <xsl:if test="count_items &gt; 0 and items_on_page &gt; 0">
               
               <xsl:variable name="count_pages" select="ceiling(count_items div items_on_page)"/>
               
               <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="current_page  - (floor($real_visible_pages div 2)) &lt; 0">
                        <xsl:value-of select="current_page"/>
                     </xsl:when>
                     <xsl:when test="($count_pages  - current_page - 1) &lt; floor($real_visible_pages div 2)">
                        <xsl:value-of select="$real_visible_pages - ($count_pages  - current_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; current_page - (floor($real_visible_pages div 2) - 1)">
                        <xsl:value-of select="$real_visible_pages - current_page - 1"/>
                     </xsl:when>
                     <xsl:when test="($count_pages  - current_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="current_page + 1 = $count_pages"><xsl:value-of select="current_page - $real_visible_pages + 1"/></xsl:when>
                     <xsl:when test="current_page - $pre_count_page &gt; 0"><xsl:value-of select="current_page - $pre_count_page"/></xsl:when>
                     <xsl:otherwise>0</xsl:otherwise>
               </xsl:choose></xsl:variable>
            </xsl:if>
            
         </form>
      </xsl:if>
   </xsl:template>
   
   <!-- Вывод строки со значением свойства -->
   <xsl:template match="property">
      <tr>
         <td style="padding: 5px" bgcolor="#E5DFDA">
            <b><xsl:value-of select="name"/></b>
         </td>
         <td style="padding: 5px" bgcolor="#E5DFDA">
            <xsl:choose>
               <xsl:when test="type = 1">
                  <a href="{file_path}">Скачать файл</a>
               </xsl:when>
               <xsl:when test="type = 7">
                  <xsl:choose>
                     <xsl:when test="value = 1">
                        <input type="checkbox" checked="" disabled="" />
                     </xsl:when>
                     <xsl:otherwise>
                        <input type="checkbox" disabled="" />
                     </xsl:otherwise>
                  </xsl:choose>
               </xsl:when>
               <xsl:otherwise>
                  <xsl:value-of disable-output-escaping="yes" select="value"/>
               </xsl:otherwise>
            </xsl:choose>
         </td>
      </tr>
   </xsl:template>
   
   <!-- Шаблон для фильтра производителей -->
   <xsl:template match="producerslist/producer">
      
      <xsl:param name="id_prod" select="@id"/>
         <option value="{@id}">
            <xsl:if test="@id = /shop/producer_id">
               <xsl:attribute name="selected"> </xsl:attribute>
            </xsl:if>
            <xsl:value-of disable-output-escaping="yes" select="name"/>
         </option>
   </xsl:template>
   
   <!-- Шаблон для фильтра продавцов -->
   <xsl:template match="sallers/saller">
      <option value="{@id}">
         <xsl:if test="@id = /shop/saller_id">
            <xsl:attribute name="selected">
            </xsl:attribute>
         </xsl:if>
         <xsl:value-of select="sallers_name"/>
      </option>
   </xsl:template>
   
   <!-- Шаблон для фильтра по дополнительным свойствам -->
   <xsl:template match="properties_for_group/property">
      
      <xsl:variable name="nodename">property_id_<xsl:value-of select="@id"/></xsl:variable>
      
      <xsl:variable name="nodename_from">property_id_<xsl:value-of select="@id"/>_from</xsl:variable>
      <xsl:variable name="nodename_to">property_id_<xsl:value-of select="@id"/>_to</xsl:variable>
      
      <td>
         <xsl:value-of disable-output-escaping="yes" select="property_name"/>&#xA0;
         <xsl:if test="property_show_kind = 1">
            <!-- Отображаем поле ввода -->
            <br/>
            <input type="text" name="property_id_{@id}">
               <xsl:if test="/shop/*[name()=$nodename] != ''">
                  <xsl:attribute name="value">
                     <xsl:value-of select="/shop/*[name()=$nodename]"/>
                  </xsl:attribute>
               </xsl:if>
            </input>
         </xsl:if>
         <xsl:if test="property_show_kind = 2">
            <!-- Отображаем список -->
            <br/>
            <select name="property_id_{@id}">
               <option value="0">...</option>-->
               <xsl:apply-templates select="list_items/list_item"/>
            </select>
         </xsl:if>
         <xsl:if test="property_show_kind = 3">
            <!-- Отображаем переключатели -->
            <br/>
            <input type="radio" name="property_id_{@id}" value="0" id="id_prop_radio_{@id}_0"></input>
            <label for="id_prop_radio_{@id}_0">Любой вариант</label>
            <xsl:apply-templates select="list_items/list_item"/>
         </xsl:if>
         
         <xsl:if test=" property_show_kind = 4">
            <!-- Отображаем флажки -->
            <xsl:apply-templates select="list_items/list_item"/>
         </xsl:if>
         
         <xsl:if test=" property_show_kind = 5">
            <!-- Отображаем флажок -->
            <br/>
            <input type="checkbox" name="property_id_{@id}" id="property_id_{@id}" style="padding-top:4px">
               <xsl:if test="/shop/*[name()=$nodename] != ''">
                  <xsl:attribute name="checked">
                     <xsl:value-of select="/shop/*[name()=$nodename]"/>
                  </xsl:attribute>
               </xsl:if>
            </input>
            <label for="property_id_{@id}">Да</label>
         </xsl:if>
         
         <xsl:if test=" property_show_kind = 6">
            <!-- Отображение полей "От.. До.." -->
            <br/>
            от: <input type="text" name="property_id_{@id}_from" size="5" value="{/shop/*[name()=$nodename_from]}"/> до: <input type="text" name="property_id_{@id}_to" size="5" value="{/shop/*[name()=$nodename_to]}"/>
         </xsl:if>
         
         <xsl:if test="property_show_kind = 7">
            <!-- Отображаем список  с множественным выбором-->
            <br/>
            <select name="property_id_{@id}[]" multiple="">
               <xsl:apply-templates select="list_items/list_item"/>
            </select>
         </xsl:if>
      </td>
      <xsl:if test="position() mod 6 = 0">
         <xsl:text disable-output-escaping="yes">
            &lt;/tr&gt;
            &lt;tr valign="top"&gt;
         </xsl:text>
      </xsl:if>
   </xsl:template>
   
   <xsl:template match="list_items/list_item">
      <xsl:if test="../../property_show_kind = 2">
         <!-- Отображаем список -->
         <xsl:variable name="nodename">property_id_<xsl:value-of select="../../@id"/></xsl:variable>
         <option value="{@id}">
            <xsl:if test="/shop/*[name()=$nodename] = @id">
               <xsl:attribute name="selected">
               </xsl:attribute>
            </xsl:if>
            <xsl:value-of disable-output-escaping="yes" select="list_item_value"/>
         </option>
      </xsl:if>
      <xsl:if test="../../property_show_kind = 3">
         <!-- Отображаем переключатели -->
         <xsl:variable name="nodename">property_id_<xsl:value-of select="../../@id"/></xsl:variable>
         <br/>
         <input type="radio" name="property_id_{../../@id}" value="{@id}" id="id_property_id_{../../@id}_{@id}">
            <xsl:if test="/shop/*[name()=$nodename] = @id">
               <xsl:attribute name="checked">checked</xsl:attribute>
            </xsl:if>
            <label for="id_property_id_{../../@id}_{@id}">
               <xsl:value-of disable-output-escaping="yes" select="list_item_value"/>
            </label>
         </input>
      </xsl:if>
      <xsl:if test="../../property_show_kind = 4">
         <!-- Отображаем флажки -->
         <xsl:variable name="nodename">property_id_<xsl:value-of select="../../@id"/>_item_id_<xsl:value-of select="@id"/></xsl:variable>
         <br/>
         <input type="checkbox" name="property_id_{../../@id}_item_id_{@id}" id="id_property_id_{../../@id}_{@id}">
            <xsl:if test="/shop/*[name()=$nodename] = @id">
               
               <xsl:attribute name="checked">checked</xsl:attribute>
            </xsl:if>
            <label for="id_property_id_{../../@id}_{@id}">
               <xsl:value-of disable-output-escaping="yes" select="list_item_value"/>
            </label>
         </input>
      </xsl:if>
      <xsl:if test="../../property_show_kind = 7">
         <!-- Отображаем список -->
         <xsl:variable name="nodename">property_id_<xsl:value-of select="../../@id"/></xsl:variable>
         <option value="{@id}">
            <xsl:if test="/shop/*[name()=$nodename] = @id">
               <xsl:attribute name="selected">
               </xsl:attribute>
            </xsl:if>
            <xsl:value-of disable-output-escaping="yes" select="list_item_value"/>
         </option>
      </xsl:if>
   </xsl:template>
   
   <!-- Цикл с шагом 10 для select'a количества элементов на страницу -->
   <xsl:template name="for_on_page">
      <xsl:param name="i" select="0"/>
      <xsl:param name="n"/>
      
      <option value="{$i}">
         <xsl:if test="$i = /shop/on_page">
            <xsl:attribute name="selected">
            </xsl:attribute>
         </xsl:if>
         <xsl:value-of select="$i"/>
      </option>
      
      <xsl:if test="$n &gt; $i">
         <!-- Рекурсивный вызов шаблона -->
         <xsl:call-template name="for_on_page">
            <xsl:with-param name="i" select="$i + 10"/>
            <xsl:with-param name="n" select="$n"/>
         </xsl:call-template>
      </xsl:if>
   </xsl:template>

</xsl:stylesheet>
Re: Фильтр на главной странице по всем товарам интернет магазина
#
suba
140
О! Мужики спасибо вам огромное, вроде как работает, но еще одна дилемма,если у меня в магазине есть группы, то фильтр не выводится, и фильтр идет по тем товарам которые вне группы...
Делаю то благодаря чему, несмотря ни на что
Авторизация