回答:
テーマの.infoファイルで領域を定義します。参照:.infoファイルの構造
次に、関連するテンプレートタグをpage.tpl.phpファイルに配置する必要があります。
たとえばsidebar
、テーマの.infoファイルで領域を定義した場合<?php print render($page['sidebar']); ?>
、page.tpl.phpの関連する場所に以下を追加します。
もう1つのポイント:必要な地域をお見逃しなく!
regions[content] = Content
regions[help] = Help
regions[page_top] = Page top
regions[page_bottom] = Page bottom
詳細については、http://drupal.org/update/themes/6/7#closureを参照してください。
この点を明確にするには:独自のリージョンを定義する場合、必要なものを含め、使用しているすべてのものを定義する必要があります。つまり、追加のリージョンを定義することはできません。定義する場合は、すべてを定義する必要があります。
Drupal 7テーマ用の領域の作成は、Drupal 6領域用の領域の作成と同じです。Drupal 7と以前のバージョンの違いは、基本的に次のとおりです。
mytheme_regions()
、Drupal 5で行われたように関数を使用して定義されていませんが、regions[]
ディレクティブを使用してmytheme.infoで定義されています。これは、Drupal 6テーマでも行われます。render()
、変数のコンテンツを出力する代わりに、Drupal関数を使用してレンダリングされます。デフォルトのDrupal 7リージョンは次のとおりです。
regions[header] = Header
regions[highlighted] = Highlighted
regions[help] = Help
regions[content] = Content
regions[sidebar_first] = Left sidebar
regions[sidebar_second] = Right sidebar
regions[footer] = Footer
Drupal 7のコアテーマには、Drupal 6のミッションステートメント領域と同じ表示を使用する「強調表示」という名前の領域が含まれるようになりました。また、デフォルトで$help
Drupal 6が使用する変数と同じコンテンツを持つ「help」という名前の領域も含まれます。
テーマ領域は、.infoファイルあなたのテーマで定義されている-を参照してドキュメントを。線を追加regions[corner] = Corner
して、コーナー領域を取得します。
次に、page.tpl.phpファイルを編集して<php print render($corner); ?>
、リージョンを表示する場所を追加する必要があります。テーマにpage.tpl.phpがない場合は、ベーステーマまたはシステムモジュールからコピーします。
一般的な落とし穴:
theme.infoファイルに領域が宣言されていない場合、Drupalのデフォルト領域が使用されていました。追加する場合は、デフォルトの領域を再宣言する必要があります。もちろん、任意の地域を削除できますが、必要な地域をサポートしてください。もう一度ドキュメントを参照してください。
.infoファイルへの変更またはテーマへの新しいファイルの追加(page.tpl.phpなど)は、キャッシュをクリアした後にのみ通知されます。
非常に人気のあるベーステーマであるOmegaでは、page.tpl.phpを変更する必要はなく、.infoファイルだけを変更する必要があります。ただし、UIのテーマ設定にアクセスして、リージョンをゾーンに割り当てる必要があります。
regions[content] = Content
D7で唯一必要な領域は? drupal.org/node/171205#regionsはこれを暗示するようだが、その後drupal.org/node/171224必要な領域があることを言ってcontent
、help
、page_top
およびpage_bottom
content
非常に重要です。help
(ヘルプメッセージを出力するために)コアによってサポートされ、page_bottom
おそらく下部のjsが印刷される場所でありpage_top
、コアツールバーなどのnavbarに使用されるようです。
以下の手順に従って、テーマにカスタムリージョンを作成します。
theme.infoファイルに移動して、この行を追加します。
regions[machine_name_of_your_region] = Name of your region
ノードテンプレートでリージョンブロックを呼び出すこともできますが、通常はテーマのページテンプレートにリージョンを追加します。これは通常page.tpl.phpですが、異なるページのカスタムテンプレートファイルがある場合は、それらも編集します。新しい領域は、新しい領域を追加するテンプレートを中心に構築されたページにのみ表示されます。新しい領域を表示したい場所に貼り付けます。
<?php if ($page['machine_name_of_your_region']): ?>
<div id="sidebar-first" class="column sidebar"><div class="section">
<?php print render($page['machine_name_of_your_region']); ?>
</div></div> <!-- /.section, /#sidebar-first -->
<?php endif; ?>
構成-パフォーマンス-すべてのキャッシュをクリア
2つのファイルで定義する必要があります。
;;;;;;;;;;;;;;;;;;;;;
;; Regions
;;;;;;;;;;;;;;;;;;;;;
regions[navigation] = 'Navigation'
regions[header] = 'Top Bar'
regions[highlighted] = 'Highlighted'
regions[new_region_name] = 'Region Name' ;; Add New Region
この領域をレンダリングします
<?php if ($page['new_region']): ?>
<div class="new_region_class">
<?php print render($page['new_region']); ?>
</div>
<?php endif; ?>
すべてのキャッシュをクリアします。これで、テーマに新しいリージョンができました。ブロック構成ページで確認できます。
詳細については、http://drupal.org/node/171205をご覧ください