$ nodo siempre está disponible en page.tpl.php

12

Periódicamente recibo un error acerca de que $ node está indefinido en uno de mis archivos de plantilla. Tengo una simple condición if que verifica el tipo de nodo que se muestra. Supuse que $ node siempre está disponible, ¿o me equivoco?

puntería
fuente
Es posible que desee marcar esto como respondido para que otros puedan usar esta pregunta :)
Bart

Respuestas:

12

$ node no está necesariamente definido, desde la página.tpl.php Drupal 7 API :

$ nodo: el objeto de nodo, si hay un nodo cargado automáticamente asociado con la página, y la ID del nodo es el segundo argumento en la ruta de la página (por ejemplo, nodo / 12345 y nodo / 12345 / revisiones, pero no comentario / respuesta / 12345).

Bart
fuente
8

Por defecto, solo en las páginas de nodo se define la variable $ node. Para la página principal (un feed), ver páginas, comentarios, etc., no lo son.

Si desea una variable $ node definida en una página que no sea un nodo, entonces tendrá que editar / crear la función MYTHEME_preprocess_page (& $ variables) en su archivo de plantilla theme.php.

Para evitar su error, en su archivo de plantilla, ajuste la variable $ node en un

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

O eliminarlo por completo

iStryker
fuente
$ node puede ser una variable definida en page.tpl.php
Bart
1
por defecto, sí, si es un NODO. Si no es así, entonces no está definido. Aclare sus hechos y no rechace una respuesta válida.
iStryker
Declaración "Solo en las páginas de nodo se define la variable $ node". no es valido
Bart