$ nodeはpage.tpl.phpで常に利用可能です


12

テンプレートファイルの1つで$ nodeが未定義であるというエラーが定期的に表示されます。表示されているノードタイプをチェックする単純なif条件があります。$ nodeは常に利用可能であると仮定しましたか、それとも間違っていますか?


他の人がこの質問を使用できるように、回答済みとしてフラグを立てたい場合があります:)
バート

回答:


12

page.tpl.php Drupal 7 APIからの$ nodeは必ずしも定義されていません:

$ node:ページに関連付けられた自動ロードノードがあり、ノードIDがページのパスの2番目の引数である場合のノードオブジェクト(例:node / 12345およびnode / 12345 / revisions、ただしcomment / reply / 12345)。


8

デフォルトでは、ノードページでのみ$ node変数が定義されています。フロントページ(フィード)、ビューページ、コメントなどについては、そうではありません。

ノードではないページで$ node変数を定義したい場合は、テーマtemplate.phpファイルでMYTHEME_preprocess_page(&$ variables)関数を編集/作成する必要があります。

エラーを回避するには、テンプレートファイルで$ node変数を

if (isset($node)) {
  // do something with $node
}

または完全に削除します


$ nodeはpage.tpl.phpで定義された変数にすることができます
バート

1
NODEの場合、デフォルトでyes。そうでない場合は、定義されていません。事実を正確に把握し、有効な答えを否定しないでください。
-iStryker

ステートメント "ノードページ上でのみ$ node変数が定義されます。" 無効です。
バート
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.