drupal_get_region_content()
devuelve el contenido que se configuró con llamadas anteriores a drupal_add_region_content()
, pero no incluye el contenido de los bloques, que se representan en la página a través de block_page_build () .
Si busca "drupal_add_region_content" en el código fuente de Drupal, notará que la función es llamada por:
drupal_get_region_content()
install_display_output()
template_preprocess_maintenance_page()
update_task_list()
Lo que configura para los bloques en la página administrativa es en qué regiones se representarán los bloques, pero su contenido no se agrega drupal_add_region_content()
; de hecho, ninguna de las funciones enumeradas anteriormente (que son las únicas funciones que llaman drupal_add_region_content()
, excepto el código para probar una instalación de Drupal) es para representar / agregar el contenido del bloque.
Si necesita representar los bloques en su propio código, debe verificar el código utilizado en block_page_build()
. En particular, este es el código que probablemente sea más útil para usted:
// 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;
}
}
// …
}
Las primeras dos líneas verifican que la página que se muestra no es la página de demostración utilizada para mostrar dónde se ubican las regiones temáticas.
Si necesita renderizar los bloques de una manera diferente, es más probable que esté interesado en anular theme_block () en su tema, o (aún más probable) crear un archivo de plantilla block.tpl.php personalizado. Otra forma de alterar la forma en que se representan los bloques es usar una función de preproceso para los bloques ( hook_preprocess_block () ).
drupal_set_region_content()
configurar el contenido de la región?