テーマでカスタム領域を作成するにはどうすればよいですか?
質問
サイト全体になる新しいエリアを追加したいです。この新しい地域を私のテーマにするプロセスを説明してください。可能であれば、新しいカスタム領域を追加するために一般化してください。
解決
Theme.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と以前のバージョンの違いは、基本的に次のとおりです。
- 領域はaを使用して定義されていません
mytheme_regions()
Drupal 5で行われたように機能しますが、それらはmytheme.infoで定義されていますregions[]
Drupal 6テーマでも行われる指令。 - 領域は、Drupal関数を使用してレンダリングされます
render()
, 、変数のコンテンツを印刷する代わりに。
デフォルトの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のMission Statementエリアと同じディスプレイを使用する「Highlighted」という名前の領域が含まれるようになりました。また、「ヘルプ」という名前の領域も含まれています。デフォルトでは同じコンテンツを持っています $help
Drupal 6が使用する変数。
テーマ領域はあなたのテーマで定義されています.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のテーマ設定にアクセスして、地域をゾーンに割り当てる必要があります。
以下の手順に従って、テーマにカスタム領域を作成します。
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つのファイルで定義するだけです。
- theme.info
- page.tpl.php
theme.info
;;;;;;;;;;;;;;;;;;;;;
;; Regions
;;;;;;;;;;;;;;;;;;;;;
regions[navigation] = 'Navigation'
regions[header] = 'Top Bar'
regions[highlighted] = 'Highlighted'
regions[new_region_name] = 'Region Name' ;; Add New Region
page.tpl.php
今、この領域をレンダリングします
<?php if ($page['new_region']): ?>
<div class="new_region_class">
<?php print render($page['new_region']); ?>
</div>
<?php endif; ?>
ここですべてのキャッシュをクリアします、ここに行くと、あなたはあなたのテーマに新しい地域を持っています。ブロック構成ページで表示できます。
詳細については http://drupal.org/node/171205