é $ node sempre disponível em page.tpl.php

12

Estou recebendo periodicamente um erro sobre a indefinição de $ node em um dos meus arquivos de modelo. Tenho uma condição if simples que verifica o tipo de nó que está sendo exibido. Eu assumi que o nó $ está sempre disponível ou estou errado?

desdém
fonte
Pode querer marcar isto como respondidas para que outros possam usar esta pergunta :)
Bart

Respostas:

12

O nó $ não está necessariamente definido, a partir da API page.tpl.php Drupal 7 :

$ node: o objeto do nó, se houver um nó carregado automaticamente associado à página, e o ID do nó for o segundo argumento no caminho da página (por exemplo, nó / 12345 e nó / 12345 / revisões, mas não comentar / responder / 12345).

Bart
fonte
8

Por padrão, apenas nas páginas do nó a variável $ node é definida. Para a primeira página (um feed), visualize páginas, comentários, etc., eles não são.

Se você deseja que uma variável $ node seja definida em uma página que não seja um nó, será necessário editar / criar a função MYTHEME_preprocess_page (& $ variable) no arquivo theme template.php.

Para evitar seu erro, em seu arquivo de modelo, enrole a variável $ node em um

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

Ou remova-o completamente

iStryker
fonte
$ nó pode ser uma variável definida em page.tpl.php
Bart
1
por padrão, sim, se for um NODE. Caso contrário, não está definido. Esclareça seus fatos e não vote com uma resposta válida.
IStryker
Instrução "Somente nas páginas do nó a variável $ node define." não é válido.
Bart