ऊपर दिया गया उदाहरण काफी करीब है लेकिन फिर भी सही नहीं है। विचार यह है कि आपको ब्लॉक उदाहरण की अपनी आईडी के साथ आना होगा (मेरे मामले में 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