Количество товаров на странице выбираемое пользователем

#
Количество товаров на странице выбираемое пользователем
Добрый день!

Задался вопросом, хочу дать пользователем выбор сколько товаров выводить на одну страницу. Нужно сделать выпадающий список со значениями 10, 20, 25, 50, 100. Каждое значение является количеством товара, выводимым на одну страницу интернет-магазина. Реализовывать, я так понимаю, это нужно в ТДС с помощью QB, но как именно? limit(20) для 20 товаров на страницу? или в данном случае настройка кол-ва товара на страницу в панели администрирования будет перебивать limit? Направьте на путь истинный!
Модератор
#
Re: Количество товаров на странице выбираемое пользователем
1. В типовой динамической странице магазина, например, после

$Shop_Controller_Show->addCacheSignature('sorting=' . $sorting);




добавляем:

$on_page = intval(Core_Array::getGet('on_page'));
        if ($on_page > 0 && $on_page < 150)
        {
                $Shop_Controller_Show->limit = $on_page;
                        
                $Shop_Controller_Show->addEntity(
                        Core::factory('Core_Xml_Entity')
                                ->name('on_page')->value($on_page)
                );
        }



2. В XSL-шаблоне каталога товаров добавляем вызов:

<span style="white-space: nowrap">Товаров на странице:</span>
            <select name="on_page">
            <option value="0">…</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>




3. Сам темплейт:

<!-- Цикл с шагом 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 > $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>
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Количество товаров на странице выбираемое пользователем
Спасибо огромное! Не раз уже выручаете!
Модератор
#
Re: Количество товаров на странице выбираемое пользователем
Пожалуйста.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
Авторизация