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. Другой способ изменить способ визуализации блоков - использовать функцию препроцессора для блоков ( hook_preprocess_block () ).
drupal_set_region_content()
для установки контента региона?