Drupal Modulo WebForm. Creazione di un modulo d’ordine prodotto
Torniamo al nostro catalogo prodotti, che abbiamo realizzato in una delle lezioni precedenti. Il catalogo è già ben popolato e si visualizza correttamente, ma ordinare un prodotto tramite il modulo di contatto è piuttosto scomodo: bisogna copiare il nome del prodotto, il codice, incollarli nel modulo e scrivere un messaggio. Creiamo quindi un modulo che semplifichi il processo di ordine. Per questo ci servirà il modulo Webform, utilizzato per la creazione di moduli in Drupal. Tramite questo modulo invieremo il nome del prodotto e la quantità desiderata; se ti serve anche il codice prodotto, puoi trasmetterlo allo stesso modo.
Scarica e installa il modulo Webform.
Dopo l’installazione, apparirà un nuovo tipo di contenuto Webform. Crea un contenuto di tipo Webform e chiamalo, ad esempio, Modulo d’ordine prodotto (o come preferisci). Dopo la creazione verrai reindirizzato alla pagina di configurazione della webform.
Ora dobbiamo creare due campi: uno per il nome del prodotto e uno per la quantità. Per farlo, aggiungiamo due campi di tipo textfield (campo di testo).
Nel campo per il nome del prodotto inserisci %get[product]
.
Nel campo della quantità imposta come valore predefinito “1”.
Aggiungiamo anche un campo di testo per l’indirizzo e-mail e un’area di testo per eventuali note o preferenze del cliente.
%get[product]
è analogo alla variabile PHP $_GET['product']
, che riceve il valore passato nell’URL.
Il modulo è pronto. Ora dobbiamo creare un link che punti a questo modulo, includendo un parametro product
nell’URL contenente il nome del prodotto. Creeremo questo link come blocco separato da visualizzare in fondo al nodo di ogni prodotto.
Per le prossime operazioni dobbiamo attivare il modulo integrato PHP Filter, che consente di inserire codice PHP direttamente in un blocco o in un contenuto. Dopo averlo attivato, apparirà un nuovo formato di input chiamato PHP code.
Creiamo un nuovo blocco e scegliamo il formato di input PHP code. Nel testo del blocco inseriamo il seguente codice:
<a href="<?php print base_path(); ?>node/6?product=<?php print drupal_get_title(); ?>">Ordina il prodotto</a>
dove node/6
è l’indirizzo del nodo contenente la webform per l’ordine.
La funzione drupal_get_title()
restituisce il titolo del nodo — nel nostro caso, il nome del prodotto — mentre base_path()
restituisce il percorso alla root del sito (ad esempio drupalbook.org/). Ora posizioniamo il blocco nella regione “Contenuto” (Content) e impostiamo la visibilità del blocco in modalità PHP con il seguente codice:
$types['tovar'] = 1; $match = false; if ((arg(0) == 'node') && is_numeric(arg(1))) { $node = node_load(arg(1)); $match = isset($types[$node->type]); } return $match;
Qui tovar
è il nome macchina del tipo di contenuto “Prodotto”.
Il nostro modulo d’ordine prodotto è pronto.