Ci tengo a precisare che con Prestashop 1.5 è possibile usare file di override ma la mia installazione con moduli aggiuntive non me lo ha permesso perché i file da modificare erano criptati. Dunque ho modificato direttamente i file di base (lo svantaggio è che se aggiornate Prestashop dovrete rifare le modifiche).
Attenzione: fare un backup dei file prima di modificarli.
File "themes/NOME_DEL_TEMA/authentication.tpl "
Aggiungere questa linea nel punto dove volete compaia il campo di testo
Codice: Seleziona tutto
<p class="text">
<label for="referralcode">{l s='Referral code'}</label>
<input name="referralcode" type="text" class="text" id="referralcode" />
</p>
File "controllers/front/AuthController.php"
Linea 390 (circa), cercare il codice:
Codice: Seleziona tutto
// Preparing customer
$customer = new Customer();
$lastnameAddress = Tools::getValue('lastname');
$firstnameAddress = Tools::getValue('firstname');
Di seguito aggiungere:
Codice: Seleziona tutto
$referralCode = Tools::getValue('referralcode');
Codice: Seleziona tutto
$customer->birthday = (empty($_POST['years']) ? '' : (int)$_POST['years'].'-'.(int)$_POST['months'].'-'.(int)$_POST['days']);
if (!Validate::isBirthDate($customer->birthday))
$this->errors[] = Tools::displayError('Invalid date of birth.');
Codice: Seleziona tutto
$customer->referralcode = $referralCode;
Codice: Seleziona tutto
$customer->birthday = (empty($_POST['years']) ? '' : (int)$_POST['years'].'-'.(int)$_POST['months'].'-'.(int)$_POST['days']);
if (!Validate::isBirthDate($customer->birthday))
$this->errors[] = Tools::displayError('Invalid date of birth');
Codice: Seleziona tutto
$customer->referralcode = $referralCode;
Codice: Seleziona tutto
$this->context->customer = $customer;
$this->context->smarty->assign('confirmation', 1);
$this->context->cookie->id_customer = (int)$customer->id;
Codice: Seleziona tutto
$this->context->cookie->customer_referralcode = $customer->referralcode;
File "class/Customer.php"
Linea 30 (circa), cercare il codice:
Codice: Seleziona tutto
public $id;
Codice: Seleziona tutto
/** @var string Referralcode */
public $referralCode;
Se state utilizzando il file delle traduzioni che si trova nella cartella "themes/NOME_DEL_TEMA/lang" aggiungete le seguenti due righe:
Codice: Seleziona tutto
$_LANG['authentication-create-account_1b4033814553ad8ffb709e3b5cc6ee2c'] = 'INSERIRE_QUI_LA_TRADUZIONE';
$_LANG['authentication_1b4033814553ad8ffb709e3b5cc6ee2c'] = 'INSERIRE_QUI_LA_TRADUZIONE';
"controllers/admin/AdminCustomersController.php"
Linea 143 (circa), cercare il codice:
Codice: Seleziona tutto
'connect' => array(
'title' => $this->l('Last visit'),
'width' => 100,
'type' => 'datetime',
'search' => false,
'havingFilter' => true
)
);
Codice: Seleziona tutto
'connect' => array(
'title' => $this->l('Last visit'),
'width' => 100,
'type' => 'datetime',
'search' => false,
'havingFilter' => true
),
'referralcode' => array(
'title' => $this->l('Referral code'),
'width' => 'auto',
'search' => true
)
);
Modificare il database (supponendo che come suffisso delle tabelle sia stato scelto "ps" la tabella alla quale aggiungere il campo è `ps_customer`):
Codice: Seleziona tutto
ALTER TABLE `ps_customer`
ADD `referralcode` VARCHAR( 100 )
Come Neller mi ha indicato, ho saltato un passaggio!
Grazie a Neller.in classes/Customer.php
around line 160
public static $definition = array(
...
'passwd' => array('type' => self::TYPE_STRING, 'validate' => 'isPasswd', 'required' => true, 'size' => 32),
Below this line, add this line
'referralcode' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName'),