Drupal 7 - Afficher un bloc où l'on veut

Posté le Jeudi 8 octobre 2015 - 18:04
Dernière mise à jour le Vendredi 26 janvier 2018 - 18:35

Afficher un block créé via l'administration

$identifiant = 1; //c'est l'identifiant du bloc visible dans l'url lors de sa modification
$block = block_load('block', $identifiant);

$monBlock = _block_get_renderable_array(_block_render_blocks(array($block)));

//Code pour afficher le block
//Peut aussi être passé à un template via theme()
print render($monBlock); 

Afficher un block créé dans un module

$module = 'mon_module' //Le nom du module définissant le bloc
$identifiant = 'mon_bloc'; //le nom "machine" du bloc, défini dans HOOK_block_info()

$block = block_load($module, $identifiant);
$monBlock = _block_get_renderable_array(_block_render_blocks(array($block)));

//Code pour afficher le block
//Peut aussi être passé à un template via theme()
print render($monBlock); 

Afficher un block créé dans views

Note : pour cela il est préférable d'utiliser le type d'affichage "Embed" ou "Intégré" de Views, qui est fait pour ça.

$nom_vue = 'mon_bloc'; //le nom "machine" de la vue
$nom_affichage = 'block1' //le nom "machine" de l'affichage ("Display")

$block = block_load('views', $nom_vue.'-'.$nom_affichage);
$monBlock = _block_get_renderable_array(_block_render_blocks(array($block)));

//Code pour afficher le block
//Peut aussi être passé à un template via theme()
print render($monBlock); 

 

Aller plus loin ?

 

Commentaires

Salut Kevin,
Merci pour ce super post dont je vais m'empresser de tester et utiliser au besoin.

Ajouter un commentaire

Ne sera pas publié

CAPTCHA Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...