Jump to content

Recommended Posts

Salve, scrivo questa guida in quanto non ho trovato molto sul web e spero sia utile. E' necessaria un minimo di conoscenza con db mysql e classi php.

 

File da modificare:

 

FRONT-END

 - themes/NOME_TEMA/autentication.tpl

 - controllers/front/AuthController.php

 - classes/Customer.php

ADMIN

 - controllers/admin/AdminCustomersController.php

 

STEP 1 – Aggiunta del campo al front end

Inserire dove si desidera un campo di input nel file themes/NOME_TEMA/autentication.tpl

Esempio:

<p class="required text"><input name="vistisu" type="text" id="vistisu" /><label for="vistisu">{l s='Come ci hai conosciuti?'}</label></p>

STEP 2 – modifica del controller che esegue la registrazione dell’utente

Nel file controllers/front/AuthController.php trovare la funzione:

protected function processSubmitLogin()

E inserire dopo :

$customer = new Customer();

questo codice:

$_POST['vistisu'] =Tools::getValue(‘vistisu’);

Spiegazione:

la funzione processSubmitLogin() crea un utente durante la registrazione, (ricordo che ci sono 2 modi per registrarsi un prestashop: tramite registrazione semplice o durante il checkout).

L’oggetto $customer una volta inizializzato dovrà ricevere il parametro del campo che abbiamo creato. Inizializzando una variabile in $_POST attraverso la classe statica Tools con getValue(‘nome_campo_creato’)  andiamo a prendere il testo che è stato scritto nell’input box con lo stesso name passato.

Ora inseriamo il campo anche per la funzione che crea l’account durante il checkout:

troviamo la funzione protected function processSubmitAccount()

e inseriamo

$customer->vistisu = $_POST[‘vistisu’];

All’interno dell’istruzione:

if (!count($this->errors))

Spiegazione:

la funzione crea un account durante la fase di checkout. L’istruzione if(!count($this->errors)) verifica che non ci siano errori prima di eseguire la creazione ($customer->add()). L’istruzione che abbiamo inserito andrà a popolare una variabile pubblica della classe customers in modo da registrarla all’interno del database.

STEP 3 – Creazione del campo nel DB

Eseguiamo questa SQL direttamente dal nostro database:

ALTER TABLE `PREFISSO_TBL_customer` ADD `vistisu` VARCHAR( 256 )

 

Sostituiamo PREFISSO_TBL con il prefisso della nostra tabella e assicuriamoci che il campo creato di default sia NULL.

 

STEP 4 – Creiamo la variabile ‘vistisu’ nella classe Customer

Apriamo il  file classes/Customer.php e inseriamo subito dopo l’apertura della classe:

public $vistisu;

poi troviamo la variabile statica: public static $definition = array(….

E aggiungiamogli:

'foundus' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'size' => 256),

nella posizione esatta dove si trova il campo vistisu che abbiamo creato prima nella tabella (solitamente ultima posizione). Avremo qualcosa del genere:

….
'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false),
'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false),
'vistisu' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'size' => 256),
),
);

Spiegazione:

Aggiungiamo la variabile $vistisu alla classe customers per far si che prenda il valore che inseriamo nell’input di testo da front-end. L’inserimento della stringa nella variabile statica $definition ci permette di andare a scrivere nel DB attraverso una funzione SQL di prestashop. TYPE_STRING indica che è una stringa, ‘isString’ è un controllo per verificare che il contenuto del campo input che abbiamo creato sia una stringa e size=> indica la lunghezza massima che abbiamo definito al campo vistisu nel DB.

ULTIMO STEP – Creazione campo nel back end sezione “Clienti”

Apriamo il file: Controllers/admin/AdminCustomersController.php

Cerchiamo

$this->fields_list = array(…

Aggiungiamo:

‘vistisu’ => array(
'title' => $this->l('Come ci conosce?'),
'width' => 70,
),

Appena dopo una qualsiasi chiusura ), del campo.

In questo modo nella tab clienti dell’admin ci apparira la classica tabella con tutti i nomi degli utenti registrati e la colonna “Come ci conosce?” nella posizione dove l’abbiamo inserita.

 

 

Più o meno è quello che ho fatto io.

 

  • Like 1
Link to comment
Share on other sites

Ciao, questa modifica la posso utilizzare anche per inserire campi come P.iva e C.F perchè nella versione 1.5.6.2 non escono quando vado a creare un account, e li vorrei mettere sopratutto come campi obbligatori su un gruppo! Ho il modulo Erilab Handle Groups che al momento della registrazione mi permette di scegliere sel 'account sarà Privato o Azienda, in base a questo poi i prezzi varieranno una volta fatto il login.

Link to comment
Share on other sites

  • 2 years later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...