UMIhelp

Разработка сайта на UMI.CMS => Макросы UMI.CMS => Тема начата: Cubes от 16 Апреля 2015, 09:38:09

Название: Не показывать объекты каталога, пока не сработает фильтр
Отправлено: Cubes от 16 Апреля 2015, 09:38:09
Собственно задача стоит в том, чтобы в каталоге не выводить список объектов, пока пользователь не воспользуется фильтром. Можно ли это реализовать штатными средствами или придется писать кастомный макрос на основе %catalog viewObject()%?
Название: Re:Не показывать объекты каталога, пока не сработает фильтр
Отправлено: e.ioffe от 16 Апреля 2015, 10:02:21
Нужно сделать для tpl или xslt шаблонизатора?
Название: Re:Не показывать объекты каталога, пока не сработает фильтр
Отправлено: Cubes от 16 Апреля 2015, 10:14:37
tpl
Название: Re:Не показывать объекты каталога, пока не сработает фильтр
Отправлено: admin от 20 Апреля 2015, 09:19:38
Вам нужна какая-то проверка, что фильтрующие параметры есть в адресной строке.

Так как в отличие от xslt, мы не сможем проверить результат макроса %catalog search()% и вывести или не вывести макрос %catalog getObjectsList()%, то придеться делать что-то вроде:

- Либо делаете маленький кастомный скрипт, который делает такую проверку и при успешном ответе вызывает макрос вывода товаров %catalog getObjectsList()%.
- Либо пишите кастомную версию макроса %catalog getObjectsList()%, внутри которого делаете туже проверку.
Название: Re: Не показывать объекты каталога, пока не сработает фильтр
Отправлено: e.ioffe от 25 Апреля 2015, 09:46:26
Если в остальном используется типовой функционал umi, лучше писать свои скрипты "прокси".

Например:

public function getObjectsListCustom($template = "default", $path = false, $limit = false, $ignore_paging = false, $i_need_deep = 0, $field_id = false, $asc = true) {
if(!$template) $template = "default";

$category_id = $this->analyzeRequiredPath($path);

if($category_id === false && $path != KEYWORD_GRAB_ALL) {
throw new publicException(getLabel('error-page-does-not-exist', null, $path));
}

if(!getRequest('fields_filter')) {
list($template_block, $template_block_empty, $template_block_search_empty, $template_line) = def_module::loadTemplates("catalog/".$template, "objects_block", "objects_block_empty", "objects_block_search_empty", "objects_block_line");

$block_arr['numpages'] = umiPagenum::generateNumPage(0, 0);
$block_arr['lines'] = "";
$block_arr['total'] = 0;
$block_arr['per_page'] = 0;
$block_arr['category_id'] = $category_id;

return $this->parseTemplate($template_block_search_empty, $block_arr, $category_id);
}

return $this->getObjectsList($template, $category_id, $limit, $ignore_paging, $i_need_deep, $field_id, $asc);
}