drupal_get_region_content()
mengembalikan konten yang telah ditetapkan dengan panggilan sebelumnya drupal_add_region_content()
, tetapi tidak menyertakan konten blok, yang dirender di halaman melalui block_page_build () .
Jika Anda mencari "drupal_add_region_content" dalam kode sumber Drupal, Anda akan melihat bahwa fungsinya dipanggil oleh:
drupal_get_region_content()
install_display_output()
template_preprocess_maintenance_page()
update_task_list()
Apa yang Anda tetapkan untuk blok di halaman administratif adalah di wilayah mana blok akan diberikan, tetapi kontennya tidak ditambahkan dengan drupal_add_region_content()
; pada kenyataannya, tidak ada fungsi yang tercantum di atas (yang merupakan satu-satunya fungsi yang memanggil drupal_add_region_content()
, kecuali kode untuk menguji instalasi Drupal) adalah untuk merender / menambahkan konten blok.
Jika Anda perlu merender blok dalam kode Anda sendiri, Anda harus memeriksa kode yang digunakan block_page_build()
. Secara khusus, ini adalah kode yang mungkin lebih berguna bagi Anda:
// 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;
}
}
// …
}
Dua baris pertama memverifikasi halaman yang ditampilkan bukan halaman demo yang digunakan untuk menunjukkan di mana kawasan tema ditempatkan.
Jika Anda perlu merender blok dengan cara yang berbeda, kemungkinan besar Anda tertarik untuk mengganti theme_block () pada tema Anda, atau (bahkan lebih mungkin) membuat file template block.tpl.php kustom. Cara lain untuk mengubah cara blok diberikan adalah dengan menggunakan fungsi preprocess untuk blok ( hook_preprocess_block () ).
drupal_set_region_content()
untuk mengatur konten wilayah?