è $ node sempre disponibile in page.tpl.php


12

Ricevo periodicamente un errore per cui $ node non è definito in uno dei miei file modello. Ho una semplice condizione if che controlla il tipo di nodo visualizzato. Presumo che $ node sia sempre disponibile o sbaglio?


Potrebbe voler contrassegnare questo come risposta in modo che altri possano usare questa domanda :)
Bart

Risposte:


12

$ node non è necessariamente definito, dall'API Drupal 7 di page.tpl.php :

$ node: l'oggetto nodo, se esiste un nodo caricato automaticamente associato alla pagina, e l'ID nodo è il secondo argomento nel percorso della pagina (ad esempio nodo / 12345 e nodo / 12345 / revisioni, ma non commento / risposta / 12345).


8

Per impostazione predefinita, solo nelle pagine del nodo è definita la variabile $ node. Per la prima pagina (un feed), visualizzare le pagine, i commenti, ecc., Non lo sono.

Se vuoi che una variabile $ node sia definita in una pagina che non sia un nodo, dovrai modificare / creare la funzione MYTHEME_preprocess_page (& $ variabili) nel tuo file template.php tema.

Per evitare il tuo errore, nel file modello avvolgi la variabile $ node in un file

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

O rimuoverlo completamente


$ node può essere una variabile definita su page.tpl.php
Bart

1
per impostazione predefinita, sì, se è un NODE. In caso contrario, non è definito. Metti in chiaro i tuoi fatti e non sottoporre a votazione negativa una risposta valida.
iStryker

Istruzione "Solo nelle pagine dei nodi viene definita la variabile $ node." non è valido
Bart,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.