в общем, пока получилась такая кастомизация для комплексного компонента bitrix:catalog с фильтрацией по значению строкового поля
1.при вызове компонента ставим локальный фильтр (см выше)
2.а в bitrix:catalog.section.list компонента вставляем в начало result_modifier.php код модифицирующий входящий массив $arResult
Код |
---|
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
/*набрать массив секций с нужным товаром*/
$arSort = array("SORT" => "ASC");
$arFilter = array("IBLOCK_ID" => 3, 'PROPERTY'=>Array('RAZDEL_KATALOGA'=>'ДА'));
$arSelect = array("ID","NAME","ELEMENT_CNT");
$itemsList = CIBlockSection::GetList($arSort, $arFilter, true, $arSelect, false);
if ($itemsList->SelectedRowsCount() > 0) {
while ($item = $itemsList->Fetch()) {
//заменим количество в секции по умолчанию
if ($item['ID']==$arResult['SECTION']['ID']){
$arResult['SECTION']['ELEMENT_CNT']=$item['ELEMENT_CNT'];
}
//заменим количество в остальных секциях если они есть
foreach ($arResult['SECTIONS'] as &$value){
if ($item['ID'] == $value['ID']){
$value['ELEMENT_CNT']=$item['ELEMENT_CNT'];
}
}
unset($value);
//соберем массив ID для очистки списка разделов
$arID[]=$item['ID'];
}
}
/*очистить существующий массив разделов*/
foreach ($arResult['SECTIONS'] as $key => $value){
if(!in_array($arResult['SECTIONS'][$key]['ID'], $arID)){
unset($arResult['SECTIONS'][$key]);
}
}
//обновить количество
$arResult['SECTIONS_COUNT']=count($arResult['SECTIONS']);
|
все лишние разделы уходят, правда нумерация в $arResult['SECTIONS'] 'слетает' - но не знаю нужна ли она дальше
ps
только пока разбирался - нашел что к разделам каталога битрикс можно добавить сколько угодно пользовательских свойств - и на этапе выгрузки из 1с например... - обновлять их....
вот теперь сижу и думаю по какому пути идти)))
или фильтровать показывая только карточки товаров со свойством
'раздел' и на детальной странице товара рисовать товар + список товаров без свойства
'раздел'
или фильтровать показывая все товары без свойства
'раздел', а разделы каталога битрикс дополнять инфой из карточки товара со свойством
'раздел'короче когда работать некому и делается максимальная автоматизация - еще не так заморочишся...