$ node est-il toujours disponible dans page.tpl.php

12

Je reçois périodiquement une erreur à propos de $ node non défini dans l'un de mes fichiers de modèle. J'ai une condition if simple qui vérifie le type de noeud affiché. J'ai supposé que $ node était toujours disponible, ou je me trompe?

Markward
la source
Je pourrais vouloir signaler cela comme une réponse afin que d'autres puissent utiliser cette question :)
Bart

Réponses:

12

$ node n'est pas nécessairement défini, à partir de l' API page.tpl.php Drupal 7 :

$ node: l'objet nœud, s'il existe un nœud chargé automatiquement associé à la page, et l'ID de nœud est le deuxième argument du chemin de la page (par exemple, nœud / 12345 et nœud / 12345 / révisions, mais pas commentaire / réponse / 12345).

Bart
la source
8

Par défaut, seule la variable $ node est définie sur les pages de nœuds. Pour la première page (un flux), les pages de visualisation, les commentaires, etc., elles ne le sont pas.

Si vous voulez qu'une variable $ node soit définie sur une page qui n'est pas un nœud, alors vous devrez éditer / créer la fonction MYTHEME_preprocess_page (& $ variables) dans votre fichier theme template.php.

Pour éviter votre erreur, enveloppez la variable $ node dans un fichier modèle

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

Ou supprimez-le complètement

iStryker
la source
$ node peut être une variable définie sur page.tpl.php
Bart
1
par défaut, oui, si c'est un NODE. Si ce n'est pas le cas, alors ce n'est pas défini. Obtenez vos faits directement et ne votez pas pour une réponse valide.
iStryker
Instruction "La variable $ node définit uniquement la page $ node." n'est pas valide.
Bart