web-dev-qa-db-fra.com

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

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

12
marksward

$ node n'est pas nécessairement défini, à partir de 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).

12
Bart

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

8
iStryker