Здравствуйте, задача: подсчитать количество элементов раздела у которых у становлено пользовательское свойство, и вывести это количество в компоненте 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());
|