OnBeforeShowComponentBlocks - andreyryabin/sprint.editor GitHub Wiki
Автоматическое добавление блоков через обработчик OnBeforeShowComponentBlocks
Пригодится, если вам нужно вставить, например, блок с рекламой между блоками, а редактировать материал не хотите.
Создайте шаблон блока (например my_advert.php )
Расположите его в bitrix/templates/.default/components/sprint.editor/blocks/.default/my_advert.php
или в любом другом месте где компонент редактора может его найти
Добавьте обработчик в init.php который выполняется перед отображением блоков через компонент sprint.editor:blocks
Пример добавления блока my_advert после любого третьего блока
AddEventHandler(
'sprint.editor',
'OnBeforeShowComponentBlocks',
function (&$blocks) {
//добавляем пустой блок с рекламой
$advertBlock = [
'name' => 'my_advert',
'layout' => '0,0',
];
array_splice(
$blocks,
3,
0,
[$advertBlock]
);
}
);
Пример добавления блока my_advert после каждого третьего блока
AddEventHandler(
'sprint.editor',
'OnBeforeShowComponentBlocks',
function (&$blocks) {
//добавляем пустой блок с рекламой
$advertBlock = [
'name' => 'my_advert',
'layout' => '0,0',
];
//интервал между блоками с рекламой
$adverbInterval = 3;
//количество блоков
$cntBlocks = count($blocks);
//количество блоков с рекламой
$cntAdverbs = floor($cntBlocks / $adverbInterval);
for ($index = 1; $index <= $cntAdverbs; $index++) {
array_splice(
$blocks,
$index * $adverbInterval + ($index - 1),
0,
[$advertBlock]
);
}
}
);