Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Виртуальный каталог

00 голосов
2
У меня есть несколько инфоблоков каталогов. Условно назовем их "книги" и "аудио".
В каталогах есть дерево секций.
Отображение каталога осуществляю с помощью компонента bitrix:catalog.
У некоторых товаров указано свойство "vip".

Подскажите можно ли с помощью компонента bitrix:catalog, отобразить на сайте эти товары как отдельную категорию.
Т.е. должна получиться некая категория "VIP товары", к которой отображаются секции, а в секциях товары, со свойством "vip". Секции естественно должны отображаться только те в которых есть товары с таким статусом.

Или какой существует способ реализовать подобный функционал?
спросил 30 Ноя, 13 от Eoling (140 баллов)

2 Ответы

00 голосов
без программирования думаю не обойтись. С catalog.section все просто, подсовываем ему фильтр, например:
Код
$arrFilter = array("PROPERTY_VIP_VALUE" => "Y");


а вот чтобы дерево разделов отобразить, в которых есть вип товары, надо компонент кастомизировать catalog.section.list.

при построении дерева выбирать 1 эелемент из текущей секции с вип статусом, если такого нету - то не включать секцию:

Код
...
if(CIBlockElement::GetList(array(), array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "IBLOCK_SECTION_ID" => ИД_текущего_раздела, "PROPERTY_VIP_VALUE" => "Y", false, array("nTopCount" => 1), arrray("ID")->Fetch()))
{
   /* оставляем секцию */
   ...
}
...


Можно конечно без кастомизации, в файле result_modifier.php это сделать (шаблона catalog.section.list), просто не выводя ненужные секции, но будут ненужные записи выбираться, лишняя нагрузка.
ответил 26 Янв, 14 от Poleolog (1,240 баллов)
00 голосов
Цитата
Андрей Шилов пишет:
при построении дерева выбирать 1 эелемент из текущей секции с вип статусом

Возможно, оптимальней(в зависимости от количества элементов и количества разделов) будет вариант с группировкой. Делаем всего один CIBlockElement::GetList() с фильтром по свойству PROPERTY_VIP_VALUE и группировкой по SECTION_ID. На выходе сразу имеем массив с ID разделов, которые необходимо оставить
ответил 14 Май, 14 от Miko (340 баллов)

Похожие вопросы

0 голосов
1 ответ
+1 голос
1 ответ
спросил 08 Март, 18 от аноним
0 голосов
1 ответ