it-swarm.it

Aggiunta di campi extra al modulo di contatto del sito

Questo mi sembra stranamente difficile. Quello che pensavo sarebbe solo un caso di aggiunta di campi extra, un po 'come l'aggiunta di campi ai tipi di contenuto. Ma no. Non riesco a individuare alcuna struttura da aggiungere, ad esempio un campo di numero di telefono nel modulo di contatto? Qualcuno là fuori lo sa?

17
Purplemonkey

Aspettarsi che i campi dei moduli vengano configurati come tipi di contenuto è una generalizzazione eccessiva. I tipi di contenuto sono per contenuto (testo, immagine, ecc.) Del sito Web e, più specificamente, in Drupal, per nodi (il contenuto principale in Drupal). Usando il modulo UI Field and Field, si può facilmente aggiungere campi al tipo di contenuto usando una UI Web. Tranne alcuni casi specifici, un modulo non fa parte del contenuto di un sito Web ma piuttosto un modo per gli utenti di aggiungere e modificare informazioni, a volte contenuti e altre volte no.

Per personalizzare (cioè alterare) un modulo in Drupal, il solito modo è creare un modulo personalizzato che implementa il hook_form_FORM_ID_alterhook . In questo modo, è possibile aggiungere elementi del modulo ai moduli esistenti forniti da altri moduli. Per utilizzare le informazioni per i campi aggiunti al modulo di contatto in questo modo, dovrai anche modificare la posta inviata utilizzando un'implementazione di hook_mail_alter () . La seguente guida ti guida attraverso entrambi i passaggi in Drupal 7. (Nota anche questo commento )

Una soluzione non di codice consiste nell'utilizzare il modulo Webform che fornisce un tipo di contenuto form e consente di aggiungere moduli come contenuto al proprio sito Web. Questi moduli sono configurabili tramite un'interfaccia utente Web. Varie fasi di elaborazione possono essere configurate per le informazioni inviate tramite questi moduli. Uno di questi è l'invio di e-mail. Usarlo per un modulo di contatto personalizzato è un caso d'uso comune. Webform viene fornito con i propri concetti e punti di estensione. Sebbene possa rivelarsi una soluzione più semplice e veloce per una volta semplici moduli, può anche rivelarsi sovradimensionato e complesso da personalizzare una volta raggiunta una determinata soglia di funzionalità. Il costo per aggiungere funzionalità extra a un modulo web può quindi superare il vantaggio di evitare di scrivere un modulo personalizzato in primo luogo.

20
Pierre Buyle

Dipende dal modulo che si sta utilizzando per il modulo di contatto. Alcuni moduli forniranno un'interfaccia back-end che non richiede programmazione per aggiungere campi aggiuntivi. Un modulo molto popolare con questa funzionalità è Webform.

A parte questo, i moduli in Drupal possono essere modificati scrivendo un modulo personalizzato usando l'hook hook_form_alter. Ci sono molti tutorial là fuori sullo sviluppo di mdoule e usando questo particolare hook.

1
mesch

Se stai utilizzando il modulo di contatto principale, spera che il modulo campi modulo di contatto possa essere completato presto per Drupal 7.

Questo modulo consente di aggiungere campi aggiuntivi al modulo di contatto esteso del sito come l'interfaccia del modulo del profilo. L'amministratore può definire i campi e questi saranno disponibili sul modulo di contatto a livello di sito. Si prega di notare che questi campi non saranno disponibili per il modulo di contatto personale per ora poiché non vedo esigenze specifiche.

Se vuoi qualcosa adesso: 4 opzioni:

  • Utilizzare un tipo di nodo e trasformarlo in un modulo di contatto.
  • Usa un modulo web.
  • Crea un modulo personalizzato
  • O ancora meglio: fork/help il modulo contact_field! La pagina del progetto è appena stata aggiornata, quindi almeno si sposta di nuovo e, una volta terminata, offre un modo molto piacevole di aggiungere campi, proprio come sui tipi di contenuto.

(aggiungendo questo per l'arena del bot di ricerca;))

1
Robin

Ecco un codice di esempio che mostra come aggiungere campi personalizzati al modulo di contatto in tutto il sito tramite i moduli api: esempio di nuovi campi modulo .

Godere!

0
Druvision