logo

Types de blocs supplémentaires (EBT) – Nouvelle expérience de Layout Builder❗

Types de blocs supplémentaires (EBT) – types de blocs stylisés et personnalisables : diaporamas, onglets, cartes, accordéons et bien d’autres. Paramètres intégrés pour l’arrière-plan, la boîte DOM, les plugins JavaScript. Découvrez dès aujourd’hui le futur de la création de mises en page.

Démo des modules EBT Télécharger les modules EBT

❗Types de paragraphes supplémentaires (EPT) – Nouvelle expérience Paragraphes

Types de paragraphes supplémentaires (EPT) – ensemble de modules basé sur les paragraphes analogiques.

Démo des modules EPT Télécharger les modules EPT

Défilement

Insertion d’un bloc dans n’importe quel template (Drupal insert block into template)

05/07/2025, by Ivan

Drupal 8

Dans un template Twig, il n’est pas possible d’exécuter du code PHP directement. Il faut donc passer un bloc déjà préparé au template. Si vous devez transmettre une variable à un template de nœud, vous pouvez utiliser la fonction themename_preprocess_node() dans votre thème, ou pour un template de page, themename_preprocess_page(). Vous transmettez la variable au template Twig, puis vous l’affichez dans celui-ci.

Blocs créés via l’interface d’administration

$block = \Drupal\block\Entity\Block::load('your_block_id');
$variables['block_output'] = \Drupal::entityTypeManager()
  ->getViewBuilder('block')
  ->view($block);

Pour la fonction themename_preprocess_node() (template node), vous pouvez afficher ce bloc ainsi :

function themename_preprocess_node(&$variables) {
  $block = \Drupal\block\Entity\Block::load('your_block_id');
  $variables['block_output'] = \Drupal::entityTypeManager()
    ->getViewBuilder('block')
    ->view($block);
}

Dans le template node.html.twig, vous affichez ensuite le bloc :

{{ block_output }}

Blocs créés via plugins

Ces blocs peuvent être affichés de la même façon que ceux créés via l’administration, mais le code est un peu différent :

$block_manager = \Drupal::service('plugin.manager.block');
// Vous pouvez définir vos configurations ici.
$config = [];
$plugin_block = $block_manager->createInstance('system_breadcrumb_block', $config);
// Certains blocs peuvent avoir des restrictions d'accès.
$access_result = $plugin_block->access(\Drupal::currentUser());
// Renvoie un tableau vide si l'accès est refusé.
if ($access_result->isForbidden()) {
  return [];
}
$render = $plugin_block->build();
// Vous pouvez ajouter ici des tags ou contextes de cache.
// Ces tags et contextes peuvent aussi être définis dans les méthodes render(), ::getCacheTags(), ::getCacheContexts().
return $render;

Sans les commentaires :

$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;

Drupal 7

Pour Drupal 7, la fonction est similaire, mais les paramètres diffèrent légèrement. Au lieu de deux paramètres block et view, on utilise un seul paramètre block_view :

print render(module_invoke('block', 'block_view', '12'));

Pour un bloc Views, l’insertion ressemble à ceci :

print render(module_invoke('views', 'block_view', 'feedbacks-block'));

Notez que pour le delta du bloc, on utilise directement le nom du bloc Views, sans numéro, ici feedbacks-block.

Drupal 6

Pour insérer un bloc à l’endroit voulu, utilisez la fonction module_invoke() :

$block = module_invoke('views', 'block', 'view', 'block_name');
print $block['content'];

Par exemple, pour insérer un bloc créé via l’administration, utilisez ce code :

$block = module_invoke('block', 'block', 'view', 12);
print $block['content'];

Où 12 est le numéro (delta) du bloc.

Pour insérer un bloc Views, faites comme ceci :

$block = module_invoke('views', 'block', 'view', 'feedbacks-block_1');
print $block['content'];

feedbacks-block_1 est le nom du bloc dans la vue, feedbacks est le nom de la vue, et block_1 est le nom de l’affichage dans cette vue.