Content Type e relazioni
Buongiorno,
come si capisce dal titolo di questo post, vorrei chiedere come si possono mettere in relazione due tipi di contenuto. Faccio un esempio pratico per descrivere di cosa avrei bisogno: ho realizzato un content type che riguarda gli eventi. Attraverso questo un utente autenticato puó creare l'evento, altri utenti potranno quindi vedere l'evento ma non modificarlo e iscriversi al medesimo. Come si puó fare per far si che gli utenti possano iscriversi a questo evento?
Io ho sperimentato un sistema, questo sembra funzionare, solo ho alcune piccole sbavature che non mi piacciono... in seguito descrivo cosa ho testato: all'interno di questo content type per l'evento, oltre a tutti i field che servono per descrivere l'evento (luogo, data, locandina, ecc. ecc.), ho inserito un field di tipo reference webform submission, che indica come webform di default una determinata webform che ho creato in precedenza (diciamo che si chiama "team"). Questa webform contiene anchessa un reference dei contenuti dell'utente che si vuole iscrivere, diciamo che il contenuto si chiama "binomi".
Quando un utente autenticato visualizza l'evento pubblicato da un altro utente, viene consentita l'introduzione dell'adesione all'evento tramite il webform "team" che ho creato. La cosa funziona egregiamente tanto che posso addirittura controllare l'unicitá dell'iscrizione attraverso il campo unique della webform. Successivamente con una query al database (in un ambiente esterno a Drupal) posso estrarre dalle tabelle delle webform i dati in relazione, cioé le submission che contengono la relazione tra i nodi dei contenuti degli utenti che si sono iscritti (binomi) e il numero di nodo del contenuto relativo all'evento. In questo modo posso sapere chi si é iscritto all'evento.
L'unico dettaglio che non mi soddisfa é che quando un utente crea l'evento, il field webform visualizza la webform di default (specificata in fase di creazione del field), cioé "team" ma se l'utente clicca sulla lista puó cambiare la webform e questo non va bene, sarebbe necessario che fosse obbligato ad usare per forza quella, cioé "team". A tal proposito chiedo se qualcuno sa se c'é un modo per impedirlo? Bisogna sempre agire sui permessi? Oppure attivare un filtro contestuale?
Secondo voi questa strategia é buona o ci sono dei metodi migliori?
Grazie in anticipo!

Risposte
Per gli eventi con
Per gli eventi con registrazioni il modulo più pertinente che conosco è questo:
https://www.drupal.org/project/rng
Prima di ricorrere a workaround di vario genere (che magari vanno benissimo ma richiedono molti adattamenti) darei un'occhiata approfondita a moduli più specifici come quello indicato.
potresti provare a settare un valore di defaut nella gestione del campo poi a disattivarlo in "visualizzazione form" ... vedi se può funzionare ...
Ciao Maurizio, ho lavorato
Ciao Maurizio,
ho lavorato parecchio workaround prima di leggere la tua risposta ;-)
Ho provato il tuo suggerimento di disattivare il campo in visualizzazione form, funziona ma poi non mi consente piú di impostare le opzioni di stato: Open, Close, Scheduled, la quali mi servirebbero, funzionano riferite al nodo che gli ha creati, ció vuol dire che posso con un unico content type gestire l'apertura e la chiusura di un evento. È incredibile quanto é wersatile webform e tutti i suoi componenti!!!
Ho testato con successo anche gli HOOK per alterare la form ( hook_form_alter() ) anche quello é molto versatile. Tutto ben documentato sul sito drupal.org anche se non é spiegato molto bene (si lascia molto ad intendere) come agire sul form... ho fatto alcune esperienze, come ad esempio il debug dpm($form) per studiare gli array contenuti in essa e alterarli. Ad esempio per escludere le informazioni sulla revisione ho impostato:
$form['revision_information']['#access'] = false;
Lo so che é ridicolo (dovuto alla mia scarsa conoscenza) ma solo per cercare questa informazione mi ci sono volute ore e ore di ricerche, prima ci ero arrivato da solo andando a manipolare gli array ma poi quando mi sono imbattuto in questa forma é stato piú facile agire sui componenti della pagina.
Ho provato anche a gestire i TOKEN per passare ai field delle webform dati dal nodo, funziona anche quello anche se avrei desiderato passare dei dati alle impostazioni della webform, come ad esempio lo stato che citavo prima (Open, Close, Scheduled e i due campi data di apertura, chiusura) o il limite di submission per entity reference. Questo invece non sono riuscito, sarebbe stato il top! Sembra che si possano passare soltanto i field relativi alla webform ma non le sue impostazioni.
Il modulo RNG l'ho installato dato un primo sguardo, devo capire come funziona e se é adatto al mio scopo, ti faró sapere... grazie intanto!