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

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

Дата публикации:
Поделиться:

Во 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>

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

Ну как-то так... Пробуйте :) и все получится.

Update 23.11.2013 Исправил обнаруженные недочеты.

Отзывы

Ваш отзыв будет первым
Оставьте отзыв
На него будут приходить уведомление при ответе. На сайте не публикуется

Модули из этой тематики