Разное

Bitrix список разделов с элементами: Список элементов инфоблока с названиями разделов в качестве заголовков

Содержание

Битрикс. Простой компонент «Структура разделов». Категория: Web-разработка • CMS Битрикс


На главной странице сайта, в правой колонке, надо вывести список категорий блога. Для решения это задачи используем простой компонент «Структура разделов», который предназначен для вывода списка разделов инфоблока. Как обычно, чтобы получить код вызова компонента со всеми параметрами, переходим на тестовую страницу и вызываем визуальный редактор. Выбираем в правой колонке компонент «Контент • Каталог • Структура разделов».



В настройках

  • оставляем шаблон по умолчанию .default
  • выбираем тип информационного блока
  • выбираем код информационного блока
  • задаем максимальную глубину разделов
  • не включать раздел в цепочку навигации


  • Копируем код вызова компонента и выходим без сохранения:

    <?php
    $APPLICATION->IncludeComponent(
        "bitrix:catalog.section.list",
        "",
        Array(
            "ADD_SECTIONS_CHAIN" => "N",
            "CACHE_GROUPS" => "Y",
            "CACHE_TIME" => "36000000",
            "CACHE_TYPE" => "A",
            "COUNT_ELEMENTS" => "Y",
            "IBLOCK_ID" => "1",
            "IBLOCK_TYPE" => "content",
            "SECTION_CODE" => "",
            "SECTION_FIELDS" => array("", ""),
            "SECTION_ID" => $_REQUEST["SECTION_ID"],
            "SECTION_URL" => "",
            "SECTION_USER_FIELDS" => array("", ""),
            "SHOW_PARENT_NAME" => "Y",
            "TOP_DEPTH" => "2",
            "VIEW_MODE" => "LINE"
        )
    );
    ?>


    Комментируем в шаблоне local/templates/voguis_index/footer.php HTML-код вывода списка последних постов блога и вставляем на это место вызов компонента:

    <h4>Категории блога</h4>
    <ul>
        <li><a href="#">|| Lorem Ipsum passage</a></li>
        <li><a href="#">|| Finibus Bonorum et</a></li>
        <li><a href="#">|| Treatise on the theory</a></li>
        <li><a href="#">|| Characteristic words</a></li>
        <li><a href="#">|| combined with a handful</a></li>
        <li><a href="#">|| which looks reasonable</a></li>
    </ul>



    Переходим на главную страницу сайта, включаем режим правки и копируем шаблон компонента:



    Задаем имя шаблона blog_ctgs и выбираем куда копировать:



    Файл шаблона local/templates/voguis_index/footer.php был перезаписан, теперь вызов компонента выглядит так:

    <?php
    $APPLICATION->IncludeComponent(
        "bitrix:catalog.section.list",
        "blog_ctgs",
        Array(
            "ADD_SECTIONS_CHAIN" => "N",     // Включать раздел в цепочку навигации
            "CACHE_GROUPS" => "Y",           // Учитывать права доступа
            "CACHE_TIME" => "36000000",      // Время кеширования (сек.)
            "CACHE_TYPE" => "A",             // Тип кеширования
            "COUNT_ELEMENTS" => "Y",         // Показывать количество элементов в разделе
            "IBLOCK_ID" => "1",              // Инфоблок
            "IBLOCK_TYPE" => "content",      // Тип инфоблока
            "SECTION_CODE" => "",            // Код раздела
            "SECTION_FIELDS" => array(       // Поля разделов
                0 => "",
                1 => "",
            ),
            "SECTION_ID" => $_REQUEST["SECTION_ID"], // ID раздела
            "SECTION_URL" => "",             // URL, ведущий на страницу с содержимым раздела
            "SECTION_USER_FIELDS" => array(  // Свойства разделов
                0 => "",
                1 => "",
            ),
            "SHOW_PARENT_NAME" => "Y",       // Показывать название раздела
            "TOP_DEPTH" => "2",              // Максимальная отображаемая глубина разделов
            "VIEW_MODE" => "LINE",           // Вид списка подразделов
        ),
        false
    );
    ?>


    Скопированный шаблон у нас теперь в директории local/templates/voguis_index/components/bitrix/catalog.section.list/blog_ctgs. Удаляем файл стилей style.css и открываем шаблон template.php на редактирование.


    Перед тем, как удалить из файла шаблона весь мусор, который напихали в него разработчики Битрикс, сохраним несколько полезных фрагментов:

    <?php
    if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
    /** @var array $arParams */
    /** @var array $arResult */
    /** @global CMain $APPLICATION */
    /** @global CUser $USER */
    /** @global CDatabase $DB */
    /** @var CBitrixComponentTemplate $this */
    /** @var string $templateName */
    /** @var string $templateFile */
    /** @var string $templateFolder */
    /** @var string $componentPath */
    /** @var CBitrixComponent $component */
    $this->setFrameMode(true);
    // Вид списка подразделов из настроек компонента
    $arViewModeList = $arResult['VIEW_MODE_LIST'];
    
    // Все доступные варианты вывода списка
    $arViewStyles = array(
        'LIST' => array(
            // ..........
        ),
        'LINE' => array(
            // ..........
        ),
        'TEXT' => array(
            // ..........
        ),
        'TILE' => array(
            // ..........
        )
    );
    
    // Как будем выводить список: LIST, LINE, TEXT, TILE
    $arCurView = $arViewStyles[$arParams['VIEW_MODE']];
    
    // Редактировать или удалить раздел с морды сайта
    $strSectionEdit = CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "SECTION_EDIT");
    $strSectionDelete = CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "SECTION_DELETE");
    $arSectionDeleteParams = array("CONFIRM" => GetMessage('CT_BCSL_ELEMENT_DELETE_CONFIRM'));
    
    // Код ниже отвечает за вывод списка
    ?><ul>
    <?php
        switch ($arParams['VIEW_MODE'])
        {
            case 'LINE':
                foreach ($arResult['SECTIONS'] as &$arSection)
                {
                    $this->AddEditAction($arSection['ID'], $arSection['EDIT_LINK'], $strSectionEdit);
                    $this->AddDeleteAction($arSection['ID'], $arSection['DELETE_LINK'], $strSectionDelete, $arSectionDeleteParams);
                    ?><li>
                    <a href="<?php echo $arSection['SECTION_PAGE_URL']; ?>" title="<?php echo $arSection['PICTURE']['TITLE']; ?>"></a>
                        <h3><a href="<?php echo $arSection['SECTION_PAGE_URL']; ?>"><?php echo $arSection['NAME']; ?></a><?
                    if ($arParams["COUNT_ELEMENTS"]) {
                        ?> <span>(<? echo $arSection['ELEMENT_CNT']; ?>)</span><?
                    }
                    ?></h3>
                    </li><?php
                }
                unset($arSection);
                break;
            case 'TEXT':
                foreach ($arResult['SECTIONS'] as &$arSection) { /* ... */ }
                unset($arSection);
                break;
            case 'TILE':
                foreach ($arResult['SECTIONS'] as &$arSection) { /* ... */ }
                unset($arSection);
                break;
            case 'LIST':
                foreach ($arResult['SECTIONS'] as &$arSection) { /* ... */ }
                unset($arSection);
                break;
        }
    ?>
    </ul>


    И пишем свой код

    <?php
    /*
     * Файл local/templates/voguis_index/components/bitrix/catalog.section.list/blog_ctgs/template.php
     */
    
    if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
    /** @var array $arParams */
    /** @var array $arResult */
    /** @global CMain $APPLICATION */
    /** @global CUser $USER */
    /** @global CDatabase $DB */
    /** @var CBitrixComponentTemplate $this */
    /** @var string $templateName */
    /** @var string $templateFile */
    /** @var string $templateFolder */
    /** @var string $componentPath */
    /** @var CBitrixComponent $component */
    $this->setFrameMode(true);
    
    // Редактировать или удалить раздел с морды сайта
    $strSectionEdit = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'SECTION_EDIT');
    $strSectionDelete = CIBlock::GetArrayByID($arParams['IBLOCK_ID'], 'SECTION_DELETE');
    $arSectionDeleteParams = array('CONFIRM' => GetMessage('CT_BCSL_ELEMENT_DELETE_CONFIRM'));
    ?>
    
    <ul>
    <?php foreach ($arResult['SECTIONS'] as $arSection): ?>
        <?php
        $this->AddEditAction($arSection['ID'], $arSection['EDIT_LINK'], $strSectionEdit);
        $this->AddDeleteAction($arSection['ID'], $arSection['DELETE_LINK'], $strSectionDelete, $arSectionDeleteParams);
        ?>
        <li>
            <a href="<?php echo $arSection['SECTION_PAGE_URL']; ?>">||
                <?php echo $arSection['NAME']; ?>
                <?php if ($arParams['COUNT_ELEMENTS']): /* показывать кол-во элементов в разделе? */ ?>
                    <span>(<?php echo $arSection['ELEMENT_CNT']; ?>)</span>
                <?php endif; ?>
            </a>
        </li>
    <?php endforeach; ?>
    </ul>


    Дополнительно

    Поиск:
    $arResult • CMS • IncludeComponent • Web-разработка • catalog.section.list • Битрикс • Инфоблок • Компонент • Меню • Навигация • Простой компонент • Раздел инфоблока • Структура • Структура разделов

    Битрикс. Самописный компонент «Структура разделов». Категория: Web-разработка • CMS Битрикс


    Давайте создадим простой компонент, который будет уметь формировать структуру разделов инфоблока в виде дерева. Такой компонент можно использовать для создания вспомогательного меню или при формировании страницы карты сайта. В настройках можно будет выбрать инфоблок и задать глубину вложенности разделов.


    Файл описания компонента .description.php:

    <?php
    /*
     * Файл local/components/tokmakov/iblock.tree/.description.php
     */
    if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die();
    
    $arComponentDescription = array(
        'NAME' => 'Структура разделов', // название компонента
        'DESCRIPTION' => 'Выводит дерево разделов инфоблока',
        'ICON' => '/images/icon.gif', // иконка компонента относительно папки компонента
        'CACHE_PATH' => 'Y', // показывать кнопку очистки кеша
        'SORT' => 50, // порядок сортировки в визуальном редакторе
        'COMPLEX' => 'N', // признак комплексного компонента
        'PATH' => array( // расположение компонента в визуальном редакторе
            'ID' => 'other_components', // идентификатор верхнего уровеня в редакторе
            'NAME' => 'Прочие компоненты', // название верхнего уровня в редакторе
            'CHILD' => array( // второй уровень в визуальном редакторе
                'ID' => 'other_iblock', // идентификатор второго уровня в редакторе
                'NAME' => 'Информационный блок' // название второго уровня в редакторе
            )
        )
    );


    Настройки компонента для визуального редактора:

    <?php
    /*
     * Файл local/components/tokmakov/iblock.element/.parameters.php
     */
    if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die();
    
    // проверяем, установлен ли модуль «Информационные блоки»; если да — то подключаем его
    if (!CModule::IncludeModule('iblock')) {
        return;
    }
    
    /*
     * Получаем массив всех типов инфоблоков — для возможности выбора
     */
    $arIBlockType = CIBlockParameters::GetIBlockTypes();
    
    /*
     * Получаем массив инфоблоков — для возможности выбора; фильтруем их по
     * выбранному типу и по активности
     */
    $arInfoBlocks = array();
    $arFilter = array('ACTIVE' => 'Y');
    // если уже выбран тип инфоблока, выбираем инфоблоки только этого типа
    if (!empty($arCurrentValues['IBLOCK_TYPE'])) {
        $arFilter['TYPE'] = $arCurrentValues['IBLOCK_TYPE'];
    }
    $rsIBlock = CIBlock::GetList(
        array('SORT' => 'ASC'),
        $arFilter
    );
    while($iblock = $rsIBlock->Fetch()) {
        $arInfoBlocks[$iblock['ID']] = '['.$iblock['ID'].'] '.$iblock['NAME'];
    }
    
    /*
     * Настройки компонента
     */
    $arComponentParameters = array(
        'PARAMETERS' => array(
            // выбор типа инфоблока
            'IBLOCK_TYPE' => array(
                'PARENT' => 'BASE',
                'NAME' => 'Выберите тип инфоблока',
                'TYPE' => 'LIST',
                'VALUES' => $arIBlockType,
                'REFRESH' => 'Y',
            ),
            // выбор самого инфоблока
            'IBLOCK_ID' => array(
                'PARENT' => 'BASE',
                'NAME' => 'Выберите инфоблок',
                'TYPE' => 'LIST',
                'VALUES' => $arInfoBlocks,
            ),
            // до какой глубины вложенности выбирать разделы
            'DEPTH_LEVEL' => array(
                'PARENT' => 'BASE',
                'NAME' => 'До какой глубины вложенности выбирать разделы',
                'TYPE' => 'STRING',
                'DEFAULT' => '2'
            ),
            // шаблон ссылки на страницу раздела
            'SECTION_URL' => array(
                'PARENT' => 'URL_TEMPLATES',
                'NAME' => 'URL, ведущий на страницу с содержимым раздела',
                'TYPE' => 'STRING',
                'DEFAULT' => '#SITE_DIR#/#IBLOCK_CODE#/category/id/#SECTION_ID#/'
            ),
            // настройки кеширования
            'CACHE_TIME'  =>  array('DEFAULT'=>3600),
            'CACHE_GROUPS' => array( // учитывать права доступа?
                'PARENT' => 'CACHE_SETTINGS',
                'NAME' => 'Учитывать права доступа',
                'TYPE' => 'CHECKBOX',
                'DEFAULT' => 'Y',
            ),
        ),
    );


    Код компонента, который выбирает разделы инфоблока с сортировкой по LEFT_MARGIN:

    <?php
    /*
     * Файл local/components/infoblock/iblock.tree/component.php
     */
    if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die();
    
    /** @var CBitrixComponent $this */
    /** @var array $arParams */
    /** @var array $arResult */
    /** @var string $componentPath */
    /** @var string $componentName */
    /** @var string $componentTemplate */
    /** @global CDatabase $DB */
    /** @global CUser $USER */
    /** @global CMain $APPLICATION */
    
    if (!CModule::IncludeModule('iblock')) {
        ShowError('Модуль «Информационные блоки» не установлен');
        return;
    }
    
    if (!isset($arParams['CACHE_TIME'])) {
        $arParams['CACHE_TIME'] = 3600;
    }
    
    // тип инфоблока
    $arParams['IBLOCK_TYPE'] = trim($arParams['IBLOCK_TYPE']);
    // идентификатор инфоблока
    $arParams['IBLOCK_ID'] = intval($arParams['IBLOCK_ID']);
    // до какой глубины выбирать разделы
    $arParams['DEPTH_LEVEL'] = intval($arParams['DEPTH_LEVEL']);
    
    // шаблон ссылки на страницу с содержимым раздела
    $arParams['SECTION_URL'] = trim($arParams['SECTION_URL']);
    
    if ($this->StartResultCache(false, $arParams['CACHE_GROUPS']==='N' ? false: $USER->GetGroups())) {
    
        /*
         * Выбираем все разделы инфоблока до выбранной глубины
         */
    
        // какие поля раздела инфоблока выбираем
        $arSelect = array(
            'ID',
            'NAME',
            'PICTURE',
            'DESCRIPTION',
            'DESCRIPTION_TYPE',
            'SECTION_PAGE_URL',
            'DEPTH_LEVEL'
        );
        // условия выборки раздела инфоблока
        $arFilter = array(
            'IBLOCK_ID' => $arParams['IBLOCK_ID'],
            'IBLOCK_ACTIVE' => 'Y',
            'ACTIVE' => 'Y',
            'GLOBAL_ACTIVE' => 'Y',
            '<=DEPTH_LEVEL' => $arParams['DEPTH_LEVEL']
        );
        // сортировка разделов для построения дерева
        $arSort = array(
            'LEFT_MARGIN' => 'ASC',
            'SORT' => 'ASC'
        );
        // выполняем запрос к базе данных
        $dbResult = CIBlockSection::GetList(
            array(),
            $arFilter,
            false,
            $arSelect
        );
        // устанавливаем шаблон пути для раздела, вместо того,
        // который указан в настройках информационного блока
        $dbResult->SetUrlTemplates('', $arParams['SECTION_URL']);
        while ($arSection = $dbResult->GetNext()) {
            // маленькая картинка раздела
            if ($arSection['PICTURE'] > 0) {
                $arSection['PICTURE'] = CFile::GetFileArray($arSection['PICTURE']);
            } else {
                $arSection['PICTURE'] = false;
            }
            $arResult[] = $arSection;
        }
    
        if (!empty($arResult)) { // если данные успешно получены
            $this->IncludeComponentTemplate();
        } else { // что-то пошло не так
            $this->AbortResultCache();
        }
    
    }


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

    <?php
    /*
     * Файл local/components/tokmakov/iblock.tree/templates/.default/template.php
     */
    if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
    
    /** @var array $arParams */
    /** @var array $arResult */
    /** @global CMain $APPLICATION */
    /** @global CUser $USER */
    /** @global CDatabase $DB */
    /** @var CBitrixComponentTemplate $this */
    /** @var string $templateName */
    /** @var string $templateFile */
    /** @var string $templateFolder */
    /** @var string $componentPath */
    /** @var CBitrixComponent $component */
    
    $this->setFrameMode(true);
    ?>
    
    <?php if (!empty($arResult)): ?>
        <ul>
            <?php foreach ($arResult as $arSection): ?>
                <li>
                    <a href="<?= $arSection['SECTION_PAGE_URL']; ?>"><?= $arSection['NAME']; ?></a>
                </li>
            <?php endforeach; ?>
        </ul>
    <?php endif; ?>


    Зададим стили, чтобы получился не просто список, а дерево:

    /*
     * Файл local/components/tokmakov/iblock.tree/templates/.default/style.css
     */
    #iblock-section-tree > .section-level-2 {
        margin-left: 20px;
    }
    #iblock-section-tree > .section-level-3 {
        margin-left: 40px;
    }


    Массив $arResult, доступный в шаблоне компонента:

    Array
    (
        [0] => Array
            (
                [ID] => 16
                [NAME] => Породы кошек
                [PICTURE] => Array
                    (
                        [ID] => 945
                        [MODULE_ID] => iblock
                        [HEIGHT] => 200
                        [WIDTH] => 200
                        [FILE_SIZE] => 21194
                        [CONTENT_TYPE] => image/jpeg
                        ..........
                        [SRC] => /upload/iblock/c16/c16acb4b686640c521df122f575acdb9.jpg
                    )
                [DESCRIPTION] => Быть может, кошка и не лучший друг человека (это почетное звание оспаривают...
                [DESCRIPTION_TYPE] => html
                [SECTION_PAGE_URL] => /articles/category/id/16/
                [DEPTH_LEVEL] => 1
                [CODE] => porody-koshek
                [EXTERNAL_ID] => 29
                [IBLOCK_TYPE_ID] => content
                [IBLOCK_ID] => 5
                [IBLOCK_CODE] => articles
                [GLOBAL_ACTIVE] => Y
            )
        [1] => Array
            (
                [ID] => 17
                [NAME] => Длинношерстные
                [PICTURE] => Array
                    (
                        [ID] => 984
                        [MODULE_ID] => iblock
                        [HEIGHT] => 700
                        [WIDTH] => 700
                        [FILE_SIZE] => 193845
                        [CONTENT_TYPE] => image/jpeg
                        .........
                        [SRC] => /upload/iblock/317/317346676253ea0776365b83b83c7dba.jpg
                    )
                [DESCRIPTION] => Длинношерстные кошки – настоящие красавицы, которые не оставят равнодушными...
                [DESCRIPTION_TYPE] => text
                [SECTION_PAGE_URL] => /articles/category/id/17/
                [DEPTH_LEVEL] => 2
                [CODE] => dlinnosherstnye
                [IBLOCK_TYPE_ID] => content
                [IBLOCK_ID] => 5
                [IBLOCK_CODE] => articles
                [GLOBAL_ACTIVE] => Y
            )
        [2] => Array
            (
                [ID] => 18
                [NAME] => Короткошерстные
                [PICTURE] => Array
                    (
                        [ID] => 983
                        [MODULE_ID] => iblock
                        [HEIGHT] => 700
                        [WIDTH] => 700
                        [FILE_SIZE] => 71596
                        [CONTENT_TYPE] => image/jpeg
                        ..........
                        [SRC] => /upload/iblock/17b/17ba9590bb537f17a9eb8a5edb912819.jpg
                    )
                [DESCRIPTION] => Короткошёрстные кошки очень полюбились владельцам квартир, так как они не требуют...
                [SECTION_PAGE_URL] => /articles/category/id/18/
                [DEPTH_LEVEL] => 2
                [CODE] => korotkosherstnye
                [IBLOCK_TYPE_ID] => content
                [IBLOCK_ID] => 5
                [IBLOCK_CODE] => articles
                [GLOBAL_ACTIVE] => Y
            )
        [3] => Array
            (
                [ID] => 19
                [NAME] => Породы собак
                [PICTURE] => Array
                    (
                        [ID] => 951
                        [MODULE_ID] => iblock
                        [HEIGHT] => 200
                        [WIDTH] => 200
                        [FILE_SIZE] => 20142
                        [CONTENT_TYPE] => image/jpeg
                        ..........
                        [SRC] => /upload/iblock/54b/54b6016bcfdda68acb57b3f7e54a1b73.jpg
                    )
                [DESCRIPTION] => Более 20 тысяч лет назад первобытный человек привел в свое жилище совершенно...
                [DESCRIPTION_TYPE] => html
                [SECTION_PAGE_URL] => /articles/category/id/19/
                [DEPTH_LEVEL] => 1
                [CODE] => porody-sobak
                [EXTERNAL_ID] => 28
                [IBLOCK_TYPE_ID] => content
                [IBLOCK_ID] => 5
                [IBLOCK_CODE] => articles
                [GLOBAL_ACTIVE] => Y
            )
        [4] => Array
            (
                [ID] => 20
                [NAME] => Декоративные породы
                [PICTURE] => Array
                    (
                        [ID] => 953
                        [MODULE_ID] => iblock
                        [HEIGHT] => 200
                        [WIDTH] => 200
                        [FILE_SIZE] => 25689
                        [CONTENT_TYPE] => image/jpeg
                        ..........
                        [SRC] => /upload/iblock/ffa/ffa1f34cc799b4bcc86381ecd06e332f.jpg
                    )
                [DESCRIPTION] => Декоративные собаки — собирательное определение пород собак, не предназначенных...
                [DESCRIPTION_TYPE] => html
                [SECTION_PAGE_URL] => /articles/category/id/20/
                [DEPTH_LEVEL] => 2
                [CODE] => dekorativnye-porody
                [IBLOCK_TYPE_ID] => content
                [IBLOCK_ID] => 5
                [IBLOCK_CODE] => articles
                [GLOBAL_ACTIVE] => Y
            )
        [5] => Array
            (
                [ID] => 21
                [NAME] => Служебные породы
                [PICTURE] => Array
                    (
                        [ID] => 955
                        [MODULE_ID] => iblock
                        [HEIGHT] => 200
                        [WIDTH] => 200
                        [FILE_SIZE] => 24596
                        [CONTENT_TYPE] => image/jpeg
                        ..........
                        [SRC] => /upload/iblock/b1a/b1a0c6fed22467a3da087c3fdae64241.jpg
                    )
                [DESCRIPTION] => К ним относится ряд пород, которые человек использует для работы. Использование...
                [DESCRIPTION_TYPE] => html
                [SECTION_PAGE_URL] => /articles/category/id/21/
                [DEPTH_LEVEL] => 2
                [CODE] => sluzhebnye-porody
                [IBLOCK_TYPE_ID] => content
                [IBLOCK_ID] => 5
                [IBLOCK_CODE] => articles
                [GLOBAL_ACTIVE] => Y
            )
    )


    Чтобы сформировать многоуровневый список, нужно модифицировать массив $arResult

    <?php
    /*
     * Файл local/components/tokmakov/iblock.tree/templates/.default/result_modifier.php
     */
    if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
    
    if (!empty($arResult)) {
        foreach ($arResult as $key => $value) {
            $arResult[$key]['IS_PARENT'] = false;
            if (isset($arResult[$key+1]) && $arResult[$key+1]['DEPTH_LEVEL'] > $value['DEPTH_LEVEL']) {
                $arResult[$key]['IS_PARENT'] = true;
            }
        }
    }


    Тогда шаблон компонента будет таким:

    <?php
    /*
     * Файл local/components/tokmakov/iblock.tree/templates/.default/template.php
     */
    if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
    
    /** @var array $arParams */
    /** @var array $arResult */
    /** @global CMain $APPLICATION */
    /** @global CUser $USER */
    /** @global CDatabase $DB */
    /** @var CBitrixComponentTemplate $this */
    /** @var string $templateName */
    /** @var string $templateFile */
    /** @var string $templateFolder */
    /** @var string $componentPath */
    /** @var CBitrixComponent $component */
    
    $this->setFrameMode(true);
    ?>
    
    <?php if (!empty($arResult)): ?>
        <ul>
        <?php $previousLevel = 0; ?>
        <?php foreach ($arResult as $arSection): ?>
    
            <?php if ($previousLevel && $arSection['DEPTH_LEVEL'] < $previousLevel): ?>
                <?= str_repeat('</ul></li>', ($previousLevel - $arSection['DEPTH_LEVEL'])); ?>
            <?php endif; ?>
    
            <?php if ($arSection['IS_PARENT']): /* если есть дочерние элементы */ ?>
                <?php if ($arSection['DEPTH_LEVEL'] == 1): /* корневой элемент */ ?>
                    <li>
                        <a href="<?= $arSection['SECTION_PAGE_URL']; ?>"><?= $arSection['NAME']; ?></a>
                        <ul>
                <?php else: /* элемент второго, третьего уровня */ ?>
                    <li>
                        <a href="<?= $arSection['SECTION_PAGE_URL']; ?>"><?= $arSection['NAME']; ?></a>
                        <ul>
                <?php endif; ?>
            <?php else: /* если нет дочерних элементов */ ?>
                <?php if ($arSection['DEPTH_LEVEL'] == 1): /* корневой элемент */ ?>
                    <li>
                        <a href="<?= $arSection['SECTION_PAGE_URL']; ?>"><?= $arSection['NAME']; ?></a>
                    </li>
                <?php else: /* элемент второго, третьего уровня */ ?>
                    <li>
                        <a href="<?= $arSection['SECTION_PAGE_URL']; ?>"><?= $arSection['NAME']; ?></a>
                    </li>
                <?php endif; ?>
            <?php endif; ?>
    
            <?php $previousLevel = $arSection['DEPTH_LEVEL']; ?>
    
        <?php endforeach; ?>
    
        <?php if ($previousLevel > 1): ?>
            <?= str_repeat('</ul></li>', ($previousLevel-1)); ?>
        <?php endif; ?>
        </ul>
    <?php endif; ?>


    А сформированный шаблоном html-код будет таким:

    <ul>
        <li>
            <a href="/articles/category/id/16/">Породы кошек</a>
            <ul>
                <li>
                    <a href="/articles/category/id/17/">Длинношерстные</a>
                </li>
                <li>
                    <a href="/articles/category/id/18/">Короткошерстные</a>
                </li>
            </ul>
        </li>        
        <li>
            <a href="/articles/category/id/19/">Породы собак</a>
            <ul>
                <li>
                    <a href="/articles/category/id/20/">Декоративные породы</a>
                </li>
                <li>
                    <a href="/articles/category/id/21/">Служебные породы</a>
                </li>
            </ul>
        </li>
    </ul>


    Пример вызова компонента:

    $APPLICATION->IncludeComponent(
        "tokmakov:iblock.tree",
        "",
        Array(
            "CACHE_GROUPS" => "Y",
            "CACHE_TIME" => "3600",
            "CACHE_TYPE" => "A",
            "DEPTH_LEVEL" => "2",
            "IBLOCK_ID" => "5",
            "IBLOCK_TYPE" => "content",
            "SECTION_URL" => "#SITE_DIR#/#IBLOCK_CODE#/category/id/#SECTION_ID#/"
        )
    );


    Поиск:
    CMS • Web-разработка • Битрикс • Иерархия • Компонент • Меню • Навигация • Раздел инфоблока

    Информационные блоки:Для разработчиков

    Компоненты модуля
    НазваниеИмя в пространстве имен bitrixОписание
    Новости
    Новости (комплексный компонент)newsПозволяет создать новостной раздел на сайте.
    Календарьnews.calendarСлужит для формирования и вывода календаря новостей или событий.
    Новость детальноnews.detailОсуществляет вывод детального описания новости.
    Все новостиnews.indexВыводит новости из различных инфоблоков.
    Лентаnews.lineОсуществляет вывод списка элементов инфоблоков с датой и заголовком со ссылкой на страницу с подробной информацией.
    Список новостейnews.listВыводит список новостей из одного информационного блока.
    Фотогалерея
    Фотогалерея (комплексный компонент)photoПозволяет получить полнофункциональную фотогалерею, создавая физически только одну страницу.
    Фотография детальноphoto.detailВыводит детальную информацию по фотографии.
    Случайное фотоphoto.randomСлужит для показа одной произвольной фотографии.
    Фотографии разделаphoto.sectionВыводит все фотографии из выбранного раздела.
    Разделы с TOP’ом фотографийphoto.sections.topСлужит для вывода TOP’а фотографий, сгруппированных по разделам.
    Фотогалерея 2.0
    Фотогалерея 2.0 (комплексный компонент)photogalleryПозволяет получить полнофункциональную фотогалерею, создавая физически только одну страницу.
    Фотоphotogallery.detailВыводит детальную информацию по фотографии.
    Фото (комментарии)photogallery.detail.commentСлужит для создания комментариев к фотографии.
    Фото (редактирование)photogallery.detail.editСлужит для редактирования свойств фотографии.
    Фото (список)photogallery.detail.listВыводит список фотографий.
    Список фото со слайдеромphotogallery.detail.list.exВыводит список фотографий во всплывающем окне со слайдером и комментариями.
    Фотогалерея (редактирование)photogallery.gallery.editВыводит форму редактирования параметров фотогалереи пользователя.
    Фотогалерея (список)photogallery.gallery.listВыводит список фотогалерей пользователя.
    Фотогалерея (шаблоны)photogallery.interfaceПодключает библиотеку вспомогательных шаблонов. Компонент ничего не выводит.
    Flash-слайдшоуphotogallery.imagerotatorЦиклически проигрывает фотографии из фотогалереи.
    Альбомphotogallery.sectionВыводит полную информацию об одном альбоме.
    Альбом (редактирование)photogallery.section.editПозволяет отредактировать данные альбома: изменить название, дату создания, ввести описание, ограничить доступ к альбому по паролю.
    Альбом (редактирование обложки)photogallery.section.edit.iconСлужит для редактирования обложки альбома.
    Альбом (список)photogallery.section.listВыводит список альбомов с информацией о количестве фотографий, вложенных альбомов в каждом и ссылками на просмотр содержимого альбомов.
    Фото (загрузка)photogallery.uploadСлужит для загрузки фотографии.
    Панельphotogallery.userВыводит информацию о галерее пользователя.
    Фотогалерея 2.0 (многопользовательская) (комплексный компонент)photogallery_userПозволяет получить полнофункциональную многопользовательскую фотогалерею, создавая физически только одну страницу.
    Каталог
    Каталог (комплексный компонент)catalogОсуществляет вывод полного каталога товаров из определенного инфоблока.
    Список сравниваемых элементов каталогаcatalog.compare.listВыводит список сравниваемых элементов каталога в виде небольшой таблицы.
    Таблица сравненияcatalog.compare.resultВыводит таблицу сравниваемых элементов каталога.
    Элемент каталога детальноcatalog.elementВыводит детальную информацию по элементу каталога.
    Фильтр по элементамcatalog.filterВыводит форму фильтра для фильтрации элементов информационых блоков.
    Список связанных элементовcatalog.link.listВыводит список элементов, связанных с заданным.
    Список информационных блоков заданного типаcatalog.mainВыводит список всех информационных блоков заданного типа.
    Элементы разделаcatalog.sectionВыводит список элементов раздела с указанным набором свойств.
    Структура разделовcatalog.section.listВыводит список разделов инфоблока с указанным количеством элементов в каждом разделе.
    Разделы с top’ом элементовcatalog.sections.topВыводит Top элементов сгруппированных по разделам; элементы выводятся в таблице.
    Top элементов каталогаcatalog.topВыводит в таблице Top элементов из всех разделов в соответствии с заданной сортировкой (используется как правило на главной странице сайта).
    RSS
    RSS новости (экспорт)rss.outПредназначен для создания страницы, которая отдает выбранные новости вашего сайта в формате RSS.
    RSS новости (импорт)rss.showПредназначен для импорта новостей с другого сайта.
    Добавление элементов
    Добавление элементов инфоблока (комплексный компонент)iblock.element.addОсуществляет вывод списка элементов указанного инфоблока, добавление/редактирование элементов и их удаление в зависимости от прав пользователя.
    Форма добавления / редактированияiblock.element.add.formОсуществляет вывод формы создания (редактирования) элемента указанного информационного блока.
    Список своих элементовiblock.element.add.listОсуществляет вывод списка доступных пользователю элементов указанного инфоблока, ссылок Добавить, Редактировать, Удалить.
    Инфоблоки
    Голосованиеiblock.voteРеализует возможность голосования для пользователей.
    Универсальные списки
    Универсальные спискиlistsПозволяет вести полнофункциональную работу с универсальными списками, создавая физически только одну страницу.
    Спискиlists.listsВыводит таблицу универсальных списков, доступных для просмотра и изменения.
    Списокlists.listВыводит разделы и элементы универсального списка с возможностью навигации и редактирования.
    Разделы спискаlists.sectionsПозволяет удалить и изменить разделы универсального списка.
    Редактирование элементаlists.element.editВыводит форму редактирования элемента списка.
    Настройки спискаlists.list.editПоказывает форму настроек универсального списка.
    Поля спискаlists.fieldsПоказывает поля универсального списка и позволяет их редактировать.
    Настройки поля спискаlists.field.editПоказывает форму настройки поля универсального списка.
    Навигационная цепочкаlists.element.navchainДобавляет к выводу обычного компонента Навигационная цепочка (bitrix:breadcrumb) элемент списка.

    1С-Битрикс — Универсальные списки

    Продукт «1С-Битрикс: Управление сайтом» включает 5 лицензий – «Старт», «Стандарт», «Малый бизнес»,
    «Бизнес» и «Энтерпрайз». Посмотрите удобную детальную
    таблицу сравнения лицензий, в которой наглядно представлен функционал каждой из них.

    Общие сведения:

    «Старт» позволяет с наименьшими затратами времени и средств создать свой интернет-проект или перевести его на новую систему. С этой лицензией вы можете создавать простые сайты и лендинги без помощи специалистов и управлять ими. Система содержит все необходимые инструменты для базовой настройки и развития ресурса.

    «Стандарт» – это набор самых необходимых инструментов для корпоративного портала. Лицензия позволяет создавать неограниченное количество сайтов и лендингов, работать с большим количеством документов и различных страниц, а также отслеживать и контролировать общение посетителей между собой.

    «Малый бизнес» содержит в себе базовый модуль «Интернет магазина». Позволяет размещать любое количество товаров в каталоге, управлять заказами, скидками, доставкой, а также интегрировать магазин с «1С» и «Яндекс.Маркет». Лицензия поможет вам запустить полноценный интернет-магазин, управлять контентом сайта, принимать и обрабатывать заказы покупателей.

    «Бизнес» – лицензия для интернет-магазинов с дополнительными возможностями развития онлайн-продаж, повышения конверсии и доходности. В дополнение к преимуществам лицензии «Малый бизнес», вы получите возможность построения дилерских продаж, продаж электронных товаров, инструменты увеличения среднего чека (наборы и комплекты), запустить программу лояльности и аффилиатские программы, использовать расширенную отчетность.

    «Энтерпрайз» – лицензия с максимальной функциональностью для средних и крупных интернет-магазинов, региональных и федеральных сетей. Позволяет выстраивать онлайн-продажи во всех каналах присутствия с единым центром управления, масштабировать бизнес без ограничений, встраивать интернет-магазин в инфраструктуру компании для лучшей интеграции и наивысшего качества сервиса. Энтерпрайз — это высокопроизводительное и отказоустойчивое решение для работы онлайн-бизнеса 24/7 с VIP-поддержкой от 1С-Битрикс.

    Оцените свои потребности и выбирайте лицензию с необходимыми параметрами.

    Если вы сомневаетесь в том, какую лицензию вам выбрать – обращайтесь к нашим партнерам. Они всегда будут рады помочь вам сделать правильный выбор:

    — Вы можете выбрать партнера самостоятельно из списка.
    — Оставить
    заявку на нашем сайте и выбрать из тех, кто откликнется.

    Битрикс-D7: Класс ElementList

    params (& $

    000

    000

    000

    000

    0008

    setMultiIblockMode ($ state)
    Установка режима мультиблока. Подробнее …
    setPaginationMode ($ state)
    Установка режима разбивки на страницы. Подробнее …
    prepareElementSortRow (array $ params, array $ orderRow, array $ default)
    getPaginationParams
    getSpecificIblockParams (& $ params)
    getMultiIblockParams (& $ params)
    Процесс iblock-компонента с отключенными параметрами multi.Подробнее …
    getSingleIblockParams (& $ params)
    Параметры компонента iblock процесса для одиночного iblock с отключенным мульти-iblock-режимом. Подробнее …
    initQueryFields ()
    initSubQuery ()

    05

    modifyDisplayProperties ($ iblock и $ iblockElements)
    getFilter ()
    getElementList ($ iblockId, $ products)
    initNavString (\ CIBlockResult $ elementIterator)
    $ предлагает выбрать

    получить FilteredOffersByProperty ($ iblockId)
    getOffersPropFilter (массив $ level)
    06

    0006

    0006

    0003

    0003

    0003

    для режима iblock500014

    Подробнее …

    000

    000

    000

    000

    000

    000

    000

    000

    000

    000

    000

    000

    000

    000

    000

    000

    000

    цены в хранилище компонентов

    45

    45

    46Подробнее …

    900

    45

    46Подробнее …

    0003 ($ условие)

    $ params)

    lock (массив $ product, массив $ priceBlock, $ ratio, $ defaultBlock = false)

    000 $ id)

    03

    0004

    45

    000

    000

    000

    0006000

    000

    0003

    45

    Процесс покупки / добавления в корзину и т. Д. Действий. Подробнее …

    0003

    0003

    0003

    loadPro

    старые ключи продукта

    Подробнее …

    @global \ CUser $ USER @global \ CMain $ APPLICATION

    См. определение в файле elementlist.php строка 18

    makeOutputResult ()
    deferredLoadAction ()
    Инициализация параметров навигации по страницам.Подробнее …
    prepareTemplateParams ()
    Параметры getTemplateMultiIblockParams (& $ params) 900

    getTemplateSingleIblockParams (& $ params)
    Параметры шаблона iblock процесса для одиночного iblock с отключенным multi-iblock-режимом.Подробнее …
    checkTemplateTheme ()
    getTemplateDefaultParams ()
    sortItemsByTemplateVariants ()
    Создание последовательности вариантов для отображения. Подробнее …
    getBigDataInfo ()
    Возвращает массив настроек больших данных. Подробнее …
    getEnlargedIndexMap ()
    editTemplateItems (& $ items)
    editTemplateJsOffers (& $ item)
    editTemplateOfferProps (& $ item)
    0003
    loadDisplayPropertyCodes ($ iblockId)
    setAction ($ action)
    Установщик действий.Подробнее …
    hasErrors ()
    Возвращает истину, если есть ошибки. Подробнее …
    processErrors ()
    Обработка ошибок в зависимости от кодов ошибок. Подробнее …
    setCacheUsage ($ state)
    Установщик использования кеша.Подробнее …
    setExtendedMode ($ state)
    Установщик расширенного режима. Подробнее …
    setCompatibleMode ($ state)
    Включение / отключение заполнения старых ключей в данных результатов и использования устаревших настроек. Подробнее …
    checkModules ()
    Проверить необходимые модули для компонента.Подробнее …
    initCatalogDiscountCache ()
    Заполните кэш скидок перед расчетом цены. Подробнее …
    clearCatalogDiscountCache ()
    Очистить кеш скидок. Подробнее …
    initCurrencyConvert ()
    Проверьте настройки валюты выходной цены.Подробнее …
    offerIblockExist ($ iblockId)
    Проверить предложения iblock. Подробнее …
    initCatalogInfo ()
    Загрузить информацию об используемых iblocks в хранилище компонентов. Подробнее …
    getProductInfo ($ productId)
    initPrices ()
    Загрузить каталог компонентов

    Подробнее …
    initVats ()
    Загрузить резервуары каталога в хранилище компонентов. Подробнее …
    initElementList ()
    Инициализация и обработка данных элементов iblock. Подробнее …
    sortElementList ()
    Сортировка элементов по исходному положению (в случае использования идентификаторов товаров в GetList).Подробнее …
    makeElementLinks ()
    Создание ссылок на элементы для быстрого доступа. Подробнее …
    getProductIds ()
    Возвращает массив идентификаторов элементов iblock, отображаемых для действия «initialLoad». Подробнее …
    getBigDataProductIds ()
    Возвращает массив идентификаторов элементов iblock, отображаемых для действия bigDataLoad.Подробнее …
    getBestSellersRecommendation ($ ids)
    Возврат идентификаторов рекомендованных бестселлеров. Подробнее …
    getMostViewedRecommendation ($ ids)
    Вернуть идентификаторы рекомендованных наиболее просматриваемых продуктов. Подробнее …
    getRandomRecommendation ($ ids)
    Возврат идентификаторов случайных продуктов.Подробнее …
    filterByParams ($ ids, $ filterIds = array (), $ useSectionFilter = true)
    Отфильтровать правильные идентификаторы продуктов. Подробнее …
    getSectionIdByCode ($ sectionCode = »)
    Вернуть идентификатор раздела по КОДУ. Подробнее …
    getSectionIdByElement ($ elementId, $ elementCode = »)
    Возврат идентификатора раздела по идентификатору элемента.Подробнее …
    filterIdBySection ($ elementIds, $ iblockId, $ sectionId, $ limit, $ depth = 0)
    getReitids
    Возвращает случайные идентификаторы элементов, чтобы заполнить частично пустое пространство в строке при отсутствии элементов больших данных. Подробнее …
    getBigDataServiceRequestParams ($ type = »)
    getBestSellersProductIds

    45000

    45000Подробнее …

    getBestSellersFilter ()
    getDeferredProductIds ()
    Возвращение элемента
    в исходный массив «
    для элемента . Подробнее …
    getProductIdMap ($ productIds)
    getProductsSeparatedByIblock Возврат продуктов (карта)Подробнее …
    getDefaultMeasure ()
    Возврат меры по умолчанию. Подробнее …
    getSelect ()
    Вернуть выбранные поля для выполнения. Подробнее …
    prepareElementQueryFields ()
    Подготовьте параметры getList элемента.Подробнее …
    prepareQueryFields (array $ select, array $ filter, array $ order)
    Подготовить select, filter, order. Подробнее …
    initPricesQuery ()
    getProductSelect ($ iblockId, массив $ selectFields)

    getProductFields ($ iblockId)
    Возвращает поля продукта для iblock. Подробнее …
    convertSelect (массив $ select)
    Преобразование старых выбранных полей продукта в новые. Подробнее …
    convertFilter (array $ filter)
    Преобразование старых ключей фильтра продукта в новые.Подробнее …
    convertOrder (массив $ order)
    Преобразование старых ключей заказа продукта в новые. Подробнее …
    getIblockSelectFields ($ iblockId)
    parseCondition ($ условие, $ parms)

    parseConditionLevel ($ condition, $ params)
    parseConditionName (arrayConditionName (array $ condition)

    05

    parseConditionValue ($ condition, $ name)
    parsePropertyCondition (array & $ result, array

    processElement (array & $ element)
    Данные элемента процесса для установки в $ arResult.Подробнее …
    modifyElementCommonData (array & $ element)
    Заполните различные общие поля для элемента. Подробнее …
    setElementPanelButtons (& $ element)
    Добавить ссылки на кнопки Hermitage для элемента. Подробнее …
    getPropertyList ($ iblock, $ propertyCodes)
    clearItems ()
    Очистить данные продуктов.Подробнее …
    loadMeasureRatios (массив $ itemIds)
    Коэффициенты измерения нагрузки для элементов. Подробнее …
    getEmptyRatio ()
    Вернуть коэффициент пустого пространства по умолчанию (отсутствует в базе данных). Подробнее …
    initItemsMeasure (массив и $ items)
    Начальная мера для элементов.Подробнее …
    getMeasureIds (массив $ items)
    Возврат идентификаторов мер для элементов. Подробнее …
    loadMeasures (array $ measureIds)
    Load измеряет данные. Подробнее …
    loadPrices (array $ itemIds)
    Загрузить цены на товары.Подробнее …
    calculateItemPrices (массив и $ items)
    transferItems (array & $ items)
    Расчет блока цен (простая цена, диапазон количества и т. д.). Подробнее…
    searchItemSelectedRatioId ($ id)
    compactItemRatios ($ id)
    getFullQuantityRange ()
    searchItemSelectedQuantityRangeHash ($ id)
    действия с памятью.Подробнее …
    modifyElementPrices (& $ element)
    Цены на элементы процесса. Подробнее …
    processProducts ()
    Загрузить, рассчитать и заполнить данные (цены, меры, скидки, устаревшие поля) для простых продуктов. Подробнее …
    processOffers ()
    Загрузить, рассчитать и заполнить данные (цены, меры, скидки, устаревшие поля) для предложений.Подробнее …
    getIblockOffers ($ iblockId)
    Массив предложений возврата для текущего iblock. Подробнее …
    getOffersFilter ($ iblockId)
    getOffersSort предлагает поля
    вернуть
    Подробнее…
    изменитьПредложения ($ предложения)
    initResultCache ()
    processResultData ()
    Все инициализации iblock / section / element / offer начинаются здесь. Подробнее …
    checkIblock ()
    Проверьте правильность iblocks.Подробнее …
    prepareData ()
    filterPureOffers ()

    45

    checkProductSection ($ productId, $ sectionId = 0, $ sectionCode = »)
    addProductId (действие)
    getRewriteFields ($ action)
    bigDataLoadAction ()
    Этот метод выполняется, когда выбрано действие bigData.Подробнее …
    initBigDataLastUsage ()
    Отметить последнее использование BigData. Подробнее …
    initialLoadAction ()
    Этот метод выполняется, когда выбрано действие initialLoad. Подробнее …
    sliceItemsForSlider (& $ items)
    getTemplateCurrencies ()

    05

    Действие готовится к выполнению в методе doAction с постфиксом Action.Подробнее …
    doAction ()
    Исполнитель действий. Подробнее …
    editTemplateProductSlider (& $ item, $ iblock, $ limit = 0, $ addDetailToSlider = true, $ default = array ())
    editTemplateOfferSlider (& $ item, $ iblock, $ limit = 0, $ addDetailToSlider = true, $ default = array ())
    editTemplateCatalogInfo (& $ item)
    getTemplatePropCell ($ code, $ offer и $ matrixFields, $ skuPropList)
    getOffersIblockId ($ iblockId)
    loadOfferTreePropertyCodes ($ iblockId)
    isNeedCheckQuant ity (array $ product)
    Вернуть true, если включить отслеживание количества и запретить делать товары, отсутствующие на складе, доступными для покупки.Подробнее …
    getUserGroups ()
    Вернуть группы пользователей. Подробнее …
    getUserGroupsCacheId ()
    Возвращает строку групп пользователей для идентификатора кеша. Подробнее …
    initCompatibleFields (массив $ items)
    Заполнение устаревших полей элементов для совместимости со старыми шаблонами.Подробнее …
    fillCompatibleRawPriceFields ($ id, массив $ цен)
    Заполнить устаревшие исходные данные о ценах из базы данных. Подробнее …
    getCompatibleFieldValue ($ id, $ field)
    Вернуть устаревшее значение поля для элемента. Подробнее …
    checkQuantityRange (массив $ row)
    Проверить диапазон количества для эмуляции фильтра CATALOG_SHOP_QUANTITY_ *.Подробнее …
    getEmptyPriceMatrix ()
    getCompatibleProductFields ()

    .

    Битрикс. Простой компонент «Структура разделов». Категория: Web-разработка • CMS Битрикс

    На главной странице сайта, в правой колонке, надо вывести список категорий блога. Для решения этой задачи используйте простой компонент «Структура разделов», предназначенный для вывода списка разделов инфоблока. Переходим на тестовую страницу и вызываем визуальный редактор. Выбираем в правой колонке компонент « Контент • Каталог • Структура разделов ».

    В настройках

  • оставляем шаблон по умолчанию . По умолчанию
  • выбираем тип информационного блока
  • выбираем код информационного блока
  • задаем максимальную глубину разделов
  • Не входящий раздел в цепочку навигации
  • Копируем код вызова компонента и выходим без сохранения:

      IncludeComponent (
        «битрикс: каталог.section.list »,
        "",
        Массив (
            "ADD_SECTIONS_CHAIN" => "N",
            "CACHE_GROUPS" => "Y",
            "CACHE_TIME" => "36000000",
            "CACHE_TYPE" => "А",
            "COUNT_ELEMENTS" => "Y",
            "IBLOCK_ID" => "1",
            "IBLOCK_TYPE" => "содержание",
            "SECTION_CODE" => "",
            "SECTION_FIELDS" => массив ("", ""),
            "SECTION_ID" => $ _REQUEST ["SECTION_ID"],
            "SECTION_URL" => "",
            "SECTION_USER_FIELDS" => массив ("", ""),
            "SHOW_PARENT_NAME" => "Y",
            "TOP_DEPTH" => "2",
            "VIEW_MODE" => "ЛИНИЯ"
        )
    );
    ?> 

    Комментируем в шаблоне local / templates / voguis_index / footer.php HTML-код вывода списка последних постов блога и вставляем на это место вызов компонента:

     

    Категории блога

    Переходим на главную страницу сайта, включаем режим правки и копируем шаблон компонента:

    Задаем имя шаблона blog_ctgs и выбираем куда копировать:

    Файл шаблона local / templates / voguis_index / footer.php был перезаписан, теперь вызов компонента выглядит так:

      IncludeComponent (
        "bitrix: catalog.section.list",
        "blog_ctgs",
        Массив (
            "ADD_SECTIONS_CHAIN" => "N", // Включать раздел в цепочку навигации
            "CACHE_GROUPS" => "Y", // Учитывать права доступа
            "CACHE_TIME" => "36000000", // Время кеширования (сек.)
            "CACHE_TYPE" => "A", // Тип кеширования
            "COUNT_ELEMENTS" => "Y", // Показывать количество элементов в разделе
            "IBLOCK_ID" => "1", // Инфоблок
            "IBLOCK_TYPE" => "content", // Тип инфоблока
            "SECTION_CODE" => "", // Код раздела
            "SECTION_FIELDS" => array (// Поля разделов
                0 => "",
                1 => "",
            ),
            "SECTION_ID" => $ _REQUEST ["SECTION_ID"], // ID раздела
            "SECTION_URL" => "", // URL, ведущий на страницу с содержимым раздела
            "SECTION_USER_FIELDS" => array (// Свойства разделов
                0 => "",
                1 => "",
            ),
            "SHOW_PARENT_NAME" => "Y", // Показывать название раздела
            "TOP_DEPTH" => "2", // Максимальная отображаемая глубина разделов
            "VIEW_MODE" => "LINE", // Вид списка подразделов
        ),
        ложный
    );
    ?> 

    Скопированный шаблон у нас теперь в директории local / templates / voguis_index / components / bitrix / catalog.section.list / blog_ctgs . Удаляем файл стилей style.css и открываем шаблон template.php на редактирование.

    Перед тем, как удалить из файла шаблона весь мусор, который напихали в него разработчики Битрикс, сохраним несколько полезных фрагментов:

      setFrameMode (правда);
    // Вид списка подразделов из настроек компонента
    $ arViewModeList = $ arResult ['VIEW_MODE_LIST'];
    
    // Все доступные варианты вывода списка
    $ arViewStyles = массив (
        'СПИСОК' => массив (
            //..........
        ),
        'СТРОКА' => массив (
            // ..........
        ),
        'ТЕКСТ' => массив (
            // ..........
        ),
        'ПЛИТКА' => массив (
            // ..........
        )
    );
    
    // Как будем выводить список: LIST, LINE, TEXT, TILE
    $ arCurView = $ arViewStyles [$ arParams ['VIEW_MODE']];
    
    // Редактировать или удалить раздел с морды сайта
    $ strSectionEdit = CIBlock :: GetArrayByID ($ arParams ["IBLOCK_ID"], "SECTION_EDIT");
    $ strSectionDelete = CIBlock :: GetArrayByID ($ arParams ["IBLOCK_ID"], "SECTION_DELETE");
    $ arSectionDeleteParams = array ("CONFIRM" => GetMessage ('CT_BCSL_ELEMENT_DELETE_CONFIRM'));
    
    // Код ниже отвечает за вывод списка
    ?> 
      AddEditAction ($ arSection ['ID'], $ arSection ['EDIT_LINK'], $ strSectionEdit); $ this-> AddDeleteAction ($ arSection ['ID'], $ arSection ['DELETE_LINK'], $ strSectionDelete, $ arSectionDeleteParams); ?>
    • ()

    И пишем свой код

      setFrameMode (правда);
    
    // Редактировать или удалить раздел с морды сайта
    $ strSectionEdit = CIBlock :: GetArrayByID ($ arParams ['IBLOCK_ID'], 'SECTION_EDIT');
    $ strSectionDelete = CIBlock :: GetArrayByID ($ arParams ['IBLOCK_ID'], 'SECTION_DELETE');
    $ arSectionDeleteParams = array ('CONFIRM' => GetMessage ('CT_BCSL_ELEMENT_DELETE_CONFIRM'));
    ?>
    
    
      AddEditAction ($ arSection ['ID'], $ arSection ['EDIT_LINK'], $ strSectionEdit); $ this-> AddDeleteAction ($ arSection ['ID'], $ arSection ['DELETE_LINK'], $ strSectionDelete, $ arSectionDeleteParams); ?>
    • || ()

    Дополнительно

    Поиск:
    $ arResult • CMS • IncludeComponent • Web-разработка • каталог.section.list • Битрикс • Инфоблок • Компонент • Меню • Навигация • Простой компонент • Раздел инфоблока • Структура • Структура разделов

    .

    Универсальные списки

    Недоступно в редакциях: Малый бизнес, Стандарт, Старт

    Подразделение для полнофункциональной работы с универсальными списками и включает в себя следующие компоненты:

    Компоненты
    Название Имя в названии bitrix Описание
    Универсальные списки списки Позволяет вести полнофункциональную работу физически только одну страницу.
    Списки list.lists Выводит таблицу универсальных списков, доступных для просмотра и изменений.
    Список lists.list Вывод разделов и элементов универсального списка с навигации и редактирования.
    Разделы списка lists.sections Позволяет удалить и изменить разделы универсального списка.
    Редактирование элемента lists.element.edit Вывод формы редактирования элемента списка.
    Список настроек lists.list.edit Показывает форму настройки универсального списка.
    Поля списка lists.fields Показывает поля универсального списка и позволяет их редактировать.
    Настройки поля списка списков.field.edit Показывает формулу настройки поля универсального списка.
    Навигационная цепочка lists.element.navchain Добавляет к выводу обычного компонента Навигационная цепочка (bitrix: breadcrumb) элемент списка.
    Меню списков lists.menu Добавляет меню социальной сети универсальные списки.
    Скачивание файла листов.file Скачивает файлы, привязанные к элементу списка, с проверкой прав доступа.
    Смотрите также:

    © «Битрикс»,
    2001-2020,
    «1С-Битрикс», 2020

    Наверх

    .

    Информационные блоки: Для разработчиков

    комплекс

    )

    Компоненты модуля
    Название Имя в пространстве имен bitrix Описание
    Новости новости Позволяет создать новостной раздел на сайте.
    Календарь новости.календарь Служит для вывода календаря или событий.
    Новость детально news.detail Осуществляет вывод детального описания новости.
    Все новости news.index Вывод новостей из различных инфоблоков.
    Лента news.line Осуществляет вывод списка элементов инфоблоков с датой и заголовком на странице с подробной информацией.
    Список новостей news.list Выводит список новостей из одного информационного блока.
    Фотогалерея
    Фотогалерея (комплексный компонент) фото Позволяет получить полнофункциональную фотогалерею, создавая физически только одну страницу.
    Фотография детально photo.detail Выводит детальную информацию по фотографии.
    Случайное фото photo.random Служит для показа одной произвольной фотографии.
    Фотографии раздела photo.section Выводит все фотографии из выбранного раздела.
    Разделы с TOP’ом фотографий photo.sections.top Служит для вывода TOP’а фотографий, сгруппированных по разделам.
    Фотогалерея 2.0
    Фотогалерея 2.0 (комплексный компонент) фотогалерея Позволяет получить полнофункциональную фотогалерею, создавая физически только одну страницу.
    Фото photogallery.detail Выводит детальную информацию по фотографии.
    Фото (комментарии) photogallery.detail.comment Служит для создания комментариев к фотографии.
    Фото (редактирование) photogallery.detail.edit Служит для редактирования свойств фотографии.
    Фото (список) photogallery.detail.list Выводит список фотографий.
    Список фото со слайдером photogallery.detail.list.ex Вывод списка фотографий во всплывающем окне со слайдером и комментариями.
    Фотогалерея (редактирование) photogallery.gallery.edit Вывод формула редактирования параметров фотогалереи пользователя.
    Фотогалерея (список) photogallery.gallery.list Вывод списка фотогалерей пользователя.
    Фотогалерея (шаблоны) photogallery.interface Подключает библиотеку вспомогательных шаблонов.Компонент ничего не выводит.
    Flash-слайдшоу photogallery.imagerotator Циклически проигрывает фотографии из фотогалереи.
    Альбом photogallery.section Выводит полную информацию об одном альбоме.
    Альбом (редактирование) photogallery.section.edit Позволяет отредактировать данные альбома: изменить название, дату создания, ввести описание, ограничить доступ к альбому по паролю.
    Альбом (редактирование обложки) photogallery.section.edit.icon Служит для редактирования обложки альбома.
    Альбом (список) photogallery.section.list Вывод списка альбомов с информацией о количестве фотографий, вложенных альбомов в каждом и ссылками на просмотр содержимого альбомов.
    Фото (загрузка) фотогалерея.загрузить Служба загрузки фотографий.
    Панель photogallery.user Выводит информацию о галерее пользователя.
    Фотогалерея 2.0 (многопользовательская) (комплексный компонент) photogallery_user Позволяет получить полнофункциональную многопользовательскую фотогалерею, создавая физически только одну страницу.
    Каталог
    Каталог (комплексный компонент) Каталог Осуществляет вывод полного каталога товаров из определенного инфоблока.
    Список сравниваемых элементов каталога catalog.compare.list Выводит список небольших сравниваемых элементов каталога в виде таблицы.
    Таблица сравнения catalog.compare.result Выводит таблицу сравниваемых элементов каталога.
    Элемент каталога детально Элемент каталога Вывод детальной информации по элементу каталога.
    Фильтр по элементам catalog.filter Вывод формульного фильтра для фильтрации элементов информационых блоков.
    Список связанных элементов catalog.link.list Выводит список элементов, связанных с заданным.
    Список информационных блоков заданного типа catalog.main Выводит список всех информационных блоков заданного типа.
    Элементы раздела раздел каталога Вывод списка элементов раздела с указанным набором свойств.
    Структура разделов catalog.section.list Вывод списка разделов инфоблока с указанными элементами в каждом разделе.
    Разделы с top’ом элементов catalog.sections.top Выводит Top элементов сгруппированных по разделам; элементы выводятся в таблице.
    Верхние элементы каталога catalog.top Вывод в таблице Верхние элементы из всех разделов в соответствии с заданной сортировкой (используется как правило на главной странице сайта).
    RSS
    RSS новости (экспорт) rss.out Предназначен для создания страницы, которая отдает выбранные новости вашего сайта в формате RSS.
    RSS новости (импорт) rss.показать Предназначен для импорта новостей с другого сайта.
    Добавление элементов
    Добавление элементов инфоблока (компонентный компонент) iblock.element.add Осуществляет вывод списка элементов инфоблока, добавление / редактирование и удаление элементов в зависимости от прав.
    Форма добавления / редактирования iblock.element.add.form Осуществляет вывод формы создания (редактирования) элемента информационного блока.
    Список своих элементов iblock.element.add.list Осуществляет вывод списка доступных элементов доступа Добавить , Редактировать , Удалить .
    Инфоблоки
    Голосование iblock.голос Реализует возможность голосования для пользователей.
    Универсальные списки
    Универсальные списки списки Позволяет вести полнофункциональную работу с универсальными списками, создавая физически только одну страницу.
    Списки lists.lists Выводит таблицу универсальных списков, доступных для просмотра и изменений.
    Список lists.list Вывод разделов и элементов универсального списка с навигации и редактирования.
    Разделы списка lists.sections Позволяет удалить и изменить разделы универсального списка.
    Редактирование элемента lists.element.edit Вывод форму редактирования элемента списка.
    Настройки списка lists.list.edit Показывает форму универсального списка.
    Поля списка lists.fields Показывает универсального списка и позволяет их редактировать.
    Настройки поля lists.field.edit Показывает форму настройки поля универсального списка.
    Навигационная цепочка списков.element.navchain Добавляет к выводу обычного компонента Навигационная цепочка (bitrix: breadcrumb) элемент списка.

    .

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *