Динамическое изменение количества отображаемых товаров на странице tpl — различия между версиями
VITL' (обсуждение | вклад) (Новая страница: «'''Задача:''' В форме для фильтрации объектов каталога, необходимо вывести выпадающий списо…») |
Cmac (обсуждение | вклад) |
||
Строка 60: | Строка 60: | ||
В итоге, при выборе в выпадающем списке нужного значения: 10, 20 или 30, страница перегрузится и будет отображено указанное количество объектов каталога. | В итоге, при выборе в выпадающем списке нужного значения: 10, 20 или 30, страница перегрузится и будет отображено указанное количество объектов каталога. | ||
+ | [[Категория:Модуль Каталог]] |
Версия 10:53, 8 сентября 2011
Задача:
В форме для фильтрации объектов каталога, необходимо вывести выпадающий список с выбором количества товаров, выбрав которое, на странице отобразится указанное количество объектов каталога.
Решение:
В файл classes/modules/custom.php, после слов "//TODO: Write your own macroses here" добавим два коротких кастомных метода:
public function getcount(){
$count = htmlspecialchars(getRequest('count'));
if (!$count) return '';
return $count;
}
public function is_sel($count){
$count = (int)$count;
$current_sel = (int)getRequest('count');
if ($count == $current_sel) return "selected='selected'";
}
В шаблоне, по которому выводится список объектов каталога (обычно это tpls/catalog/default.tpl), в блоке category, для макроса getObjectsList пропишем третий параметр:
%catalog getObjectsList('default', '%category_id%', '%custom getcount()%')%
В блоке objects_block, может быть прописан такой код:
<table style="width: 100%;"> <tr> <td> %catalog search('%category_id%', 'cenovye_svojstva short_info common', 'search')% </td> </tr> </table> <br /> %system numpages(%total%, %per_page%, 'catalog')% <br /> <div umi:method="catalog" umi:module="category" umi:element-id="%category_id%"> %lines% </div> <div style="clear: both;"></div> %system numpages(%total%, %per_page%, 'catalog')% <br /><br />
Если макрос search использует шаблон tpls/catalog/search.tpl, как в данном примере, то в этом шаблоне, в блок search_block, после макроса %lines%, пропишем следующий select:
<select name="count" onchange="this.form.submit()"> <option %custom is_sel(10)%>10</option> <option %custom is_sel(20)%>20</option> <option %custom is_sel(30)%>30</option> </select>
В итоге, при выборе в выпадающем списке нужного значения: 10, 20 или 30, страница перегрузится и будет отображено указанное количество объектов каталога.