drupal_get_region_content()への以前の呼び出しで設定されたコンテンツを返しますが、block_page_build()をdrupal_add_region_content()介してページにレンダリングされるブロックのコンテンツは含まれません。
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;
      }
    }
    // …
  }
最初の2行は、表示されているページが、テーマ領域が配置されている場所を示すために使用されるデモページではないことを確認します。
別の方法でブロックをレンダリングする必要がある場合は、テーマ内のtheme_block()をオーバーライドするか、または(さらに可能性があります)カスタムblock.tpl.phpテンプレートファイルを作成することに関心がある可能性が高くなります。ブロックのレンダリング方法を変更する別の方法は、ブロックの前処理関数を使用することです(hook_preprocess_block())。
               
              
drupal_set_region_content()地域コンテンツの設定に使用しましたか?