Guida per posizionare un webform Drupal in una regione

Guida per posizionare un webform Drupal in una regione

Il modulo webform viene utilizzato per la realizzazione di "form", ovvero dei moduli preimpostati da far compilare all'utente. È molto utile per raccogliere dati tramite dei questionari, moduli di registrazione, sondaggi o altre schede di inserimento. Webform, però, espone il modulo all'interno di una pagina dedicata. Sono quindi necessari alcuni accorgimenti per mostrarlo al di fuori della regione principale di Drupal: $content.

Come posizionare webform in un blocco?

Ci sono alcuni "trucchi" che permettono di inserire webform all'interno di un blocco come alcuni snipplet PHP ad hoc oppure, più semplicemente, usando il modulo webform block.

Grazie al modulo webform block si può configurare un blocco Drupal per contenere un webform. In questo modo si può posizionare il blocco in una qualunque regione del template Drupal sfruttando quindi la flessibilità di configurazione del layout.

Differentemente da altre soluzioni, webform block gestisce anche la validazione del form reindirizzando l'utente alla pagina corretta nel caso siano stati inseriti dati non validi e assicura di caricare la pagina nella posizione del form.

Come cambiare lo stile di webform?

Webform elenca i componenti uno di seguito all'altro. Per esigenze grafiche può essere necessario dover cambiare questo comportamento.

Se ad esempio si devono posizionare gli elementi del form in due colonne, è sufficiente includerli in due contenitori separati (div) e per farlo ci sono diversi metodi:

  • Utilizzare il metodo hook_form_alter(), che però necessita di un po' di programmazione e la realizzazione di un modulo ad hoc per questo scopo,
  • oppure, come invece consigliano anche gli sviluppatori di webform block, intervenire nel file template.php sfruttando il metodo hook_preprocess_webform_form().

Basterà quindi modificare i valori delle variabili #prefix e #suffix relative agli oggetti che vogliamo includere nei contenitori aggiungendo l'apertura e la chiusura dei div. Fatto questo è sufficiente impostare il posizionamento tramite il foglio di stile del template.

Aggiornamento del 09/04/2012:

Recentemente nel modulo webform (sia per Drupal 6 che per Drupal 7) è stata integrata la funzionalità offerta originariamente dal modulo webform block che quindi non è più necessario installare.

E come si fa a bloccare lo spam dai webform senza usare recaptacha o mollom in drupal?

Puoi usare il classico modulo CAPTCHA al posto di reCAPTCHA o di Mollom.