J'ai besoin de sortir certaines régions dans le modèle html.tpl.php car celles-ci ne changent pas entre page.tpl.php et page-front.tpl.php (pour n'en nommer que deux). Fondamentalement, je veux éviter la duplication de code.
Cependant, il ne semble y avoir rien d'associé aux régions dans html.tpl.php, et je n'ai pas pu récupérer quoi que ce soit en utilisant drupal_get_region_content (à la fois avec et sans paramètres, il retourne juste un tableau vide).
Des idées?
drupal_set_region_content()
pour définir le contenu de la région?drupal_add_region_content()
mais je n'y vois aucun intérêt: je définis le contenu des régions via l'interface d'administration des blocs.drupal_add_region_content()
.Réponses:
J'ai résolu comme ceci:
et puis je pourrais faire
la source
drupal_get_region_content()
renvoie le contenu qui a été défini avec les appels précédents àdrupal_add_region_content()
, mais il n'inclut pas le contenu des blocs, qui sont rendus dans la page via block_page_build () .Si vous recherchez "drupal_add_region_content" dans le code source de Drupal, vous remarquerez que la fonction est appelée par:
drupal_get_region_content()
install_display_output()
template_preprocess_maintenance_page()
update_task_list()
Ce que vous définissez pour les blocs dans la page d'administration, c'est dans quelles régions les blocs seront rendus, mais leur contenu n'est pas ajouté avec
drupal_add_region_content()
; en fait, aucune des fonctions listées ci-dessus (qui sont les seules fonctions appelantesdrupal_add_region_content()
, à l'exception du code pour tester une installation Drupal) n'est pour rendre / ajouter le contenu du bloc.Si vous devez rendre les blocs dans votre propre code, vous devez vérifier le code utilisé dans
block_page_build()
. En particulier, c'est le code qui vous est probablement le plus utile:Les deux premières lignes vérifient que la page affichée n'est pas la page de démonstration utilisée pour montrer où les régions thématiques sont placées.
Si vous avez besoin de rendre les blocs d'une manière différente, il est plus probable que vous souhaitez remplacer theme_block () dans votre thème ou (plus probablement encore) créer un fichier de modèle block.tpl.php personnalisé. Une autre façon de modifier la façon dont les blocs sont rendus est d'utiliser une fonction de prétraitement pour les blocs ( hook_preprocess_block () ).
la source