Нормальное количество товаров на странице

Давно искал как реализовать выбор количества товаров на странице, ничего толкового, кроме как идти в wa-config и править там не нашел, ну вот очередной раз осуществляя поиск, нашел, что количество товаров берется из cookie "products_per_page", если оно есть, но конечно никто нигде об этом не упомянул в документации или где-нибудь еще, что огорчает. Для работы необходимо убрать "ленивую загрузку" http://www.webasyst.ru/help/18/otklyuchenie-avtomaticheskoy-zagruzki-spiska-tovarov/

в js файл нужно добавить следующий код, как правило это default.js, ну или другой файл, в зависимости от вашей темы дизайна(custom, nifty...).
$('.pagination a').click(function(){
if(!$(this).hasClass('selected')){
if($(this).data('perpage')){
$.cookie('products_per_page', $(this).data('perpage'), { expires: 30, path: '/'});
}else{
$.cookie('products_per_page', '', { expires: 0, path: '/'});
}
}else{ return false; }
});


Переходим к html, как правило, в файлах list-thumbs.html или list-table.html, в зависимости от того, через какой файл вы выводите товары, или же используете свой, добавляем следующий код:
{assign var="ppp" value=""}
{if isset($smarty.cookies.products_per_page)}
{$ppp = $smarty.cookies.products_per_page}
{/if}
{$page_counts = ['8','16','32','64']}
<div class="pagination">
{foreach $page_counts as $page_count}
<a href="{$wa->currentUrl()}" data-perpage="{$page_count}"{if $page_count == $ppp}
class="selected"{/if}>{$page_count}
{/foreach}
<a href="{$wa->currentUrl()}"{if !isset($ppp)} class="selected"{/if}>все
</div>


Изменение количества товаров на страницу
в этой строчке {$page_counts = ['8','16','32','64']} замените на свои числа или добавьте новые.
Пример {$page_counts = ['5','10','20','40','100']}

Оформление
в css файл добавьте
.pagination a.selected {font-weight: bold;}


Второй варинат(выпадающий список)

js
$('#products_per_page').val($.cookie('products_per_page'));
$('#products_per_page').change(function(){
$.cookie('products_per_page', $(this).val());
document.location = '{$wa->currentUrl()}';
})


html
{$limits = ['15','25','50','75','100']}
{if isset($smarty.cookies.products_per_page)}
{$ppp = $smarty.cookies.products_per_page}
{/if}
<select id="products_per_page">
{foreach $limits as $limit}
<option value="{$limit}"{if $limit==$ppp} selected="selected"{/if}>{$limit}</option>
{/foreach}
</select>

7 ответов

  • -2
    17 мая 2014 10:21 #
    На момент мая 2014 - ниодно из решений не работает
  • 0
    А что не так? на момент, когда я это писал, все работало
  • 0
    Куку "products_per_page" мне тоже не удалось найти, скрипт её не ставит, а если самому поставить куку то скрипт её соответственно не читает, количество страниц не меняется.
  • 1
    Семён Гординов 28 мая 2015 08:38 #

    все работает, только надо подключить jquery.cookie.js плагин

  • 2

    Спасибо, вариант с select работает отлично

  • 1
    Марина Скворцова 5 августа 2015 15:37 #

    Здравствуйте!

    Подскажите, поставили куку products_per_page по количеству товаров в категории. В подкатегориях работает а в НЕКОТОРЫХ корневых категориях не работает. Количество товаров на странице таких корневых категорий 1290.

    Возможно какое то ограничение стоит на вывод товаров на одной странице? И можно ли это как то обойти?

    • +1
      allex.box allex.box 26 декабря 2016 17:19 #

      Ограничение можно снять, например, в хелпере в котором формируется список товаров. shopProductsCollection.class.php

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите