Home » PHP » Prestashop: Añadir un campo personalizado en el formulario de Registro del Cliente

Esta es una guía sobre cómo agregar un campo personalizado en el formulario de registro del cliente en PrestaShop 1.5. Las modificaciones que se describen son para su referencia: tenga en cuenta que la instalación de Prestashop puede ser diferente, debido a su plantilla o a una revisión menor (sub-versión) de PrestaShop. En esta guía se utilizará la característica sobrecarga de clases (override) de PrestaShop, y se ha optado por modificar los archivos de base. En general, ésta es una mala práctica de cara a futuras actualizaciones del PrestaShop, pero es más conveniente a efectos didácticos.

Advertencia: haga una copia de seguridad de sus archivos antes de modificarlos!

Archivo “themes/NOMBRE_DEL_TEMA/authentication.tpl”

Añadir estas líneas en el punto en el que desee:


        <label for="referralcode">{l s='Referral code'}</label>
        <input class="text" id="referralcode" type="text" name="referralcode" />

Advertencia: probablemente sea necesario repetir el mismo código en otra parte del archivo (dependiendo de la plantilla).
Archivo “controllers/front/AuthController.php”

Acerca de la línea 390, encontrará el código:

// Preparing customer
$customer = new Customer();
$lastnameAddress = Tools::getValue('lastname');
$firstnameAddress = Tools::getValue('firstname');

A continuación, añadir:

$referralCode = Tools::getValue('referralcode');

Acerca de la línea 430, encontrará el código:

$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.');

A continuación, añadir:

$customer->referralcode = $referralCode;

Línea 520 (circa), encontrará el código:

$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');

A continuación, añadir:

$customer->referralcode = $referralCode;

Acerca de la línea 650, encontrará el código:

$this->context->customer = $customer;
$this->context->smarty->assign('confirmation', 1);
$this->context->cookie->id_customer = (int)$customer->id;

A continuación, añadir:

$this->context->cookie->customer_referralcode = $customer->referralcode;

Archivo “classes/Customer.php”

Acerca de la línea 30, encontrará el código:

public $id;

A continuación, añadir:

/** @ var string Referralcode */
public $referralCode;

Si utiliza un archivo de idioma en la carpeta “themes/NOMBRE_DEL_TEMA/lang”, añada las dos líneas siguientes:


$_LANG['authentication-create-account_1b4033814553ad8ffb709e3b5cc6ee2c'] = 'AQUI_EL_NOMBRE_DEL_CAMPO';
$_LANG['authentication_1b4033814553ad8ffb709e3b5cc6ee2c'] = 'AQUI_EL_NOMBRE_DEL_CAMPO';

Para mostrar el campo en la lista de clientes dentro de la sección Administración (Back-office), modifique el archivo “controllers/admin/AdminCustomersController.php”.

Acerca de la línea 143, encontrará el código:

      'connect' => array(
      'title' => $this->l('Last visit'),
      'width' => 100,
      'type' => 'datetime',
      'search' => false,
      'havingFilter' => true
      )
    );

Sustituirlo por el siguiente:

      '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
      )
    );

Finalmente, modifique la base de datos (si utiliza el sufijo tabla “ps” la tabla es `ps_customer`):

ALTER TABLE `ps_customer`
      ADD `referralcode` VARCHAR( 100 )

Esta guía se ha centrado en los aspectos básicos, y se ha omitido algún detalle, como el mecanismo de validación del nuevo campo. El lector los podrá completar sin problemas a la medida de sus necesidades, sin más que inspeccionar en detalle los ficheros que se modifican. También es bastante directo, y el lector podrá hacerlo a partir de esta guía, utilizar el mecanismo de sobrecarga de clases (override) de PrestaShop.

Mientras tanto,

Happy Coding!

Deja un comentario

Si te gustó este Artículo, lo mejor que puedes hacer por el Blog es compartirlo en tu Red Social y darle un "Me Gusta".

Tu dirección de correo electrónico no será publicada.

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>