Популярный макрос, используемый почти в каждом проекте, если стандартный фильтр модуля "Каталог" по каким-то причинам нас не устраивает. Итак, нужно вывести все значения справочника для фильтра в каталоге.
В модуле КАТАЛОГ в customMacros.php добавляем метод:
public function getGuidedItemsForFilter($id_guide, $template, $filter_field) {
$arrPrivacies = umiObjectsCollection::getInstance() -> getGuidedItems($id_guide);
list($block_guide, $block_items) = def_module::loadTemplates("tpls/catalog/{$template}.tpl", "guide", "items");
$lines = array();
foreach ($arrPrivacies as $iObjectId=>$sObjectName) {
$line_arr = array();
$line_arr['id'] = $iObjectId;
$line_arr['name'] = $sObjectName;
$oGuideItem = umiObjectsCollection::getInstance()->getObject($iObjectId);
$identifikator = $oGuideItem -> getValue('identifikator');
$line_arr['field'] = $filter_field;
$lines[] = def_module::parseTemplate($block_items, $line_arr);
}
$block_arr = array();
$block_arr['subnodes:items'] = $lines;
return def_module::parseTemplate($block_guide, $block_arr);
}
В модуле Каталог создаем tpl-шаблон:
<?php
$FORMS = Array();
/* вывод вариантов сортировки из справочника */
$FORMS['guide'] = <<<END
% items %
END;
$FORMS['item'] = <<<END
<a href="./?fields_filter[%value%]=% id %">% name %</a>
END;
?>
Вызываем макрос:
% custom getGuidedItemsForFilter(id_справочника,'шаблон','zvanie') %