Вывести производителей на сайте с отбором его товаров из каталога

Просмотров: 22776

Достаточно частая задачка для каталога или интернет-магазина: вывести список производителей с подробными описаниями, а так же в подробном описании производителя или бренда вывести все товары, у которых заполнено свойство "Производитель." Расскажу как это сделать

Старый способ

Ранее, я уже писал заметку о том как реализовать данный функционал, посмотреть можно тут: Отсортировать элементы в Битрикс по свойству привязка к разделам 

Однако, для его реализации, строго необходимо, что бы у элементов каталога была привязка либо к разделам- либо к элементам другого инфоблока, в котором собственно хранятся производители.

Вести подобный каталог достаточно тяжело, так как нужно постоянно отслеживать наличие привязки товара к элементу/разделу другого инфоблока. Если товаров под несколько тысяч, и они постоянно обновляются из 1С- это становится очень рутинной задачей.

Автоматизируем вывод товаров бренда

Намного практичнее, сделать вывод товаров в описании производителя автоматическим. Из 1С мы выгружаем товары каталога, у которых название производителя обычная строка.

Так же мы создали отдельный инфоблок с производителями, добавили их логотипы, какие-то описания и вывели в отдельном разделе на сайте. Инфоблок каталога и инфоблок производителей ни как между собой не связаны.

"-Но. Я зашел в описание производителя и хотел бы сразу видеть все товары оного" скажет нам посетитель сайта. И мы его поймем и реализуем данный функционал. Причем, все будет работать автоматически без последующего вмешательства. Выгрузилась хоть тысяча новых товаров из 1С, все, они сразу раскидаются по своим производителям.

Рассказываю в видео, для реализации понадобится вот этот кусочек кода

Намного практичнее, сделать вывод товаров в описании производителя автоматическим. Из 1С мы выгружаем товары каталога, у которых название производителя обычная строка.

$brandName = $arResult["NAME"];
$GLOBALS['arrBrandName'] = array("=PROPERTY_ИД_VALUE"=>$brandName);

Видео: вывод товаров бренда в Битрикс

У заметки есть продолжение: Отфильтровать товары бренда и вывести по разделам каталога
Гость 11.07.2022
Доброго времени суток, фильтрует если прописать бренд в ручную, в чем может быть проблема?
$GLOBALS['arrBrandName'] = array("PROPERTY_133_VALUE"=>"Бренд" ;
Михаил Базаров 11.07.2022
Цитата
Гость написал:
Доброго времени суток, фильтрует если прописать бренд в ручную, в чем может быть проблема?
$GLOBALS['arrBrandName'] = array("PROPERTY_133_VALUE"=>"Бренд" ;

Скорее всего, в названии бренда. Проверка идет по строгому совпадению названия.
Гость 02.08.2022
Михаил скажи вот мой вызов товаров бренда как описано в уроке и чуть выше я вызвал умный фильтр. Все отображается хорошо, но фильтр по какой то причине просто не хочет фильтровать. В чем может быть причина?

Скрытый текст
Михаил Базаров 02.08.2022
В фильтре не указан раздел, из которого он должен брать параметры.
Нужно корректно указать SECTION_ID или SECTION_CODE
распечатай массив из  catalog.section что бы узнать точно.
Руслан 11.08.2023
Напрямую $arResult[] нельзя передать в component_epilog.php, нужно пробрасывать их из кэшируемой области (в result_modifier.php) так:
Код
$this->__component->SetResultCacheKeys(['PARAM']);
Михаил Базаров 11.08.2023
Можно, просто не все.
Как минимум ['NAME'] и ['ID'] там уже есть.
А вот если чего-то не хватает (например свойств) но очень надо - да, можно использовать:
Код
$cp = $this->__component; // объект компонента
if (is_object($cp)) {
    // в arResult component_epilog передадим все отображаемые свойства
    $cp->SetResultCacheKeys(array(
            'DISPLAY_PROPERTIES'
        )
    );
}
Руслан 27.09.2023
Есть минус, пагинация сломается, работать не будет, как мне кажется. По крайней мере, я не смог починить.
Гость 02.12.2023
Здравствуйте, все делал как вы, добавил catalog.section и что он по итогу выводит:
ни изображений, ни цен, ни возможность добавить в корзину и указать количество
Михаил Базаров 03.12.2023
Это у вас не правильно настроенный или недоверстанный шаблон списка разделов. Выведете его без фильтрации, полностью настройте а потом уже можно добавить фильтры
Гость 03.12.2023
В этом и проблема, я делал пока без фильтрации, полный вывод товаров, копировал этот же шаблон в другие места, не относящиеся к новостям- все показывает корректно. Новейший битрикс, php 8.2, параметр со старой совместимостью включен

Блог-note: заметки разработчика

Основные функции вывода в шаблонах Битрикс

Знаю, что все их знают. Но иногда не бывает лишним собрать все самое используемое в одну кучку. Ведь у каждого бывают мо...

Input Type File, множественный с дропзоной и показом превью

Задача: Сделать возможность загрузки файлов в множественный input type="file" c помощью drag&drop и показом превью загру...

Увидеть файл заказов который передаст Битрикс в 1С

Для диагностики обмена заказов, интернет-магазина на 1С Битрикс с 1С Управление Торговлей, нужно увидеть xml файл с зака...

Работа с HTTP-запросами в Bitrix: Обзор возможностей класса \Bitrix\Main\HttpRequest

Класс \Bitrix\Main\HttpRequest, является наследником класса Request, представляет собой мощный инструмент для работы с д...

AJAX корзина с отправкой количества из раздела каталога

Столкнулся с задачкой: нужно было на одном сайте реализовать интерактивный прайс лист. При этом, у пользователя должна б...

Вывести артикул в печатную форму бланка заказа

Задача: в печатную форму бланка заказа добавить артикулы товаров и данные о пользователе.

Ajax форма обратной связи, реализация в битрикс

Иногда, на сайте требуется создать форму обратной связи, которая будет писать все данные в инфоблок. Способов реализации...

Получить и вывести все цены товара в 1С-Битрикс

Задача: получить и вывести все цены товара по его ID в каталоге 1С-Битрикс (например, в детальной карточке catalog.e...

Сортировка элементов по индексу сортировки значений типа список

Внутри любого компонента есть заранее заложенные поля для сортировки элементов. Можно сортировать элементы в разных напр...