Saya perlu menampilkan beberapa daerah di templat html.tpl.php karena ini tidak berubah antara page.tpl.php dan page-front.tpl.php (hanya untuk menyebutkan dua). Pada dasarnya saya ingin menghindari duplikasi kode.
Namun sepertinya tidak ada yang terkait dengan daerah di html.tpl.php, saya juga tidak bisa mengambil apa pun menggunakan drupal_get_region_content (baik dengan dan tanpa parameter itu hanya mengembalikan array kosong).
Ide ide?
drupal_set_region_content()
untuk mengatur konten wilayah?drupal_add_region_content()
tetapi saya tidak melihat gunanya: Saya mengatur konten wilayah melalui antarmuka admin blok.drupal_add_region_content()
.Jawaban:
Saya memecahkan seperti ini:
dan kemudian saya bisa melakukannya
sumber
drupal_get_region_content()
mengembalikan konten yang telah ditetapkan dengan panggilan sebelumnyadrupal_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 memanggildrupal_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: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 () ).
sumber