দুটি ধরণের ব্লক রয়েছে এবং দুটি সরবরাহ করার পদ্ধতিটি কিছুটা আলাদা:
সামগ্রী ব্লক
সামগ্রী ব্লকগুলি হ'ল ব্লক যা আপনি ইন্টারফেসে তৈরি করেন। এগুলি ক্ষেত্র ইত্যাদির সাথে নোডের কনফিগারযোগ্য ডেটা স্ট্রাকচারের মতো etc.
$bid = ??? // Get the block id through config, SQL or some other means
$block = \Drupal\block_content\Entity\BlockContent::load($bid);
$render = \Drupal::entityTypeManager()->
getViewBuilder('block_content')->view($block);
return $render;
প্লাগিন ব্লক
ব্লকগুলি বিভিন্ন মডিউলগুলিতে সংজ্ঞায়িত প্লাগইনও হতে পারে। একটি উদাহরণ ব্রেডক্রাম্ব ব্লক হতে পারে। আপনি যদি এইগুলি রেন্ডার করতে চান তবে আপনাকে ব্লক প্লাগইন পরিচালক ব্যবহার করতে হবে।
$block_manager = \Drupal::service('plugin.manager.block');
// You can hard code configuration or you load from settings.
$config = [];
$plugin_block = $block_manager->createInstance('system_breadcrumb_block', $config);
// Some blocks might implement access check.
$access_result = $plugin_block->access(\Drupal::currentUser());
// Return empty render array if user doesn't have access.
// $access_result can be boolean or an AccessResult class
if (is_object($access_result) && $access_result->isForbidden() || is_bool($access_result) && !$access_result) {
// You might need to add some cache tags/contexts.
return [];
}
$render = $plugin_block->build();
// In some cases, you need to add the cache tags/context depending on
// the block implemention. As it's possible to add the cache tags and
// contexts in the render method and in ::getCacheTags and
// ::getCacheContexts methods.
return $render;
সত্তা কনফিগার করুন
দুটি প্রকারের জন্য ভাগ করাগুলি হ'ল ব্লকগুলি হ'ল এটি হ'ল একবার এগুলি আপনি কোনও অঞ্চলে sertোকানোর পরে আপনি একটি কনফিগার সত্তা তৈরি করবেন যাতে ব্লকের সমস্ত সেটিংস রয়েছে। কিছু ক্ষেত্রে এটি কনফিগার সত্তাগুলি হ্যান্ডলিংয়ে আরও কার্যকর হবে। যেহেতু একই ব্লকটি বিভিন্ন কনফিগারেশন সহ এবং একাধিক অঞ্চলে থাকতে পারে, তাই এটি ব্লক কনফিগারেশন সত্তা ব্যবহার করে আরও জটিল হতে পারে। সুন্দর জিনিসটি হ'ল আপনি নির্দিষ্ট কনফিগারেশনের সাথে একটি ব্লক রেন্ডার করতে চাইতে পারেন, সবচেয়ে খারাপ বিষয় হ'ল কনফিগারেশন আইডিগুলি ইন্টারফেসের সাথে গোলযোগের মাধ্যমে পরিবর্তন করতে পারে, তাই ব্যবহারকারীরা ব্লক ইন্টারফেসটি ব্যবহার করার পরে কোডটি কাজ না করে।
$block = \Drupal\block\Entity\Block::load('config.id');
$render = \Drupal::entityTypeManager()
->getViewBuilder('block')
->view($block);
return $render;