Нормальное количество товаров на странице
Давно искал как реализовать выбор количества товаров на странице, ничего толкового, кроме как идти в wa-config и править там не нашел, ну вот очередной раз осуществляя поиск, нашел, что количество товаров берется из cookie "products_per_page", если оно есть, но конечно никто нигде об этом не упомянул в документации или где-нибудь еще, что огорчает. Для работы необходимо убрать "ленивую загрузку" http://www.webasyst.ru/help/18/otklyuchenie-avtomaticheskoy-zagruzki-spiska-tovarov/
в js файл нужно добавить следующий код, как правило это default.js, ну или другой файл, в зависимости от вашей темы дизайна(custom, nifty...).
Переходим к html, как правило, в файлах list-thumbs.html или list-table.html, в зависимости от того, через какой файл вы выводите товары, или же используете свой, добавляем следующий код:
Изменение количества товаров на страницу
в этой строчке {$page_counts = ['8','16','32','64']} замените на свои числа или добавьте новые.
Пример {$page_counts = ['5','10','20','40','100']}
Оформление
в css файл добавьте
Второй варинат(выпадающий список)
js
html
в 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 ответов
все работает, только надо подключить jquery.cookie.js плагин
Спасибо, вариант с select работает отлично
Здравствуйте!
Подскажите, поставили куку products_per_page по количеству товаров в категории. В подкатегориях работает а в НЕКОТОРЫХ корневых категориях не работает. Количество товаров на странице таких корневых категорий 1290.
Возможно какое то ограничение стоит на вывод товаров на одной странице? И можно ли это как то обойти?
Ограничение можно снять, например, в хелпере в котором формируется список товаров. shopProductsCollection.class.php