drupal_get_region_content()
, daha önce yapılan çağrılarla ayarlanan içeriği döndürür drupal_add_region_content()
, ancak sayfada block_page_build () aracılığıyla oluşturulan blokların içeriğini içermez .
Drupal kaynak kodunda "drupal_add_region_content" için arama yaparsanız, işlevin çağrıldığını göreceksiniz:
drupal_get_region_content()
install_display_output()
template_preprocess_maintenance_page()
update_task_list()
Yönetim sayfasındaki bloklar için belirlediğiniz, blokların hangi bölgelerde oluşturulacağı, ancak içeriğinin eklenmediği drupal_add_region_content()
; aslında, yukarıda listelenen işlevlerden hiçbiri ( drupal_add_region_content()
Drupal kurulumunu test etme kodu hariç, çağrılan tek işlevdir ) blok içeriğini oluşturmak / eklemek için değildir.
Blokları kendi kodunuzda oluşturmanız gerekirse, kullanılan kodu kontrol etmelisiniz block_page_build()
. Özellikle, bu muhtemelen sizin için daha yararlı olan koddur:
// 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;
}
}
// …
}
İlk iki satır, gösterilen sayfanın tema bölgelerinin nereye yerleştirildiğini göstermek için kullanılan demo sayfası olmadığını doğrular.
Blokları farklı bir şekilde oluşturmanız gerekiyorsa, temanızdaki theme_block () 'u geçersiz kılmak veya (hatta daha da büyük olasılıkla) özel bir block.tpl.php şablon dosyası oluşturmakla ilgilenmeniz daha olasıdır . Blokların oluşturulma şeklini değiştirmenin başka bir yolu, bloklar için bir önişleme işlevi kullanmaktır ( hook_preprocess_block () ).
drupal_set_region_content()
Bölge içeriğini ayarlamak için kullandınız mı?