Ví dụ trên là đủ gần nhưng vẫn không đúng. Ý tưởng là bạn phải đưa ra id của chính đối tượng khối (trong trường hợp của tôi là devel_execute_php_1112 (có thể vì tôi đã cố gắng làm cho nó hoạt động 1112 lần, nó sẽ vẫn là bí mật) và sau đó là id khối thực sự được khai báo cho các khối tùy chỉnh trong chú thích) và chủ đề. Sau đó, chỉ cần thiết lập khu vực và bạn là tốt để đi. Tạo một thể hiện của một khối dưới vùng mong muốn.
$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: Tôi thực sự đã kiểm tra sau bình luận ở trên - và nó đúng. Nó chỉ không rõ ràng rằng id là một cái gì đó mà bạn phải đưa ra. Để chuộc lại nhận xét khập khiễng của tôi, tôi sẽ đăng một giải pháp về cách tạo phiên bản khối của thực thể khối tùy chỉnh:
$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');
về cơ bản là giống nhau nhưng đối với một plugin bạn viết block_content: uuid_of_custom_block_entity_instance