Галочка-фильтр "Показать товары в наличии"

#
Галочка-фильтр "Показать товары в наличии"
Специально для тех, кому надо реализовать подобный функционал:

В типовой динамической странице интернет-магазина добавляем код после блока "Ограничиваем по производителю"


/* Ограничение по наличию */
if(isset($_GET['in_stock']) AND $_GET['in_stock']=="on"){ // проверка на наличие параметра и соответствие включенной галочке
$element['type'] = 0; //основное свойство
$element['prefix'] = 'AND';
$element['name'] = 'shop_items_catalog_rest'; //система сама преобразует в нужное действие данный запрос
$element['if'] = '>';
$element['value'] = 0;
$element['sufix'] = '';
$param['select'][] = $element;
$external_propertys['in_stock'] = "on";
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}


Далее в XSL-шаблоне МагазинКаталогТоваров добавляем саму галочку к блоку с фильтрами:
<label>Показать только товары в наличии</label>
<input type="checkbox" name="in_stock" id="in_stock">
<xsl:if test="/shop/in_stock = 'on'">
<xsl:attribute name="checked">
<xsl:text disable-output-escaping="yes">checked</xsl:text>
</xsl:attribute>
</xsl:if>
</input>


Чуть ниже добавляем в фильтр нашу галочку, чтобы она добралась до $_GET

                  <!-- Определяем ссылку с параметрами фильтра -->
                  <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"/>&amp;in_stock=<xsl:value-of select="/shop/in_stock"/>
                        <xsl:if test="/shop/property_xml/node()">
                           <!-- GET для доп. свойств -->
                           <xsl:value-of select="/shop/property_xml"/>
                        </xsl:if>
                     </xsl:if>
                  </xsl:variable>


И еще ниже будет подобная конструкция. Здесь тоже добавляем в конец строки с action
&amp;in_stock=<xsl:value-of select="/shop/in_stock"/>


И почти в самый конец добавляем эту же строчку:

         <!-- Передаем фильтр -->
         <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"/>&amp;in_stock=<xsl:value-of select="/shop/in_stock"/>
<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>



Таким образом у нас появляется в фильтрах галочка, которая добавляется в фильтр и не теряется при переходе к другим страницам при паджинации. =)
#
Re: Галочка-фильтр "Показать товары в наличии"
klondike,
В hostcms 6.5.2 сможете внедрить? Готов заплатить
Авторизация