drupal_get_region_content()
zwraca treść ustawioną przy użyciu poprzednich wywołań drupal_add_region_content()
, ale nie obejmuje treści bloków, które są renderowane na stronie za pomocą block_page_build () .
Jeśli szukasz „drupal_add_region_content” w kodzie źródłowym Drupal, zauważysz, że funkcja jest wywoływana przez:
drupal_get_region_content()
install_display_output()
template_preprocess_maintenance_page()
update_task_list()
Dla bloków na stronie administracyjnej ustawia się regiony, w których bloki będą renderowane, ale ich zawartość nie jest dodawana drupal_add_region_content()
; w rzeczywistości żadna z wymienionych powyżej funkcji (które są jedynymi wywoływanymi funkcjami drupal_add_region_content()
, z wyjątkiem kodu do testowania instalacji Drupal) nie służy do renderowania / dodawania zawartości bloku.
Jeśli chcesz wyrenderować bloki we własnym kodzie, powinieneś sprawdzić kod użyty w block_page_build()
. W szczególności jest to kod, który prawdopodobnie jest dla Ciebie bardziej przydatny:
// 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;
}
}
// …
}
Pierwsze dwa wiersze potwierdzają, że wyświetlana strona nie jest stroną demonstracyjną służącą do pokazania, gdzie znajdują się regiony tematyczne.
Jeśli chcesz wyrenderować bloki w inny sposób, bardziej prawdopodobne jest, że chcesz zastąpić theme_block () w swoim motywie lub (co bardziej prawdopodobne) utworzyć niestandardowy plik szablonu block.tpl.php. Innym sposobem zmiany sposobu renderowania bloków jest użycie funkcji wstępnego przetwarzania dla bloków ( hook_preprocess_block () ).
drupal_set_region_content()
ustawiłeś zawartość regionu?