Пример создания контейнеров

    Допустим, стоит задача вывести на странице слайдер в шапке со слайдами с разным наполнением, а также набор блоков наполнения тела страницы.

    В слайдере у нас будет возможность выбрать блоки image, image-text, а в теле страницы - text, image-text, 2col_text_photo.

    Для начала определимся с контейнерами: для слайдера создадим контейнер slider, он будет расположен в отдельной вкладке с именем "Слайдер", с миниатюрами изображений для добавления блоков:

    <?php
    // assets/plugins/pagebuilder/config/container.slider.php
    return [
        'title' => 'Слайдер',
        'addType' => 'images',
        'placement' => 'tab',
        'templates' => [
            'owner' => '
                <div class="slider">
                    [+wrap+]
                </div>
            ',
        ],
    ];

    Для тела страницы будем использовать расположение вместо tv-параметра. Для этого создадим новый tv-параметр page_body с типом ввода - pagebuilder. Затем создадим файл конфигурации этого контейнера:

    <?php
    // assets/plugins/pagebuilder/config/container.page_body.php
    return [
        'title' => 'Тело страницы',
        'addType' => 'images',
        'placement' => 'tv',
        'templates' => [
            'owner' => '
                <div class="body">
                    [+wrap+]
                </div>
            ',
        ],
    ];

    Важно, чтобы имя tv-параметра совпадало с именем контейнера, и опция placement была равна tv.

    Переходим к блокам. Они все идут в поставке вместе с плагином, нам осталось только переименовать их и привязать к контейнерам.

    Сначала переименуйте файлы конфигурации блоков, удалив концовку .sample.

    Затем добавьте в каждый файл строку привязки к контейнеру. Для блока image:

    'container' => 'slider',

    Для блоков text и 2col_text_photo:

    'container' => 'page_body',

    Для блока image-text, так как он будет привязан к двум контейнерам, строка будет иметь следующий вид:

    'container' => ['slider', 'page_body'],

    На этом настройки административной части закончились, данных действий достаточно, чтобы во всех документах появилась форма заполнения двух контейнеров, в тв-параметрах и в отдельной вкладке.

    Для вывода контейнеров нужно добавить следующий код в шаблоны:

    [[PageBuilder? &container=`slider`]]
    [[PageBuilder? &container=`page_body`]]