Prestashop 1.6: come aggiungere un campo al modulo Contatti

19 Febbraio 2015

Indice Contenuti

Continuiamo la nostra serie di tutorial dedicati a Prestashop con una breve guida che spiega come aggiungere un campo personalizzato al modulo di contatti presente nell’installazione standard di Prestashop.

Quando partiamo da un’installazione pulita di Prestashop, utilizzando il tema standard, abbiamo la fortuna di avere un form di richiesta informazioni già bello e pronto, solitamente raggiungibile dalla voce “Contattaci” presente in alto a destra.
L’unico problema è che i campi sono veramente pochi: come possiamo fare per aggiungerne uno nuovo?
Vediamo subito un esempio su come possiamo aggiungere un campo “Nome”.

1

Apriamo il file del tema "contact-form.tpl", che si trova nella cartella principale del tema ("themes/default-boostrap")

2

Intorno alla riga 90, dopo il div che visualizza il campo email, aggiungiamo il codice qui sotto: il nuovo campo si chiamerà "nome".

<!-- Inserimento campo Nome -->
<p class="form-group">
<label for="nome">{l s='Nome'}</label>
{if isset($customerThread.nome)}
<input class="form-control grey" type="text" id="nome" name="nome" value="{$customerThread.nome|escape:'html':'UTF-8'}" readonly="readonly" />
{else}
<input class="form-control grey validate" type="text" id="nome" name="nome" value="{$nome|escape:'html':'UTF-8'}" />
{/if}
</p>
<!--// Fine Inserimento campo Nome -->
3

Prendiamo il file ContactController che si trova nella cartella "controllers", copiamolo e incolliamolo dentro la cartella "override/controllers/front".

4

Nel nuovo file creato riscriviamo la prima riga con la definizione della classe in questo modo:

class ContactController extends ContactControllerCore
5

Intorno alla riga 40 dello stesso file aggiungiamo questa riga:

$nome = Tools::getValue('nome');
6

Intorno alla riga 46, aggiungiamo prima della serie di "else if" queste due righe (in questo modo l'errore che invita a compilare il campo Nome sarà il primo a comparire)

else if (!$nome) $this->errors[] = Tools::displayError('Il campo nome è obbligatorio');
7

Intorno alla riga 164 c'è un array: aggiungiamo come ultimo elemento la riga: '{nome}' =>  $nome, l'array diventerà come questo:

$var_list = array(
'{order_name}' => '-',
'{attached_file}' => '-',
'{message}' => Tools::nl2br(stripslashes($message)),
'{email}' =>  $from,
'{product_name}' => '',
'{nome}' =>  $nome,
);
8

Ora vanno modificati i due file con il testo della mail inviata all'utente, in modo di aggiungere il riferimento al nuovo campo "Nome": questi sono "contact_form.txt" e "contact_form.html" dentro la cartella "mails" (sottocartella "it") per la lingua italiana. Nel file "contact_form.txt" aggiungiamo la riga:

NOME: {nome}
9

Nel file contact_form.html, aggiungiamo la riga:

Nome: {nome}
Abbiamo finito! Se tutto va bene ora aprendo la pagina del modulo troveremo il nuovo campo Nome da compilare e nella mail ricevuta troveremo una riga in più con il valore del nuovo campo Nome.