drupal_get_region_content()
Gibt den Inhalt zurück, der bei früheren Aufrufen an festgelegt drupal_add_region_content()
wurde, enthält jedoch nicht den Inhalt der Blöcke, die auf der Seite über block_page_build () gerendert werden .
Wenn Sie im Drupal-Quellcode nach "drupal_add_region_content" suchen, werden Sie feststellen, dass die Funktion wie folgt aufgerufen wird:
drupal_get_region_content()
install_display_output()
template_preprocess_maintenance_page()
update_task_list()
Was Sie für die Blöcke auf der Verwaltungsseite festlegen, ist, in welchen Regionen die Blöcke gerendert werden, deren Inhalt jedoch nicht hinzugefügt wird drupal_add_region_content()
. Tatsächlich dient keine der oben aufgeführten Funktionen (die einzigen Funktionen, die aufgerufen werden drupal_add_region_content()
, mit Ausnahme des Codes zum Testen einer Drupal-Installation) zum Rendern / Hinzufügen des Blockinhalts.
Wenn Sie die Blöcke in Ihrem eigenen Code rendern müssen, sollten Sie den in verwendeten Code überprüfen block_page_build()
. Dies ist insbesondere der Code, der für Sie wahrscheinlich nützlicher ist:
// 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;
}
}
// …
}
In den ersten beiden Zeilen wird überprüft, ob die angezeigte Seite nicht die Demoseite ist, auf der angezeigt wird, wo die Themenbereiche platziert sind.
Wenn Sie die Blöcke auf andere Weise rendern müssen, ist es wahrscheinlicher, dass Sie theme_block () in Ihrem Design überschreiben oder (noch wahrscheinlicher) eine benutzerdefinierte block.tpl.php-Vorlagendatei erstellen möchten. Eine andere Möglichkeit, die Art und Weise zu ändern, in der die Blöcke gerendert werden, besteht darin, eine Vorverarbeitungsfunktion für die Blöcke zu verwenden ( hook_preprocess_block () ).
drupal_set_region_content()
den Regionsinhalt festgelegt?