codice php per identificare un campo
Ciao; una domanda semplice da un non programmatore.
Voglio far apparire un blocco laterale del menu solamente nelle pagine che contengono il campo foto_squadra . Qualcuno mi puo' dire il codice php da inserire nell'apposito riquadro? (sotto: amministra->blocchi->configura->"Mostra se il seguente codice PHP restituisce TRUE") .
Grazie.

Risposte
sembrava più semplice
Ti mostro come sono riuscito a farlo, ma premetto che non è molto elegante...
Presupposti:
1) hai creato un tuo content personalizzato con un campo "foto_squadra"
2) ogni volta che visualizzi un nodo con il campo "foto_squadra" non vuoto, vuoi visualizzare un blocco
3) vuoi usare il php per abilitare la condizione di visibilità del blocco
Soluzioni:
in blocco>visibilità : verificare la presenza di un campo "foto_squadra" valido nel nodo e restituire TRUE
Problemi:
non sono riuscito a ottenere, nel blocco, un riferimento valido al campo presente nel nodo
Alternative:
1) studiare di più :-)
2) farla sporca
In attesa che qualcuno mi insegni come farlo meglio, questo è il modo per farla sporca.
1) devi avere un body nel tuo content
2) alla fine del body e comunque dopo un >!--break--<, in modo che non sia nel teaser, aggiungi il seguente codice php per dichiarare una variabile globale (io l'ho chiamata $my_test_block ):
<!--break--><?php
global $my_test_block;
$my_test_block=true;
?>
ovviamente questo codice lo aggiungi solo nei nodi in cui vuoi che compaia il blocco
3) nelle Impostazioni specifiche di visibilità per pagina metti questo codice:
<?phpglobal $my_test_block;
if ($my_test_block) {
return TRUE;
}
?>
OK a questo punto dovresti vedere il blocco tutte le volte che visualizzi il nodo.
Attenzione:
Dipende da cosa metti nel blocco, se questo comportamento per te è ok o no.
Esistono altri modi per visualizzare blocchi condizionali, ad esempio se usi la tassonomia: cerca in google "drupal block visibility taxonomy"
In effetti questo è un modo un po' "barbaro" e manuale : spero che qualcuno più esperto ci insegni come farlo meglio...
Soluzione: codice php per identificare un campo
Penso di aver risolto il problema (almeno lo era per me...)
La variabile $node non è globale, ma è resa disponibile ai template da PHPTemplate.
All'interno di un blocco non è visibile e occorre fare ricorso alla funzione arg() [http://api.drupal.org/api/function/arg] per recuperare l'id del nodo correntemente visualizzato e il suo contenuto.
Nella configurazione del blocco, in "Impostazioni specifiche di visibilità per pagina", si deve utilizzare questo codice PHP:
(in questo esempio testo per la presenza di un nomefile nel mio campo immagine "field_image[0]['filename']"
In questo modo il blocco è visualizzato solo qundo il nodo correntemente visualizzato contiene il campo desiderato.
Attenzione: non funziona quando è visualizzata una view (è una funzione che elenca nodi o parti di nodi) e tutte le volte che arg(0) non restituisce "node".