Ciao a tutti
mentre riesco ad intercettare , nel template (function phptemplate_preprocess_page) la pagina edit di un content-type
<?php
if ($vars['node']->type == "contatti" && arg(2) == 'edit') {
$vars['template_files'][] = 'page-contatti-edit';
}
?>
Non riesco a fare la stessa cosa con
www.miosito.it/node/add/content-type[/codefilter_code]
Ho provato con :
<?php
if ($vars['node']->type == "contatti" && arg(1) == 'add') {
$vars['template_files'][] = 'page-contatti-add';
}
?>
con
<?php
if (arg(0) == 'node' && arg(1) == 'add' && $vars['node']->type == "contatti") {
$vars['template_files'][] = 'page-contatti-add';
}
?>
e anche con questo trovato in rete
<?php
if (isset($vars['node/add'])) {
if ($vars['node']->type == "contatti"){
$vars['template_files'][] = 'page-contatti-add';
}
}
?>
ma senza nessun risultato.
Qualcuno sa come mai ?
Domanda preventiva: Hai pulito la cache? :)
Nel caso la risposta sia "sì e continua a non funzionare":
shotgun debugging mode ON
Puoi provare con un po' di "cattiveria" a stampare i valori contenuti in $vars e ritornati da arg() in questo modo:
// Prima dell'if per assicurarsi che i valori tornati siano quelli voluti
for ($i=0;$i<5;++$i) {
var_dump(arg($i));
}
// come ultima istruzione dell'if per verificare sia di esserci dentro che per analizzare il contenuto della variabile.
var_dump($vars);
exit;
shotgun debugging mode OFF
Non è la soluzione più pulita ma ti può aiutare a renderti conto di cosa capita. Controlla inoltre che $vars nella dichiarazione della funzione di preprocess sia passata per riferiferimento e non per valore, altrimenti una volta uscito dalla funzione le tue modifiche verranno perse.
L'alternativa allo shotgun debugging è l' utilizzo di un debugger vero e proprio, che però è un po' più complesso da installare ed utilizzare, per cui non so se è il caso, mi auguro che quanto detto sia sufficiente ;)
Ciao omissis
grazie per l'intervento.
Yes , cache più che pulita e continuaVA a non funzionare.
Ho testato il tuo shotgun debug...carino :-)
IL risultato, che conoscerai ovviamente, è stato questo :
string(4) "node" string(3) "add" string(8) "contatti" NULL NULL
Riflettendo su queste string mi è venuto un sospetto....non è che il maledetto, in questa fase, non si considera ancora "dentro" un content-type, ma solo in fase di creazione di un semplice "node", che putacaso, come arg() finale ha semplicemente una stringa ?
Giusto per provare ho modificato in :
E adesso come per magia funziona.....grrrrrr.
E' il content-type che evidentemente , in fase di aggiunta di un node, non viene riconosciuto come tale. Per lui al momento è solo un nodo qualsiasi.
Grazie mille!!