Eliminar campos obligatorios de registro en Prestashop

Eliminar campos obligatorios de registro en Prestashop
5 (100%) 1 vote

En algunos momentos Prestashop se vuelve algo “farragoso” y queremos hacer cosas que no nos  permite hacer por algún motivo que no conseguimos entender. Os quería dejar la solución a un problema que se me planteo en uno de mis proyectos, y que tuve que dar algunas vueltas para solucionarlo: “Como eliminar campos obligatorios de registro en Prestashop”.

Este problema surge cuando en alguna tienda online, no queremos que aparezcan algunos campos obligatorios de registro a nuevos usuarios (dirección, fecha de nacimiento, etc). Os propongo algunas soluciones para que las tengáis en cuenta.

  • Este tutorial está pensado para Prestashop 1.6.
  • Debes de realizar copia de todos los ficheros que modifiques (por si necesitas restaurar).
  • El tutorial esta realizado para “registro en un solo paso”.
  • Después de realizar los cambios debes de forzar compilación y borrar caché.

La primera opción para quitar campos obligatorios de registro en Prestashop es la forma más fácil aunque a veces no da resultado:

BackOffice -> Localización -> Países -> España (si es nuestro país) ->

Si en nuestro caso no necesitamos el NIF, marcamos NO en ¿Necesita el número de identificación fiscal?

Si no necesitamos mostrar la etiqueta IVA , también seleccionamos NO.

Qué hacer si queremos eliminar campos del formulario de Registro

Esta es la parte algo más complicada del proceso, ya que tendremos que tocar código y editar algunos ficheros en Prestashop, para ello:

  1. Tener copia de seguridad de los ficheros.
  2. Debes de realizarlo desde el FTP.
  3. Utilizar un editor de texto plano, como Notepad ++
  4. Hay varios ficheros con el mismo nombre (coger el fichero de la carpeta adecuada).
  5. Forzar compilación y “cruzar los dedos”.

En primer lugar tenemos que entender que Prestashop nos obliga por defecto a completar algunos campos, en mi caso he eliminado algunos campos obligatorios de registro, pero otros como “estado” o “país” los he dejado por defecto. Ya que pueden ser campos que necesite Prestashop “si o si” para el proceso de registro.

Buscamos el fichero “address.php” que se encuentra en classes/address.php, editamos:

public static $definition = array(
  'table' => 'address',
  'primary' => 'id_address',
  'fields' => array(
   'id_customer' =>   array('type' => self::TYPE_INT, 'validate' => 'isNullOrUnsignedId', 'copy_post' => false),
   'id_manufacturer' =>  array('type' => self::TYPE_INT, 'validate' => 'isNullOrUnsignedId', 'copy_post' => false),
   'id_supplier' =>   array('type' => self::TYPE_INT, 'validate' => 'isNullOrUnsignedId', 'copy_post' => false),
   'id_warehouse' =>   array('type' => self::TYPE_INT, 'validate' => 'isNullOrUnsignedId', 'copy_post' => false),
   'id_country' =>   array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
   'id_state' =>	array('type' => self::TYPE_INT, 'validate' => 'isNullOrUnsignedId'),
   'alias' =>	 array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true, 'size' => 32),
   'company' =>	array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'size' => 64),
   'lastname' =>	array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
   'firstname' =>	array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
   'vat_number' =>	array('type' => self::TYPE_STRING, 'validate' => 'isGenericName'),
   'address1' =>	array('type' => self::TYPE_STRING, 'validate' => 'isAddress', 'required' => true, 'size' => 128),
   'address2' =>	array('type' => self::TYPE_STRING, 'validate' => 'isAddress', 'size' => 128),
   'postcode' =>	array('type' => self::TYPE_STRING, 'validate' => 'isPostCode', 'size' => 12),
   'city' =>	 array('type' => self::TYPE_STRING, 'validate' => 'isCityName', 'required' => true, 'size' => 64),
   'other' =>	 array('type' => self::TYPE_STRING, 'validate' => 'isMessage', 'size' => 300),
   'phone' =>	 array('type' => self::TYPE_STRING, 'validate' => 'isPhoneNumber', 'size' => 32),
   'phone_mobile' =>   array('type' => self::TYPE_STRING, 'validate' => 'isPhoneNumber', 'size' => 32),
   'dni' =>	 array('type' => self::TYPE_STRING, 'validate' => 'isDniLite', 'size' => 16),
   'deleted' =>	array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false),
   'date_add' =>	array('type' => self::TYPE_DATE, 'validate' => 'isDateFormat', 'copy_post' => false),
   'date_upd' =>	array('type' => self::TYPE_DATE, 'validate' => 'isDateFormat', 'copy_post' => false),
  ),
);

Ahora vemos que hay algunas líneas que contienen el código ‘required’ => true, ;  pues eliminamos ese trozo de línea en los campos que no queremos que sea obligatorio. Os recuerdo que el campo “city” no lo deberíamos de tocar. 

Después de esto tendrás que editar el archivo “order-opc-new-account.tpl” que se encuentra en themes/nombre de tu tema/ para que quitemos los campos que nos queramos que aparezcan en el formulario de registro (registro en un paso).

Si por ejemplo queremos quitar la segunda dirección en el registro de nuevos usuario tenemos que quitar esta línea de código en el archivo “order-opc-new-account.tpl” :

 {elseif $field_name eq "address2"}
 <div class="text is_customer_param form-group">
 <label for="address2">{l s='Address (Line 2)'}</label>
 <input type="text" class="text form-control validate" name="address2" id="address2" data-validate="isAddress" value="{if isset($guestInformations) && isset($guestInformations.address2) && isset($guestInformations) && isset($guestInformations.address2) && $guestInformations.address2}{$guestInformations.address2}{/if}" />
 </div>

(Esta línea de código puede aparecer dos veces en el archivo, teniendo que eliminarla en los dos sitios)

Si esto no te ha funcionado, también puedes eliminar del archivo “authentication.tpl” las siguientes líneas, siguiendo el ejemplo:

{$dlv_all_fields.4 = 'address2'}

y también la parte siguiente:

{elseif $field_name eq "address2"}
    <p class="text">
	 <label for="address2">{l s='Address (Line 2)'}</label>
	 <input type="text" class="text" name="address2" id="address2" value="{if isset($smarty.post.address2)}{$smarty.post.address2}{/if}" />
	 <span class="inline-infos">{l s='Apartment, suite, unit, building, floor, etc.'}</span>
    </p>
 

Esta última modificación no la he puesto en práctica. Es una solución que aportan en el foro de Prestashop España, el cual invito a que visites.

 

3 comentarios en “Eliminar campos obligatorios de registro en Prestashop”

  1. Dónde hay que modificar para que sea obligatorio meter la Empresa y el NIF en el registro en la versión 1.6? En direcciones añado company como campo obligatorio pero no me hace nada.
    Por otro lado, hay que hacer alguna otra cosa para que aparezca en rojo y con el asterisco de obligatorio?

    Responder

Deja un comentario