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 appelantes drupal_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:
// Fetch a list of regions for the current theme.
$all_regions = system_region_list($theme);
$item = menu_get_item();
if ($item['path'] != 'admin/structure/block/demo/' . $theme) {
// Load all region content assigned via blocks.
foreach (array_keys($all_regions) as $region) {
// Assign blocks to region.
if ($blocks = block_get_blocks_by_region($region)) {
$page[$region] = $blocks;
}
}
// …
}
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 () ).
drupal_set_region_content()
pour définir le contenu de la région?