drupal_get_region_content()
trả về nội dung đã được đặt với các cuộc gọi trước đó drupal_add_region_content()
, nhưng nó không bao gồm nội dung của các khối được hiển thị trong trang thông qua block_page_build () .
Nếu bạn tìm kiếm "drupal_add_region_content" trong mã nguồn Drupal, bạn sẽ nhận thấy rằng hàm được gọi bởi:
drupal_get_region_content()
install_display_output()
template_preprocess_maintenance_page()
update_task_list()
Những gì bạn đặt cho các khối trong trang quản trị là trong đó các khối sẽ được hiển thị, nhưng nội dung của chúng không được thêm vào drupal_add_region_content()
; trong thực tế, không có chức năng nào được liệt kê ở trên (là các chức năng duy nhất gọi drupal_add_region_content()
, ngoại trừ mã để kiểm tra cài đặt Drupal) là để kết xuất / thêm nội dung khối.
Nếu bạn cần kết xuất các khối trong mã của riêng mình, bạn nên kiểm tra mã được sử dụng trong block_page_build()
. Đặc biệt, đây là mã có thể hữu ích hơn cho bạn:
// 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;
}
}
// …
}
Hai dòng đầu tiên xác minh trang đang hiển thị không phải là trang demo được sử dụng để hiển thị nơi các khu vực chủ đề được đặt.
Nếu bạn cần kết xuất các khối theo một cách khác, có thể bạn sẽ quan tâm hơn đến việc ghi đè theme_block () trong chủ đề của mình hoặc (thậm chí có thể hơn) tạo tệp mẫu block.tpl.php tùy chỉnh. Một cách khác để thay đổi cách các khối được hiển thị là sử dụng hàm tiền xử lý cho các khối ( hook_pre process_block () ).
drupal_set_region_content()
để thiết lập nội dung khu vực?