Wiki
Clone wikisprint.editor / OnBeforeShowComponentBlocks
Автоматическое добавление блоков через обработчик 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] ); } } );
Updated