ノード、CCKフィールド、およびビューテーマ用の複数の.tpl.phpファイルがあります。これらのテンプレートファイルには、物事を移動したり、リンクを削除したり、新しいリンクを作成したりするための多くのロジックが含まれています。これは、「Drupal Way.
私が正しく理解している場合、「Drupal Way」は、template.php
ファイルでプリプロセッサ関数を使用して変数を操作し、新しい変数を追加することです。それに関するいくつかの質問:
content-field-field_transmission_make_model.tpl
というCCKフィールドテンプレートがある場合、プリプロセッサ関数にどのように名前を付けますか?一般的な概要については、 前処理関数内の変数の操作に関する説明を読んでください 。
命名規則に関しては、これは通常非常に単純ですが、現在の例にはキャッチがあります(以下を参照)。
前処理関数のシグネチャは
[yourModuleName|yourThemeName]_preprocess_[themeFunctionName](&$variables)
そのため、テーマtemplate.phpファイル内のページテンプレートに1つ実装すると、
themeName_preprocess_page(&$variables)
ほとんどの場合、テーマ関数の名前は* .tpl.phpファイルの名前になり、.tpl.phpの終わりはなく、ハイフンの代わりにアンダースコアが付きます。 ただし、 テンプレートの提案 に基づいてテンプレートファイルが選択されると、catchがあります。追加の提案ではなく、ベース名に対して実装されています! (代替テンプレートファイルの提案は、プリプロセス関数自体に追加されます。)
_content-field-field_transmission_make_model.tpl.php
_はそのような提案であり、ベース名は_content-field.tpl.php
_であり、対応するテーマ関数は_content_field
_であるため、現在の例はそのようなケースの1つです。したがって、yourThemeName_preprocess_content_field(&$variables)
という名前のプリプロセス関数を実装し、その中で$ variables配列の利用可能なエントリを調べて、完全に異なるCCKではなく 'field_transmission_make_model'が実際に呼び出されるかどうかを確認する必要があります。フィールド、例:
_function yourThemeName_preprocess_content_field(&$variables) {
// Are we called for the right field?
if ('field_transmission_make_model' == $variables['field_name']) {
// Yes, add/manipulate entries within the variables array
$variables['new_entry'] = 'A useless new variable';
$variables['label'] = 'A useless change of the existing label variable';
}
}
_
(注:テストされていないコード、タイプミスに注意してください)
この後、テンプレートファイルで使用可能な新しい変数_$new_entry
_があり、_$label
_変数の内容が変更されているはずです($ variables配列内のすべてのトップレベルエントリは個別になります)テンプレートファイルの変数。配列インデックスに基づいて名前が付けられます)。
2番目の質問については、前処理関数の基本的な使用法はすべてのテンプレートファイルで同じですが、注意してください。
前処理関数の名前を特定するには、出力がどのテンプレートファイルまたはテーマ関数であるかを知る必要があります。これを行うには、- テーマ開発者 module。
これを詳細に説明するビデオがあります- http://buildamodule.com/video/drupal-theming-essentials-template-files-theme-function-overrides-and-preprocessing-functions-how-to- use-simple-preprocessing-functions