web-dev-qa-db-ja.com

テーマにカスタムリージョンを作成するにはどうすればよいですか?

サイト全体になる新しいエリアを追加したい。この新しいリージョンを私のテーマに組み込むプロセスについて説明します。可能であれば、新しいカスタムリージョンを追加するために一般化します。

58
palbakulich

テーマの.infoファイルでリージョンを定義します。参照: 。infoファイルの構造

次に、関連するテンプレートタグをpage.tpl.phpファイルに配置する必要があります。

たとえば、テーマ.infoファイルで領域sidebarを定義した場合は、page.tpl.phpの関連する場所に<?php print render($page['sidebar']); ?>を追加します。

68
Camsoft

もう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 にあります。

この点を明確にするために:独自のリージョンを定義する場合、必要なものを含め、使用しているすべてのものを定義する必要があります。つまり、追加のリージョンを定義するだけではなく、いずれかを定義する場合は、それらすべてを定義する必要があります。

20
laura

Drupal 7テーマのリージョンの作成は、Drupal 6リージョンのリージョンの作成と同じです。 Drupal 7と以前のバージョンの違いは本質的に次のとおりです。

  • Drupal 5で行われたように、領域はmytheme_regions()関数を使用して定義されていませんが、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のミッションステートメントエリアと同じ表示を使用する「ハイライト」という名前の領域が含まれるようになりました。また、「help」という名前の領域も含まれています。これには、デフォルトで、Drupal 6が使用する_$help_変数と同じ内容が含まれます。

9
kiamlaluno

テーマ領域は、テーマの.infoファイルで定義されています— docs を参照してください。コーナー領域を取得するには、_regions[corner] = Corner_で行を追加するだけです。

次に、page.tpl.phpファイルを編集して、領域を表示する場所に<php print render($corner); ?>を追加する必要があります。テーマにpage.tpl.phpがない場合は、ベーステーマまたはシステムモジュールからコピーします。

一般的な落とし穴:

  • Theme.infoファイルでリージョンが宣言されていない場合は、Drupalデフォルトリージョンが使用されていました。追加する場合は、デフォルトリージョンを再宣言する必要があります。もちろん、リージョンを削除しますが、必要なリージョンをサポートしてください docs を再度参照してください。

  • .infoファイルの変更またはテーマへの新しいファイルの追加(page.tpl.phpなど)は、キャッシュをクリアした後にのみ通知されます。

  • 非常に人気のあるベーステーマであるオメガは、.infoファイルだけで、page.tpl.phpを変更する必要はありません。ただし、UIのテーマ設定にアクセスして、領域をゾーンに割り当てる必要があります。

4
Capi Etheriel

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

  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
Astha chauhan

テーマで新しいリージョンを作成する

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

0
gsjha