drupal_get_region_content()
restituisce il contenuto che è stato impostato con le precedenti chiamate a drupal_add_region_content()
, ma non include il contenuto dei blocchi, che sono resi nella pagina tramite block_page_build () .
Se cerchi "drupal_add_region_content" nel codice sorgente di Drupal, noterai che la funzione viene chiamata da:
drupal_get_region_content()
install_display_output()
template_preprocess_maintenance_page()
update_task_list()
Ciò che si imposta per i blocchi nella pagina amministrativa è in quali aree verranno resi i blocchi, ma il loro contenuto non viene aggiunto drupal_add_region_content()
; infatti, nessuna delle funzioni sopra elencate (che sono le uniche funzioni che chiamano drupal_add_region_content()
, tranne il codice per testare un'installazione di Drupal) è per il rendering / aggiunta del contenuto del blocco.
Se è necessario eseguire il rendering dei blocchi nel proprio codice, è necessario controllare il codice utilizzato in block_page_build()
. In particolare, questo è il codice che è probabilmente più utile per te:
// 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;
}
}
// …
}
Le prime due righe verificano che la pagina visualizzata non sia la pagina dimostrativa utilizzata per mostrare dove sono posizionate le aree tematiche.
Se devi renderizzare i blocchi in un modo diverso, è più probabile che tu sia interessato a sovrascrivere theme_block () nel tuo tema, o (ancora più probabilmente) creare un file modello block.tpl.php personalizzato. Un altro modo per modificare la modalità di rendering dei blocchi è utilizzare una funzione di preelaborazione per i blocchi ( hook_preprocess_block () ).
drupal_set_region_content()
per impostare il contenuto della regione?