lucmel87 Posted March 26, 2014 Share Posted March 26, 2014 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. 1 Link to comment Share on other sites More sharing options...
legionari86 Posted April 1, 2014 Share Posted April 1, 2014 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 More sharing options...
stellina Posted April 1, 2014 Share Posted April 1, 2014 Non so come si esegue la query nel database.... Link to comment Share on other sites More sharing options...
riccardo123 Posted November 2, 2016 Share Posted November 2, 2016 Ciao lucmel87, complimenti per la guida avrei una domanda da porti. e se io volessi aggiungere un campo required solo in "registrazione utente" e non in "guest checkout"? /one page checkout? Grazie mille. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now