kgaut.net // Développeur web PHP / Drupal freelance
contactez-moi

Drupal - Afficher un bloc où l'on veut

Cet article a été écrit il y a plus de quatre ans, son contenu n'est peut-être plus d'actualité.

On commence par récupérer le service de gestion des blocks :

$block_manager = \Drupal::service('plugin.manager.block');

Bloc « classique »

On construit le bloc que l'on souhaite via son id

$block_array = $block_manager->createInstance('system_breadcrumb_block', []);

Bloc généré par une vue

Pour un bloc généré via une vue il faut utiliser le format 

views_block:ID_VUE-ID_AFFICHAGE

par exemple : 

$block_array = $block_manager->createInstance('views_block:articles_recents-block_1', []);

Bloc formulaire exposé d'une vue

Pour un formulaire exposé (dans le cas d'une vue de recherche par exemple : 

views_exposed_filter_block:ID_VUE-ID_AFFICHAGE

par exemple : 

$block_array = $block_manager->createInstance('views_exposed_filter_block:recherche-page', []);

Génération du bloc

On génère le renderable array :

$block_renderable = $block_array->build()

et voila, plus qu'à l'afficher dans un template.

En plus court cela peut donner ça :

$block_manager = \Drupal::service('plugin.manager.block');
$variables['breadcrumbs']= [
    '#type' => 'container',
    "element-content" => $block_manager->createInstance('system_breadcrumb_block', [])->build(),
];

et dans le template twig :

{{ breadcrumbs }}

 

Contenus en rapport

snippet · 17 Oct 2022 Drupal 9 - Désactiver un bloc pour une page spécifique snippet · 15 Oct 2020 Drupal - Afficher un formulaire dans un bloc ou un contrôleur

Commentaires (0)