Как вывести на главной странице объекты каталога, у которых стоит галочка "акция"?

Материал из Umicms

Перейти к: навигация, поиск

1. Реализуем выдачу объектов из всех подразделов каталога.[1]

2. Подготовим поле, по которому мы будем фильтровать товары - в типе данных "объект каталога" создадим поле "Акция"- akciya типа "кнопка-флажок", поставим ему галочки "Наследуемое" и "Использовать в фильтрах". Это поле появится и во всех подтипах.

3. Создадим шаблон дизайна с содержанием

 
%catalog category(default, /kategoriya/)%

default - шаблон, где описана рекурсия, /kategoriya/ - раздел каталога, из которого мы хотим выбирать объекты. Добавляем этот шаблон в систему и создаём пустую страницу (например for_catalog) и назначаем шаблон это странице. Мы получили страницу "без дизайна", при обращении к которой получаем список всех объектов категории и подкатегории.

4. В шаблоне главной страницы поставим макрос

%system getOuterContent('http://domain.ru/for_catalog/?fields_filter[akciya]=1')%

- он выведет список объектов с галочкой "Акция".


На третьем шаге мы можем вызвать вообще все объекты каталога UMI.CMS, если вместо

%catalog category(default, /kategoriya/)%

вызвем

%catalog getObjectsList('default','mode=all')%

В этом случае первый шаг не обязателен.

Внимание, для того, чтобы %catalog search()% срабатывал в этом случае, необходимо, чтобы поля, по которым мы фильтруем товары, содержались в типе "Объект каталога" и были наследуемыми.

Также существует неописанный пока макрос

%system getFilteredPages($type_id, 'prop_name', 'blabla', 10, 'default')%

выдающий список из 10 объектов типа $type_id, у которых поле prop_name имеет значение blabla по шаблону tpls/filtered_pages/default.tpl

Это шаблон должен иметь примерно такое содержание:

$FORMS = Array();
$FORMS['pages_block'] = <<<END
<ul>
%items%
</ul>
END;


$FORMS['pages_block_line'] = <<<END
<a href="%link%">%name%</a></li>
END; 
$FORMS['pages_block_empty'] = <<<END
<i>No result</i>
END;


Варианты с %system getOuterContent()% более ресурсоемки, зато вариант с %system getFilteredPages()% не такой гибкий.

Личные инструменты