avatar

Выбор количества отображаемых товаров в каталоге

Опубликовал в блог Дополнения и модули для Simpla CMS
0
Полезная штука — выбор сколько товаров отображать… Попробуем ее «допилить» на Симплу.

В view отвечающем за вывод категории/бренда или поиск товара view/ProductsView.php есть следующие строки
// Показать все страницы сразу
if($this->request->get('page') == 'all')
    $items_per_page = $products_count; 
 
$pages_num = ceil($products_count/$items_per_page);
$this->design->assign('total_pages_num', $pages_num);
 
$filter['page'] = $current_page;
$filter['limit'] = $items_per_page;

Т.е. продолжая эту тему мы может сами назначать количество выводимых товаров. Для этого вы добавим вместо вышеприведенного кода другой код с обработчиком количества
// Показать все страницы сразу
if($this->request->get('page') == 'all')
    $items_per_page = $products_count; 
elseif($this->request->get('limit','integer') > 0)
    $items_per_page = $this->request->get('limit','integer');
 
$filter['limit'] = $items_per_page;
$filter['page'] = $current_page;   
     
$pages_num = ceil($products_count/$items_per_page);
$this->design->assign('total_pages_num', $pages_num);

Теперь добавим вызов в наш шаблон design/[ваш_шаблон]/products.tpl в нужном Вам месте добавить переключатель (можете вывести его в том месте где сортировка например)
<div class="limit">
    Выводить по
    <a {if !$smarty.get.limit || $smarty.get.limit == 20} class="selected"{/if} href="{url limit=20 page=null}">20</a>
    <a {if $smarty.get.limit == 50}    class="selected"{/if} href="{url limit=50 page=null}">50</a>
    <a {if $smarty.get.limit == 100}     class="selected"{/if} href="{url limit=100 page=null}">100</a>
    <a {if $smarty.get.page == 'all'}     class="selected"{/if} href="{url limit=null page=all}">все</a>
</div>

Немного поясню: раз мы переключаем количество на страницу — значит нам надо возвращаться на первую страницу, чтобы не получать неверный пустых страниц.
1 комментарий RSS
Нет комментариев
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.