drupal_get_region_content()
에 대한 이전 호출로 설정된 내용을 반환 drupal_add_region_content()
하지만 block_page_build ()를 통해 페이지에서 렌더링되는 블록의 내용은 포함하지 않습니다 .
Drupal 소스 코드에서 "drupal_add_region_content"를 검색하면 다음과 같은 함수가 호출됩니다.
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 템플릿 파일을 만드는 것이 더 좋습니다. 블록이 렌더링되는 방식을 변경하는 또 다른 방법은 블록에 대한 사전 프로세스 함수 ( hook_preprocess_block () )를 사용하는 것입니다.
drupal_set_region_content()
지역 내용을 설정 하셨습니까 ?