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;
}
}
// …
}
Перші два рядки підтверджують, що відображається сторінка не є демонстраційною сторінкою, яка використовується для показу місця розміщення регіонів тем.
Якщо вам потрібно рендерувати блоки по-іншому, більш імовірно, що ви зацікавлені в переосмисленні теми_block () у вашій темі або (навіть більше, ймовірно) у створенні спеціального файлу шаблонів block.tpl.php. Ще один спосіб змінити спосіб відображення блоків - це використовувати функцію попередньої обробки для блоків ( mock_preprocess_block () ).
drupal_set_region_content()
для встановлення вмісту регіону?