Документация для разработчиков
Темная тема

Структура разделов

Компонент выводит список разделов инфоблока.


Описание catalog.section.list

Компонент стандартный, входит в дистрибутив модуля и содержит 5 шаблонов: store_v3, .default, tree, store_v3_menu и bootstrap_v4.

В визуальном редакторе компонент расположен по пути Контент > Каталог > Структура разделов.

Компонент относится к модулю Информационные блоки.



Параметры

Поле Параметр Описание Примечание
Основные параметры
Тип инфо-блока IBLOCK_TYPE Указывается один из созданных в системе типов информационных блоков.
Инфо-блок IBLOCK_ID Для выбранного типа инфоблоков указывается идентификатор необходимого информационного блока.
ID раздела SECTION_ID Указывается код, в котором передается идентификатор раздела.
Код раздела SECTION_CODE Указывается код раздела.
Источник данных
Показывать количество элементов в разделе COUNT_ELEMENTS [Y|N] При отмеченной опции будет показано количество элементов в разделе.
Показывать количество COUNT_ELEMENTS_FILTER Выбирается для каких товаров показывать количество: активных, доступных или всех.
Дополнительный фильтр для подсчета количества элементов в разделе ADDITIONAL_COUNT_ELEMENTS_FILTER Задается имя переменной, в которую передается параметры дополнительного фильтра для подсчета количества элементов в разделе.
Скрывать разделы с нулевым количеством элементов HIDE_SECTIONS_WITH_ZERO_COUNT_ELEMENTS [Y|N] При отмеченной опции разделы без элементов отображаться не будут.
Максимальная отображаемая глубина разделов TOP_DEPTH Параметр определяет максимальную глубину отображаемых разделов.
Поля разделов SECTION_FIELDS Указываются поля раздела, которые будут отображены на странице структуры разделов. Заполняется из публичной части редактора, удерживая клавишу Ctrl либо в коде, указывая массив:
 Array("ID","CODE",""),
При выборе пункта (не выбрано)-> и без указания вычисления полей в строках ниже (т.е. если задан пустой массив) ничего отображаться не будет.
Свойства раздела SECTION_USER_FIELDS Указываются свойства раздела, которые будут отображены на странице. Заполняется из публичной части редактора, удерживая клавишу Ctrl либо в коде, указывая массив. При выборе пункта (не выбрано)-> и без указания вычисления полей в строках ниже, свойства не будут выведены.
Имя массива со значениями фильтра разделов FILTER_NAME Задается имя переменной, в которую передается массив параметров из фильтра. Если имя массива не указано, то будет использоваться значение по умолчанию.
Внешний вид (для шаблона .default и bootstrap_v4)
Вид списка подразделовVIEW_MODEОпределяется способ отображения списка подразделов: в виде списка (LINE), многоуровнего списка (LIST), текста (TEXT) или плитки (TILE).
Показывать название разделаSHOW_PARENT_NAME[Y|N] При отмеченной опции будет выводится название раздела (кроме раздела верхнего уровня).
Внешний вид (для шаблона store_v3)
Начальное смещение (скролл) блока разделов SECTIONS_OFFSET_MODE Выбирается вариант смещения блока разделов.
Шаблоны ссылок
URL, ведущий на страницу с содержимым раздела SECTION_URL Указывается путь к странице с содержимым раздела.
Настройки кеширования
Тип кеширования CACHE_TYPE Тип кеширования:
  • A - Авто + Управляемое: автоматически обновляет кеш компонентов в течение заданного времени или при изменении данных;
  • Y - Кешировать: для кеширования необходимо определить время кеширования;
  • N - Не кешировать: кеширования нет в любом случае.
Время кеширования (сек.) CACHE_TIME Время кеширования, указанное в секундах.
Учитывать права доступа CACHE_GROUPS [Y|N] При отмеченной опции будут учитываться права доступа при кешировании.
Дополнительные настройки
Включать раздел в цепочку навигации ADD_SECTIONS_CHAIN [Y|N] При отмеченной опции название или заголовок (если задан в настройках SEO) раздела будет включен в цепочку навигации.
Служебные параметры (не отображаются в настройках компонента)
Кастомная сортировка по произвольному числу параметровCUSTOM_SECTION_SORTДанный служебный параметр можно передать в вызове компонента. Тип параметра - массив. Структура массива соответствует ключу $arOrder метода CIBlockSection::GetList.Доступно с версии модуля iblock 20.0.400.
Параметр не используется в штатных шаблонах комплексного компонента catalog.


Пример вызова

<?$APPLICATION->IncludeComponent("bitrix:catalog.section.list","",
Array(
		"ADDITIONAL_COUNT_ELEMENTS_FILTER" => "additionalCountFilter",		
		"VIEW_MODE" => "TEXT",
		"SHOW_PARENT_NAME" => "Y",
		"IBLOCK_TYPE" => "",
		"IBLOCK_ID" => "",
		"SECTION_ID" => $_REQUEST["SECTION_ID"],
		"SECTION_CODE" => "",
		"SECTION_URL" => "",
		"COUNT_ELEMENTS" => "Y",
		"COUNT_ELEMENTS_FILTER" => "CNT_ACTIVE",
		"HIDE_SECTIONS_WITH_ZERO_COUNT_ELEMENTS" => "N",
		"TOP_DEPTH" => "2",
		"SECTION_FIELDS" => "",
		"SECTION_USER_FIELDS" => "",
		"ADD_SECTIONS_CHAIN" => "Y",
		"CACHE_TYPE" => "A",
		"CACHE_TIME" => "36000000",
		"CACHE_NOTES" => "",
		"CACHE_GROUPS" => "Y"
	)		
);?>


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Максим Кубрак
Сообщение не промодерировано, возможны ошибки и неточности.
Цитата
пишет:
Фильтр по значению пользовательского св-ва секции "Да/Нет"
$GLOBALS['sectionsFilter'] = array('UF_IS_VENDOR' => true);
Проверенный и используемый способ фильтрации по пользовательскому свойству раздела типа "Да/Нет":
Код
global $arFilterTags;    
$arFilterTags = Array("UF_MAIN_PAGE_TAGS"=> 1, "ACTIVE" => "Y");
$APPLICATION->IncludeComponent(
"bitrix:catalog.section.list",
"main-track",
array(
    "COMPONENT_TEMPLATE" => "main-track",
    "IBLOCK_TYPE" => "catalogs",
    "IBLOCK_ID" => "5",
    "SECTION_ID" => "",
    "SECTION_CODE" => "",
    "COUNT_ELEMENTS" => "N",
    "TOP_DEPTH" => "1",
    "SECTION_FIELDS" => array(
        0 => "",
        1 => "",
    ),
    "SECTION_USER_FIELDS" => array(
        0 => "UF_MAIN_PAGE_TAGS",
        1 => "",
    ),
    "SECTION_URL" => "",
    "CACHE_TYPE" => "A",
    "CACHE_TIME" => "36000000",
    "CACHE_GROUPS" => "Y",
    "ADD_SECTIONS_CHAIN" => "N",
    "FILTER_NAME" => "arFilterTags"
),
false
);
0
Вячеслав Докукин
Сообщение не промодерировано, возможны ошибки и неточности.
Фильтр по значению пользовательского св-ва секции "Да/Нет"
$GLOBALS['sectionsFilter'] = array('UF_IS_VENDOR' => true);
1
Ольга
Сообщение не промодерировано, возможны ошибки и неточности.
Если смотреть код компонента, есть возможность отображения количества элементов активных на текущую дату либо товаров с ненулевым количеством
Параметр "COUNT_ELEMENTS_FILTER" на текущий момент отсутствует в документации

Код
switch ($arParams["COUNT_ELEMENTS_FILTER"])
  {
    case "CNT_ALL":
      break;
    case "CNT_ACTIVE":
      $elementCountFilter["ACTIVE"] = "Y";
      $elementCountFilter["ACTIVE_DATE"] = "Y";
      break;
    case "CNT_AVAILABLE":
      $elementCountFilter["ACTIVE"] = "Y";
      $elementCountFilter["ACTIVE_DATE"] = "Y";
      $elementCountFilter["AVAILABLE"] = "Y";
      break;
  }
2
Андрей Воробьев
Чтобы выбрать все пользовательские поля раздела укажите
   
Код
     "SECTION_USER_FIELDS" => array('UF_*'),
7
Роберт Басыров
Вывод разделов каталога в 2 колонки требует изменения в компоненте bitrix:catalog.section.list

В файле result_modifier.php:
Код
<?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; 

?> 


В шаблоне компонента (template.php)

Код
<? 
            $cols = 3; // Число колонок 
            ?> 

            <table class="category-table"> 
               <tr> 

            <?$i=0; foreach ($arResult["SECT"] as $arSection): $i++; ?> 

               <td> 
                  <?if (false && $arSection["PICTURE"]["SRC"]):?> 
                  <img src="<?=$arSection["PICTURE"]["SRC"]?>" width="<?=$arSection["PICTURE"]["WIDTH"]?>" height="<?=$arSection["PICTURE"]["HEIGHT"]?>" alt="<?=$arSection["PICTURE"]["NAME"]?>" title="<?=$arSection["PICTURE"]["NAME"]?>" align="right" /> 
                  <?endif;?> 

                  <b><a href="<?=$arSection["SECTION_PAGE_URL"]?>"><?=$arSection["NAME"]?></a></b> 
                  <?if (!empty($arSection["ITEMS"])):?> 
                     <ul> 
                     <?foreach ($arSection["ITEMS"] as $arItem):?> 
                        <li><a href="<?=$arItem["SECTION_PAGE_URL"]?>"><?=$arItem["NAME"]?></a></li> 
                     <?endforeach;?> 
                     </ul> 
                  <?endif;?> 
                
               </td> 

               <?if ($i >= $cols): $i=0;?> 
                  </tr><tr> 
               <?endif;?> 

            <?endforeach;?> 

               <?while ($i < $cols):?> 
                  <td>&nbsp;</td> 
               <?$i++;endwhile;?> 

               </tr> 
            </table> 
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх