Բլոկի տեղադրումը ցանկացած թեմփլեյթում (Drupal-ում բլոկի տեղադրում թեմփլեյթում)
Դրուպալ 8
twig ձևանմուշում հնարավոր չէ կանչել PHP կոդ, לכן պետք է ձևանմուշին փոխանցել արդեն պատրաստ բլոկ։ Եթե նոդի ձևանմուշին ցանկանում եք փոխանցել muuttable, կարող եք օգտագործել themename_preprocess_node() ֆունկցիան թեմայում, իսկ page ձևանմուշի համար՝ themename_preprocess_page()։ Փոխում եք muuttable-ը twig ձևանմուշին, և այնտեղ արդեն այն выводում եք։
Ադմինով ստեղծված բլոկներ
$block = \Drupal\block\Entity\Block::load('your_block_id'); $variables['block_output'] = \Drupal::entityTypeManager() ->getViewBuilder('block') ->view($block);
themename_preprocess_node() (նոդի ձևանմուշի) ֆունկցիայի մեջ բլոկը կարող եք вывести այս կերպ՝
function themename_preprocess_node(&$variables) { $block = \Drupal\block\Entity\Block::load('your_block_id'); $variables['block_output'] = \Drupal::entityTypeManager() ->getViewBuilder('block') ->view($block); }
node.html.twig ձևանմուշում հիմա կարելի է вывести բլոկը՝
{{ block_output }}
Փլագիններով ստեղծված բլոկներ
այդպիսի բլոկները նույնպես կարելի է вывести այնպես, ինչպես ադմինով ստեղծվածները, միայն դրանց выводի կոդը մի փոքր տարբերվում է՝
$block_manager = \Drupal::service('plugin.manager.block'); // Դուք կարող եք այստեղ նշել բլոկի համար ձեր կարգավորումները։ $config = []; $plugin_block = $block_manager->createInstance('system_breadcrumb_block', $config); // Որոշ բլոկների դիտման թույլտվություններ կարող են տարբեր լինել։ $access_result = $plugin_block->access(\Drupal::currentUser()); // Եթե թույլտվություն չկա, վերադարձնում է դատարկ զանգված։ if ($access_result->isForbidden()) { return []; } $render = $plugin_block->build(); // Այստեղ կարող է անհրաժեշտ լինել ավելացնել cache tag-եր կամ contexts. // Կարելի է նաև ավելացնել cache tag եւ context, render(), ::getCacheTags, ::getCacheContexts մեթոդներում։ return $render;
Այստեղ նույն կոդը՝ առանց մեկնաբանությունների․
$block_manager = \Drupal::service('plugin.manager.block'); $config = []; $plugin_block = $block_manager->createInstance('system_breadcrumb_block', $config); $access_result = $plugin_block->access(\Drupal::currentUser()); if ($access_result->isForbidden()) { return []; } $render = $plugin_block->build(); return $render;
Դրուպալ 7
7-րդ Դրուպալում ֆունկցիան նույնն է, միայն parameters–ները մի փոքր այլ են․ block և view փոխարեն օգտագործում ենք մեկը՝ block_view․
print render(module_invoke('block', 'block_view', '12'));
Views բլոկներ տեղադրելու համար կգրեք՝
print render(module_invoke('views', 'block_view', 'feedbacks-block'));
Այսպես Դրուպալ 7-ում մենք տեղադրում ենք view բլոկ․ նկատեք, որ առաջին բլոկի delta-ն այլևս թիվ չէ, գրում ենք պարզապես 'feedbacks-block'։
Դրուպալ 6
Այն հատվածում, որտեղ ցանկանում եք տեղադրել բլոկը, օգտագործեք module_invoke() ֆունկցիան․
$block = module_invoke('views', 'block', 'view', 'block_name'); print $block['content'];
Օրինակ, ադմինով ստեղծված բլոկ տեղադրելու համար օգտագործեք՝
$block = module_invoke('block', 'block', 'view', 12); print $block['content'];
որտեղ 12-ը բլոկի delta-ն է։
Views բլոկ տեղադրելու համար գրում ենք՝
$block = module_invoke('views', 'block', 'view', 'feedbacks-block_1'); print $block['content'];
որտեղ feedbacks-block_1-ը view-ի մեջ բլոկի անունն է․ feedbacks – view-ի անունը, իսկ block_1 – display-ի անունը view-ում։