Здравствуйте, задача: подсчитать количество элементов раздела у которых у становлено пользовательское свойство, и вывести это количество в компоненте catalog.section.list.
То что имеем: на странице размещен комплексный компонент с вот таким шаблоном :
Соответственно шаблон компонента catalog.section.list:
И его же result_modifier.php:
В результате чего выводиться список из инфоблока вида:
Товары для дома(6 8)
Товары для детей(587)
Бытовая техника(430)
Вопрос: как в $arParams["COUNT_ELEMENTS"] отфильтровать только элементы с пользовательским свойством PROPERTY_IS_SPEC
Если подумать, то перед компонентом нужно сделать сортировку типа:
Но как потом передать это количество в $arParams["COUNT_ELEMENTS"] компонента и затем вывести? Или я не в правильную сторону копаю?
То что имеем: на странице размещен комплексный компонент с вот таким шаблоном :
Код |
---|
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); $APPLICATION->IncludeComponent( "bitrix:catalog.section.list", "", Array( "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], "IBLOCK_ID" => $arParams["IBLOCK_ID"], "DISPLAY_PANEL" => $arParams["DISPLAY_PANEL"], "CACHE_TYPE" => $arParams["CACHE_TYPE"], "CACHE_TIME" => $arParams["CACHE_TIME"], "CACHE_GROUPS" => $arParams["CACHE_GROUPS"], "ADD_SECTIONS_CHAIN" => "Y", "SECTION_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["section"], "TOP_DEPTH" => $TOP_DEPTH, "ELEMENT_SORT_FIELD" => "NAME", "ELEMENT_SORT_ORDER" => "asc", ), $component ); ?> |
Соответственно шаблон компонента catalog.section.list:
Код |
---|
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <div class="lef_skid"> <ul class="menu_left_skid"> <?$i=0; foreach ($arResult["SECT"] as $arSection): $i++; ?> <?if ($arParams["COUNT_ELEMENTS"] > 0):?> <li class="skid_menu"> <div class="a_left_img"> <a class="" href="<?=$arSection["SECTION_PAGE_URL"]?>"><? echo $arSection["NAME"] ?><?if($arParams["COUNT_ELEMENTS"] ):?> (<?=$arSection["ELEMENT_CNT"]?>) <?endif;?></a> </div> </li> <?endif;?> <?endforeach;?> </div> |
Код |
---|
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); $arCopy = $arResult["SECTIONS"]; foreach ($arResult["SECTIONS"] as $arSection) { if ($arSection["IBLOCK_SECTION_ID"] == $arParams["SECTION_ID"]) { $SUBITEMS = array(); foreach ($arCopy as $subItem) { if ($subItem["IBLOCK_SECTION_ID"] == $arSection["ID"]) $SUBITEMS[] = $subItem; } $arSection["ITEMS"] = $SUBITEMS; $SECT[] = $arSection; } } $arResult["SECT"] = $SECT; ?> |
В результате чего выводиться список из инфоблока вида:
Товары для дома(6 8)
Товары для детей(587)
Бытовая техника(430)
Вопрос: как в $arParams["COUNT_ELEMENTS"] отфильтровать только элементы с пользовательским свойством PROPERTY_IS_SPEC
Если подумать, то перед компонентом нужно сделать сортировку типа:
Код |
---|
$arFilter = array( "IBLOCK_ID" => $IBLOCK_ID, "PROPERTY_IS_SPEC" => "true", ); $erItems = CIBlockElement::GetList(Array("SORT" => "ASC"), $arFilter, false, false, Array()); |