Settings - andreyryabin/sprint.editor GitHub Wiki

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

Позволяют добавлять дополнительные параметры к блокам, для создания таких настроек надо создать произвольный файл с настройками в директории /bitrix/admin/sprint.editor/settings/ или /local/admin/sprint.editor/settings/ за основу можно взять файл example.php

Пример настройки, добавляем текстовому блоку дополнительное оформление

$settings = array(
    'title' => 'Пример настройки',

    'block_settings' => array(
        'text' => array(
            'myparam1' => array(
                'type' => 'select',
                'value' => array(
                    'style1' => 'Цитата',
                    'style2' => 'Сноска',
                )
            ),
            'myparam2' => array(
                'type' => 'select',
                'value' => array(
                    'style4' => 'Яркий фон',
                )
            ),
        ),

    ),

);

Разные виды настроек, порддерживается text, dropdown, select

$settings = [
    'title' => 'Пример настройки 2',
    'block_settings' => [
        'htag'            => [
            'param110' => [
                'type'    => 'text',
                'title'   => 'Текстовый',
                'default' => '',
            ],
            'param222' => [
                'type'  => 'dropdown',
                'value' => [
                    'var1' => 'Вариант 1',
                    'var2' => 'Вариант 2',
                ],
                'title' => 'Список',
                'default' => 'var2',
            ],
            'param333' => [
                'type'    => 'select',
                'value'   => [
                    'var1' => 'в1',
                    'var2' => 'в2',
                    'var3' => 'в3',
                ],
                'default' => 'var2',
            ],
        ],
    ]
];

photo_2023-11-21_14-45-55

Эти настройки теперь отображаются в админке у заданных блоков, их можно включать-выключать и они сохраняются при сохранении материала, в объекте settings.

Пример:

"name": "text"
"value":"Текст блока"
"settings": {"myparam1": "style1"},

Однако на сайте эти настройки никак не проявляют себя, шаблон блока никак не использует эту информацию, ведь это ваша произвольная настройка, научите его:

Правим шаблон блока к которому добавили параметров bitrix/templates/.default/components/sprint.editor/blocks/.default/text.php

<?php /** @var $block array */

$settings = !empty($block['settings']) ? $block['settings'] : [];

$myparam1 = !empty($settings['myparam1']) ? $settings['myparam1'] : '';
$myparam2 = !empty($settings['myparam2']) ? $settings['myparam2'] : '';
?>

<?php if ($myparam1 == 'style1') { //выводим текст блока  в каком-либо оформлении ?>
    <div class="text-block-style1">
        <?= $block['value'] ?>
    </div>
<?php } else { //выводим текст блока без какого-либо оформления?>
    <?= $block['value'] ?>
<?php } ?>

Теперь блоки с настройкой myparam1 = style1 будут обёрнуты в div с классом text-block-style1

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

$settings = array(
    'title' => 'Пример настройки',

    'block_enabled' => array(
        'htag',
        'text',
        'gallery',
        'layout_1',
        'layout_2',
    ),
);

Пример настройки, меняем названия блоков

$settings = array(
    'block_titles' => array(
        'text' => 'Супертекст',
        'htag' => 'Суперзаголовок',
    ),
);

После создания такого файла он появится в выпадающем списке пользовательских настроек и после сохранения эти настройки можно увидеть уже у блоков в редакторе.

Selection_001.png

Selection_027.png

Отображение пользовательских настроек для текстовых блоков

Selection_072.png

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

файл с настройками local/admin/sprint.editor/settings/myexample.php

global $USER;

$userGroups = $USER->GetUserGroupArray();

$moderatorGroup1 = 5;
$moderatorGroup2 = 6;

if (in_array($moderatorGroup1, $userGroups)) {
    $settings = [
        'block_enabled' => [
            'htag',
            'text',
            'gallery',
        ],
    ];
} elseif (in_array($moderatorGroup2, $userGroups)) {
    $settings = [
        'block_enabled' => [
            'htag',
            'text',
            'gallery',
            'image',
            'twitter'
        ],
    ];
}

Пример настройки, заменяющий значения по умолчанию

В каждом блоке админки есть файл config.json в котором задано его название, сортировка, текст подсказки и некоторые общие настройки, отвечающие за отображение блока Их можно переопределить всё в том же файле пользовательских настроек

Параметры:

  • title - Название блока (его также можно переопределить через block_titles)
  • hint - Подсказка всплывающая при наведении на название блока
  • button - html-кнопка вставки блока, в которой можно указать например картинку
  • description -Описание, которое отображается под блоком в админке
$settings = array(
    'title' => 'Пример настройки',

    'block_configs' => [
        'text' => [
            'title'       => 'Текст',
            'hint'        => 'Подсказка',
            'button'      => 'Текст',
            'description' => 'Обратите внимание на этот текст',
        ],
        'htag' => [
            'description' => 'Обратите внимание на этот текст',
        ],
    ],
);

Результат

Selection_050.png

⚠️ **GitHub.com Fallback** ⚠️