web-dev-qa-db-ja.com

テンプレートファイル内からノードの分類用語を検出する

Drupal 7のサイトで、コンテンツタイプがイベントです。

5つのオプション(パーティー、会議、会議など)を持つ「イベントタイプ」と呼ばれる分類法があります。

スタンドアロンイベントノードのスタイルを設定するためのnode--event.tpl.phpという名前のテンプレートが1つあります。

テンプレートファイル内から特定のイベントノードに適用される分類用語を検出するにはどうすればよいですか?イベントに関連付けられた分類用語に基づいて、プレゼンテーションロジックの一部を変更する必要があります。

URLで分類法を使用していないため、イベントタイプを検出する別の方法を見つける必要があります。 Develで、分類基準の値を操作するための値が表示されないようです。

2
Randy Burgess

最初の回答で触れたように、前処理関数を使用する必要がありますが、おそらくノードテンプレート用です。

_node.tpl.php_テンプレート(およびすべての導関数)の場合、関数は次のように定義されます。

_MYTHEME_preprocess_node(&$vars) {
}_

テーマの_template.php_ファイルが表示されます。

Drupalがこの関数を認識して実行するようにテーマレジストリをリセットするには、Drupalキャッシュをクリアする必要があります。

関数の_$vars_引数は、後でtplファイルに現れるすべてのテンプレート変数を含む配列です(_$vars['foo']_は、tplファイルでは_<?php print $foo; ?>_として利用されます)。

これには、ネイティブの_$node_オブジェクトも含まれます。これにより、_$node->taxonomy_を検査し、それに応じて後続の変数を作成できます。これらはtplファイルで利用できます。

_$vars_のコンポーネントを検査および発見する最良の方法は、Develモジュールのdpm()関数を使用することです。この関数は、変数をテーマのメッセージボックスに適切に出力します。

したがって、develを有効にし、_template.php_に以下を作成し、キャッシュをクリアし、ノードの表示を更新して、そこから作業します。

_MYTHEME_preprocess_node(&$vars) {
  dpm($vars);
}_

また、Drupalcon Copenhagenまたは DrupalハンドブックページDrupalプリプロセス関数のセッション にも興味があるかもしれません。

2
c4rl