Skip to content
Андрей Рябин edited this page Oct 14, 2024 · 4 revisions

Cоставные блоки

Позволяет отобразить одни блоки внутри других

Для этого внутри любого блока нужно описать секцию areas в которой задаются включаемые области с другими, уже существующими блоками

Пример 1, создаём блок картинка + текст

script.js

sprint_editor.registerBlock('my_image_text', function ($, $el, data) {
    var areas = [
        {
            dataKey : 'image',
            blockName: 'image',
            container : '.sp-area1'
        },
        {
            dataKey : 'text',
            blockName: 'text',
            container : '.sp-area2'
        }
    ];

    this.getData = function () {
        return data;
    };

    this.collectData = function () {
        return data;
    };

    this.getAreas = function(){
        return areas;
    };
});

В шаблоне блока нужно задать места куда подгрузятся блоки

template.html

Картинка 
<div class="sp-area1"></div>

Текст
<div class="sp-area2"></div>

Пример 2, пробрасываем настройки внутрь составных блоков

Допустим у вас составной блок с двумя контейнерами

Вы можете описать настройки блоков по ключу в котором они сохраняются внутри составного

sprint_editor.registerBlock('complex_2_container', function ($, $el, data) {
    var areas = [
        {
            "blockName": "container",
            "dataKey": "container_abc",
            "container": ".sp-area-1"
        },
        {
            "blockName": "container",
            "dataKey": "container_xyz",
            "container": ".sp-area-2"
        }
    ];
//...
});

Тогда их настройки можно описать так

В файле config.json составного блока

{
    "title": "Два контейнера",
    "sort": 500,
    "complex_settings": {
        "container_abc": {
            "blocks": {
                "type": "hidden",
                "value": {
                    "video": "Видео",
                    "image": "Картинка",
                }
            }
        },
        "container_xyz": {
            "blocks": {
                "type": "hidden",
                "value": {
                    "htag": "Заголовок",
                    "text": "Текст",
                }
            }
        }
    }
}

В глобальном файле пользовательских настроек

$settings = [
    'complex_settings' => [

//название вашего составного блока
        'complex_2_container' => [


//dataKey для первого контейнера
            'container_abc'  => [
                'blocks' => [
                    'type'  => 'hidden',
                    'value' => [
                        'video' => 'Видео',
                        'image' => 'Картинка',
                    ],
                ],
            ],
//dataKey для второго контейнера            
            'container_xyz' => [
                'blocks' => [
                    'type'  => 'hidden',
                    'value' => [
                        'htag' => 'Заголовок',
                        'text' => 'Текст',
                    ],
                ],
            ],
        ],

Clone this wiki locally