drupal_get_region_content()
ผลตอบแทนที่ได้เนื้อหาที่ได้รับการตั้งกับสายก่อนหน้านี้drupal_add_region_content()
แต่จะไม่รวมถึงเนื้อหาของบล็อกซึ่งจะแสดงในหน้าผ่านblock_page_build ()
หากคุณค้นหา "drupal_add_region_content" ในซอร์สโค้ด Drupal คุณจะสังเกตเห็นว่าฟังก์ชันนั้นถูกเรียกโดย:
drupal_get_region_content()
install_display_output()
template_preprocess_maintenance_page()
update_task_list()
สิ่งที่คุณตั้งไว้สำหรับบล็อกในหน้าการบริหารที่อยู่ในภูมิภาคซึ่งบล็อกที่จะแสดง แต่เนื้อหาของพวกเขาจะไม่ได้เพิ่มกับdrupal_add_region_content()
; ในความเป็นจริงไม่มีฟังก์ชั่นที่ระบุไว้ข้างต้น (ซึ่งเป็นฟังก์ชั่นเดียวที่เรียกdrupal_add_region_content()
ยกเว้นรหัสสำหรับการทดสอบการติดตั้ง Drupal) สำหรับการแสดงผล / เพิ่มเนื้อหาบล็อก
block_page_build()
หากคุณต้องการที่จะทำให้บล็อกในรหัสของคุณเองคุณควรตรวจสอบรหัสที่ใช้ในการ โดยเฉพาะอย่างยิ่งนี่คือรหัสที่อาจมีประโยชน์มากกว่าสำหรับคุณ:
// 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;
}
}
// …
}
สองบรรทัดแรกตรวจสอบหน้าที่แสดงอยู่ไม่ใช่หน้าตัวอย่างที่ใช้แสดงตำแหน่งที่วางธีมของพื้นที่
หากคุณต้องการสร้างการแสดงผลบล็อกในลักษณะที่แตกต่างกันมีความเป็นไปได้มากกว่าที่คุณสนใจที่จะเอาชนะtheme_block ()ในธีมของคุณหรือ (อาจมากกว่า) สร้างไฟล์เท็มเพลต block.tpl.php ที่กำหนดเอง อีกวิธีในการเปลี่ยนวิธีการแสดงบล็อกคือการใช้ฟังก์ชัน preprocess สำหรับบล็อก ( hook_preprocess_block () )
drupal_set_region_content()
เพื่อตั้งเนื้อหาภูมิภาคหรือไม่?