ตัวอย่างข้างต้นอยู่ใกล้พอ แต่ก็ยังไม่ถูกต้อง แนวคิดคือคุณต้องสร้าง ID ของตัวเองของอินสแตนซ์บล็อก (ในกรณีของฉัน 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();
แก้ไข 1: ฉันตรวจสอบความคิดเห็นด้านบนจริง ๆ แล้ว - และมันถูกต้อง ไม่ชัดเจนว่า id เป็นสิ่งที่คุณต้องเกิดขึ้น ในฐานะที่เป็นการไถ่ถอนสำหรับความคิดเห็นง่อยของฉันฉันจะโพสต์โซลูชันเกี่ยวกับวิธีสร้างอินสแตนซ์บล็อกของเอนทิตีบล็อกที่กำหนดเอง:
$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