Динамическое изменение количества отображаемых товаров на странице tpl — различия между версиями
Cmac (обсуждение | вклад) |
Stexe (обсуждение | вклад) |
||
| Строка 7: | Строка 7: | ||
В файл '''classes/modules/custom.php''', после слов "//TODO: Write your own macroses here" добавим два коротких кастомных метода: | В файл '''classes/modules/custom.php''', после слов "//TODO: Write your own macroses here" добавим два коротких кастомных метода: | ||
<source lang="php"> | <source lang="php"> | ||
| − | public function | + | public function getCount(){ |
| − | $count = | + | $count = intval(getRequest('count')); |
| − | if ( | + | if ($count > 0) return $count; |
| − | return | + | return ''; |
} | } | ||
public function is_sel($count){ | public function is_sel($count){ | ||
| − | $count = ( | + | $count = intval($count); |
| − | $current_sel = ( | + | $current_sel = intval(getRequest('count')); |
if ($count == $current_sel) return "selected='selected'"; | if ($count == $current_sel) return "selected='selected'"; | ||
} | } | ||
Версия 10:55, 1 июня 2014
Задача:
В форме для фильтрации объектов каталога, необходимо вывести выпадающий список с выбором количества товаров, выбрав которое, на странице отобразится указанное количество объектов каталога.
Решение:
В файл classes/modules/custom.php, после слов "//TODO: Write your own macroses here" добавим два коротких кастомных метода:
public function getCount(){
$count = intval(getRequest('count'));
if ($count > 0) return $count;
return '';
}
public function is_sel($count){
$count = intval($count);
$current_sel = intval(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, страница перегрузится и будет отображено указанное количество объектов каталога.