私は自分のテーマを作成しようとしているときにこのクエリに来ました。フッターの上にあるフッタートップという名前のリージョンがあるとします。現時点では静的なHTMLコンテンツとサイトロゴのみが含まれます。
この領域に割り当てるブロックはありませんが、表示したいので、block-footertop.tplという名前のテンプレートファイルを作成しました。しかし、私の理解では(drupal docs から))この領域は、フッターの上部領域にブロックが割り当てられている場合にのみ表示され、そのようにすることを意図しています。 .phpには、このリージョンに配置された条件はありません。
<?php print $footertop; ?>
Smartyで行ったように、page.tpl.php内にテンプレートを「含める」方法があるかどうか知りたいのですが。私が行った検索のほとんどは、* hook_theme()*を含む結果を示しており、私が達成しようとしているものとは異なるように見えました。
私がこれを試みている理由は、私のpage.tpl.phpにある大量のhtmlマークアップを保存し、drupalテーマをよりよく理解するために純粋な好奇心を払うためです。
この初心者への提案/解決策drupal愛好家に感謝します。
前もって感謝します!!
まず、リージョンとテンプレート変数の違いを知っていることを確認してください。第二に、あなたの質問には異なるアプローチがあります:
A)カスタム領域+ブロック
確かに、新しいリージョンを定義できます。これは、次の2つの方法のいずれかで実行できます。
.info
ファイル(最適な方法)このようなregions[regionname] = Region name
template.php
ファイル(これを使用する必要性を試したことも、感じたこともありません)新しいリージョンを定義したら、ブロックとコンテンツを追加できます。新しいリージョンの定義をスキップして、必要に応じてフッターリージョンまたはリージョンにブロックを追加するだけです。
あなたの場合あなたのmyTheme.info
ファイルは次のようになります。
; $Id$
; @file: myTheme.info
regions[footertop] = Footer Top
領域変数($footertop
)
/**
* @file page.tpl.php
* $footertop contains all the HTML content for that region
* and the blocks belonging to that region
*/
print $footertop;
.info
ファイルはデータベースにキャッシュされるので、 キャッシュをクリア する必要があります
www.example.com/admin/build/block/add
footertop
リージョンに追加します:www.example.com/admin/build/block/list/myTheme
いつこのアプローチを使用する必要がありますか:静的なコンテンツや、サイトに追加するtext/htmlのスニペットのみがある場合適切な入力フィルターを選択することを忘れないでください。そうしないと、コンテンツの一部/すべてがフィルターで除外される可能性があります。
ソース: http://drupal.org/node/171224
B)テンプレート変数
すべてのテンプレートで使用できる新しい一般変数を定義したいと思います。何かのようなもの $content
または$is_front
。これを行う方法:古き良き友人 hook_theme
:)
新しいテンプレートファイルを作成するfootertop.tpl.php
そしてその中に、追加したい静的データを追加します
/**
* Implementation of hook_theme()
* @file template.php - in your active theme
*/
function myTheme_theme(&$existing, $type, $theme, $path) {
/*
* If you are sub-theming another theme, like Zen,
* you might need to do something like this
* $hooks = zen_theme($existing, $type, $theme, $path);
*/
$hooks['footertop'] = array(
'template' => 'footertop',
// 'arguments' => array(), // We could specify some arguments, useful when the content is not static
// 'path' => $path . 'to/file' // This is also usefull if your template is in a subfolder
);
return $hooks;
}
/**
* Now we make our variable available to other templates
* file template.php - in your active theme
*/
function myTheme_preprocess_page (&$vars, $hook) {
$vars['footertop'] = theme('footertop');
}
テンプレートに変数を追加するには、次のようにします。
/**
* @file e.g. page.tpl.php
*/
/* Some other code */
<?php print $footertop; ?>
/* Other code */
ソース:
proになりたい場合は、drupalテーマまたはdevelopmentこの件に関する本を自分で入手する必要があります。 Drupalテーマがどのように機能するかを理解するのに苦労していたとき、それは私に大いに役立ちました:)あなたはあなたのために正しいものを見つけることを定義します。