Sto creando un file node-flexinode-1.tpl.php per una visualizzazione personalizzata dei contenuti creati con flexinode (sul perchè utilizzo ancora flexinode e non cck non mi soffermo, ma c'è un perchè ;), con la versione di drupal 4.7.6.
In particolare, ho inserito i campi in celle di una tabella.
I primi due problemi che mi si presentano sono:
1) per i campi di testo o numerici, nessun problema. Però ho dei campi di tipo dropdown menu (l'utente che inserisce il contenuto sceglie da una tendina) e altri di tipo checkbox, che mi restituiscono un valore numerico invece della stringa di testo corrispondente. Come fare? Ho provato ad usare la funzione check_output, ma non è più valida per la versione 4.7.
2) vorrei fare in modo che, come avviene nella visualizzazione di default di contenuti creati con flexinode, i campi non riempiti non vengano fuori in output (come campi vuoti).
Sto impazzendo da giorni leggendo tutto quello che trovo sia qui che su drupal.org, e facendo tentativi di tutti i tipi, se poteste darmi un aiutino vi sarei veramente grata :)
flavia
chech_output devi sostituirla con check_markup come indicato qui
Ma e' questa la funzione che devo usare? Ho provato, ma invece del valore che dovrebbe apparire, compare un "n/a"...
letto la pagina, nella versione 4.7 la funzione check_output è stata sostituita da check_markup, hai detto di aver usato la check_output quindi pensavo che ti servisse e volevo farti notare che è cambiata di nome (il sorgente della funzione lo trovi qui).
Per quanto riguarda i valori numerici puoi comunque usarli per modificare il valore "checked" delle checkbox e di "selectedIndex" per le combo, in quanto il fatto che siano selezionati o meno (e quali per le combobox) rappresenta comunque un numero, non credo che sia un errore ma un modo di rappresentare i contenuti da parte di flexinode.
Infatti non è un errore, è solo che non so come devo fare a visualizzare, invece del valore numerico di ogni voce, la stringa di testo che ho associato in fase di creazione del campo di flexinode.
Avevo provato con check_output (ora markup) perchè in uno dei tanti post che ho letto su drupal.org mi era sembrato di capire che potesse essere la funzione giusta da usare, ma ora francamente non credo di essere sulla pista giusta... :/
ogni campo creato ha un id univoco che dovrebbe valere per tutti i flexinode creati; puoi osservarlo direttamente dal codice HTML quando editi il flexinodo: per esempio la mia combo ha id pari a 2 e la mia checkbox pari a 1.
Ogni campo genererà un valore sotto l'oggetto $node del tipo $node->flexinode_id
Per gestire le checkbox puoi fare così all'interno tuo file node-flexinode-n.tpl.php:
$val = $node->flexinode_1;
if ($val) print <INPUT type=checkbox checked="checked"... >
Nell'esempio se $val = 1 allora scrive la stringa <INPUT type=checkbox checked="checked" ..., cioè la casella con la spunta, altrimenti non stampa nulla facendolo così "scomparire".
Per quanto riguarda le caselle a discesa o combobox devi aiutarti con la funzione flexinode_load_field(id):
quando voglio stampare sulla mia pagina personalizzata il valore selezionato faccio così:
$val = flexinode_load_field(2);
print $val->options[$node->flexinode_2];
e invece del valore numerico della select ho proprio l'elemento selezionato.
Anche questo campo può "scomparire", basta confrontare il contenuto restituito dall'array con il valore zero per sapere se ci sia stata qualche selezione.
Grazie TheCrow, funziona tutto! Non so come avrei fatto senza di te!