回答:
テンプレート内の領域を印刷することはできますが、node.tpl.phpテンプレートのすぐに使用できる領域ではありません。それらを使用可能にするには、node.tpl.phpテンプレートで使用するすべての領域コンテンツを含む新しい変数を作成します。
新しいテンプレート変数の作成は、前処理関数を使用して行われます。テーマのtemplate.phpファイルで、次のような関数を作成します。
function mytheme_preprocess_node(&$variables) {
}mythemeテーマの短い名前に置き換えます。次に、Drupalがこの新しい前処理機能を認識するために、サイトのテーマレジストリを再構築する必要があります。これは、[ 設定] →[ 開発] →[ パフォーマンス ]に移動し、上部の[すべてのキャッシュをクリア]ボタンを押すのと同じくらい簡単です。
現在、前処理関数の動作方法は$variables、テンプレートで使用可能な変数に対応する配列を含むことです。たとえばnode.tpl.php、に$submittedは、著者の署名欄が含まれています。上記の前処理関数では、にあり$variables['submitted']ます。
あなたが持っているものを模倣するためにpage.tpl.php、$pageすべての領域を含むと呼ばれる配列がある場合、あなたは移入したいと思うでしょう$variables['page']。
問題は、$pagein node.tpl.phpがすでにtrue / false値で設定されていることです。これにより、ノードを単独で見るのかリストで見るのかを知ることができます。
そのため、名前の衝突を避けるために、$region代わりにデータを入力してください:
function mytheme_preprocess_node(&$variables) {
  // Get a list of all the regions for this theme
  foreach (system_region_list($GLOBALS['theme']) as $region_key => $region_name) {
    // Get the content for each region and add it to the $region variable
    if ($blocks = block_get_blocks_by_region($region_key)) {
      $variables['region'][$region_key] = $blocks;
    }
    else {
      $variables['region'][$region_key] = array();
    }
  }
}次に、テーマのnode.tpl.phpテンプレートで、次の手順を実行して任意の領域をレンダリングできます。
<?php print render($region['sidebar_first']); ?>sidebar_firstレンダリングする領域の名前はどこですか。
<?php print render(block_get_blocks_by_region('machine_name_of_your_region'));?>。ここから:webomelette.com/add-region-node-template
                    block_get_blocks_by_region()ブロックの配列のみを返すことを忘れないでください。リージョンとしてレンダリングしたい場合は、リージョンラッパーを追加する必要があります。