テーマでカスタム領域を作成するにはどうすればよいですか?

drupal.stackexchange https://drupal.stackexchange.com/questions/129

  •  16-10-2019
  •  | 
  •  

質問

サイト全体になる新しいエリアを追加したいです。この新しい地域を私のテーマにするプロセスを説明してください。可能であれば、新しいカスタム領域を追加するために一般化してください。

役に立ちましたか?

解決

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のテーマ設定にアクセスして、地域をゾーンに割り当てる必要があります。

以下の手順に従って、テーマにカスタム領域を作成します。

  1. theme.infoファイルに移動して、この行を追加します。

    regions[machine_name_of_your_region] = Name of your region
    
  2. ノードテンプレートの領域ブロックも呼び出すこともできますが、通常、テーマのページテンプレートに領域を追加します。これは通常、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; ?>
    
  3. 構成 - パフォーマンス - すべてのキャッシュをクリアします

テーマに新しい地域を作成します

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

ライセンス: CC-BY-SA帰属
所属していません drupal.stackexchange
scroll top