Динамическое изменение количества отображаемых товаров на странице tpl — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Задача:''' В форме для фильтрации объектов каталога, необходимо вывести выпадающий списо…»)
 
м (переименовал «Динамическое изменение количества отображаемых товаров на странице, tpl-шаблоны» в «[[Динамическое изменение количества о�)
 
(не показаны 3 промежуточные версии 2 участников)
Строка 1: Строка 1:
 +
'''Актуально для версии 2.9.6'''<br/><br/>
 
'''Задача:'''
 
'''Задача:'''
  
Строка 7: Строка 8:
 
В файл '''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 getcount(){
+
   public function getCount(){
         $count = htmlspecialchars(getRequest('count'));
+
         $count = intval(getRequest('count'));
         if (!$count) return '';
+
         if ($count > 0) return $count;
         return $count;
+
         return '';
 
     }
 
     }
  
 
     public function is_sel($count){
 
     public function is_sel($count){
         $count = (int)$count;
+
         $count = intval($count);
         $current_sel = (int)getRequest('count');
+
         $current_sel = intval(getRequest('count'));
 
         if ($count == $current_sel) return "selected='selected'";
 
         if ($count == $current_sel) return "selected='selected'";
 
     }   
 
     }   
Строка 60: Строка 61:
 
    
 
    
 
В итоге, при выборе в выпадающем списке нужного значения: 10, 20 или 30, страница перегрузится и будет отображено указанное количество объектов каталога.
 
В итоге, при выборе в выпадающем списке нужного значения: 10, 20 или 30, страница перегрузится и будет отображено указанное количество объектов каталога.
 +
[[Категория:Модуль Каталог]]

Текущая версия на 09:39, 2 июня 2014

Актуально для версии 2.9.6

Задача:

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

Решение:

В файл 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, страница перегрузится и будет отображено указанное количество объектов каталога.