Ciao a tutti.
Ho letto sul sito di drupal la documentazione per gli sviluppatori per creare un modulo personalizzato usando drupal 7. Ho trovato in questa documentazione il riferimento a dei moduli di esempio, creati dagli sviluppatori di drupal (consiglio ai novellini e non uno sguardo a tali moduli dato che sono scritti davvero molto bene).
http://drupal.org/project/examples
Però adesso passo al mio dubbio:
Ho bisogno di creare un nuovo tipo di nodo (via codice) al quale sono associati i seguenti dati: dati anagrafici di un personaggio (circa 5 campi testo), un elenco a discesa che mi permette di associare il nodo ad una categoria tra quelle proposte (quindi un campo taxonomy) e tre campi per permettere di votare 3 caratteristiche distinte del personaggio ( 3 campi fivestar).
Guardando gli esempi di cui sopra ho capito che per fare questo posso agire in due modi:
- creare al momento dell'installazione i field necessari usando le nuove api " field_*()" (esempio "node_exemple") con il vantaggio che si occuperà drupal di stoccare i dati nel database e di scrivere meno codice, ma con lo svantaggio che i dati verranno sparpagliati in numerose tabelle;
- utilizzare le nodeapi (esempio "nodeapi_exemple") e quindi intercettare i vari aggiornamenti del nodo per aggiornare a manina il database. In questo caso il vantaggio sarebbe quello di avere un unica tabella con i dati, ma mi resterebbero i field fivestar e taxonomy da lasciare gestire a drupal con non poche complicazioni e scrittura di molto codice in più.
Io preferirei avere i dati tutti in una tabella, anche in vista di sviluppi futuri del modulo, quindi sarei per la seconda soluzione, ma mi rendo conto che i dati relativi alla tassonomia e ai voti resterebbero in tabelle separate. Inoltre ho incontrato molta difficoltà ad inserire i field taxonomy e fivestar nel momento della modifica del form (hook_form_alter()), pare che compaiano nella pagina ma non funzionino, ed effettivamente è logico come comportamento dato che non sono associati realmente al nodo.
Insomma, cosa mi consigliate? come lo sviluppereste voi?
Grazie a tutti.