Наведений вище приклад є досить близьким, але все ще не правильним. Ідея полягає в тому, що ви повинні придумати свій власний ідентифікатор екземпляра блоку (у моєму випадку devel_execute_php_1112 (можливо, тому, що я намагався змусити його працювати 1112 разів, це залишиться загадкою)), а потім власне ідентифікатор блоку (той, що оголошено для користувацьких блоків в анотації) та теми. Тоді просто встановіть регіон, і ви добре їхати. Створено екземпляр блоку під потрібним регіоном.
$blockEntityManager = \Drupal::service('entity.manager')->getStorage('block');
$block = $blockEntityManager->create(
array(
'id'=> 'devel_execute_php_1112',
'plugin' => 'devel_execute_php',
'theme' => 'seven'
)
);
$block->setRegion('content');
$block->save();
edit1: Я фактично пізніше перевірив коментар вище - і це правильно. Просто не ясно, що ідентифікатор - це те, що вам потрібно придумати. Як викуп мого коментаря з кульгавим коментарем я опублікую рішення про те, як створити блок-екземпляр спеціальної сутності блоку:
$blockEntityManager = \Drupal::service('entity.manager')->getStorage('block');
$block = $blockEntityManager->create(
array(
'id'=> 'ggggggggsssssss',
'plugin' => 'block_content:79d53b4e-9e60-4f97-befc-101da919bb7a',
'theme' => 'visitb_he_theme'
)
);
$block->setRegion('content');
в основному те саме, але для плагіна ви пишете block_content: uuid_of_custom_block_entity_instance