Вывод в bitrix:catalog товаров из нескольких инфоблоков

Имеется тип инфоблока 1c_catalog, а в нем несколько инфоблоков из разных 1С. Нужно вывести все эти инфобооки в комплексном компоненте bitrix:catalog

1. В компоненте bitrix:catalog в IBLOCK_ID передаем массив инфоблоков которые необходимо выводить

$APPLICATION->IncludeComponent(
	"bitrix:catalog", 
	"catalog", 
	array(
		... много параметров
		"IBLOCK_ID" => array(1,4),
		"IBLOCK_TYPE" => "1c_catalog",
		... еще больше параметров
	),
	false
);

2. Копируем из /bitrix/components/bitrix/ следующие компоненты «catalog.element», «catalog.section», «catalog.section.list» в свою область /bitrix/components/ak/

3. В файле component.php компонента catalog.element на строке 31 убираем преобразование IBLOCK_ID в число

// было
$arParams["IBLOCK_ID"] = intval($arParams["IBLOCK_ID"]);
// стало
$arParams["IBLOCK_ID"] = $arParams["IBLOCK_ID"];

4. В файле component.php компонента catalog.section на строке 34 убираем преобразование IBLOCK_ID в число

// было
$arParams["IBLOCK_ID"] = (int)$arParams["IBLOCK_ID"];
// стало
$arParams["IBLOCK_ID"] = $arParams["IBLOCK_ID"];

5. В файле component.php компонента catalog.section.list на строке 24 убираем преобразование IBLOCK_ID в число

// было
$arParams["IBLOCK_ID"] = intval($arParams["IBLOCK_ID"]);
// стало
$arParams["IBLOCK_ID"] = $arParams["IBLOCK_ID"];

6. Копируем шаблон компонента bitrix:catalog в необходимый вам шаблон сайта

7. В файлах element.php, sections.php, section_horizontal.php и section_vertical.php шаблона комплексного компонента catalog, меняем вызов компонентов из нашей области

было - bitrix:catalog.section.list
стало - ak:catalog.section.list

было - bitrix:catalog.section
стало - ak:catalog.section

было - bitrix:catalog.element
стало - ak:catalog.element

Это не идеальный вариант, но для быстрого запуска достаточно.
В идеале сам компонент catalog тоже перенести в свою область и сделать в параметрах выбора инфоблока множественное указание из интерфейса управления инфоблоком. НО лень! Если кому хочется, можно взяться и сделать все по человечески, пишите…

 

Комментарии (2)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *