Jump to content

[Solucionado] Obligar a poner 2 apellidos en el formulario de registro


liru28

Recommended Posts

Hola, el problema que se me presenta es que en el formulario de registro de un usuario hay un campo llamado "Apellidos" donde se supone que se deben indicar los 2 apellidos pero a veces, el usuario solo indica uno de ellos y necesito que sean los dos. Como podria poner para que fuera obligatorio los 2 apellidos y realmente los pusieran o desglosar ese campo en dos, uno para el primer apellido y otro para el segundo y de hacerlo asi influiria despues en otros lugares?

 

Espero vuestras ideas y consejos sobre como hacer esto.

Gracias y un saludo.

Link to comment
Share on other sites

Hola, el problema que se me presenta es que en el formulario de registro de un usuario hay un campo llamado "Apellidos" donde se supone que se deben indicar los 2 apellidos pero a veces, el usuario solo indica uno de ellos y necesito que sean los dos. Como podria poner para que fuera obligatorio los 2 apellidos y realmente los pusieran o desglosar ese campo en dos, uno para el primer apellido y otro para el segundo y de hacerlo asi influiria despues en otros lugares?

 

Espero vuestras ideas y consejos sobre como hacer esto.

Gracias y un saludo.

Lo que tu necesitas no es tan sencillo ya que si quisieras algo limpio seria necesario agregar un campo extra a la tabla customers asi como hacer varios cambios en authentication.tpl y AuthController.php.

 

Algo un poco mas sencillo pero creo que te serviria perfectamente es solicitar un apellido materno y que al guardar los datos te concatene ambos apellidos a uno mismo, para eso tendrias que hacer los siguientes cambios:

 

En el archivo "/public_html/themes/tema que estas usando/authentication.tpl" encuentra estas lineas:

 <p class="required text">
  <label for="customer_lastname">{l s='Last name'}</label>
  <input onkeyup="$('#lastname').val(this.value);" type="text" class="text" id="customer_lastname" name="customer_lastname" value="{if isset($smarty.post.customer_lastname)}{$smarty.post.customer_lastname}{/if}" />
  <sup>*</sup>
 </p>

Y sustituyelas por estas:

 <p class="required text">
  <label for="customer_lastname">{l s='Last name'}</label>
  <input onkeyup="$('#lastname').val(this.value);" type="text" class="text" id="customer_lastname" name="customer_lastname" value="{if isset($smarty.post.customer_lastname)}{$smarty.post.customer_lastname}{/if}" />
  <sup>*</sup>
 </p>
 <p class="required text">
  <label for="customer_maternal_lastname">{l s='Maternal last name'}</label>
  <input onkeyup="$('#lastname').val((customer_lastname.value) + ' ' + (this.value));" type="text" class="text" id="customer_maternal_lastname" name="customer_maternal_lastname" value="{if isset($smarty.post.customer_maternal_lastname)}{$smarty.post.customer_maternal_lastname}{/if}" />
  <sup>*</sup>
 </p>

 

Y en el archivo "/public_html/controllers/AuthController.php" encuentra estas lineas:

 if (Tools::isSubmit('submitAccount') OR Tools::isSubmit('submitGuestAccount'))
 {
  $create_account = 1;
  if (Tools::isSubmit('submitAccount'))
self::$smarty->assign('email_create', 1);
  /* New Guest customer */
  if (!Tools::getValue('is_new_customer', 1) AND !Configuration::get('PS_GUEST_CHECKOUT_ENABLED'))
$this->errors[] = Tools::displayError('You cannot create a guest account.');
  if (!Tools::getValue('is_new_customer', 1))
$_POST['passwd'] = md5(time()._COOKIE_KEY_);
  if (isset($_POST['guest_email']) AND $_POST['guest_email'])
$_POST['email'] = $_POST['guest_email'];
  /* Preparing customer */
  $customer = new Customer();
  $lastnameAddress = $_POST['lastname'];

Y sustituyelas por estas:

 if (Tools::isSubmit('submitAccount') OR Tools::isSubmit('submitGuestAccount'))
 {
  $create_account = 1;
  if (Tools::isSubmit('submitAccount'))
self::$smarty->assign('email_create', 1);
  /* New Guest customer */
  if (!Tools::getValue('is_new_customer', 1) AND !Configuration::get('PS_GUEST_CHECKOUT_ENABLED'))
$this->errors[] = Tools::displayError('You cannot create a guest account.');
  if (!Tools::getValue('is_new_customer', 1))
$_POST['passwd'] = md5(time()._COOKIE_KEY_);
  if (isset($_POST['guest_email']) AND $_POST['guest_email'])
$_POST['email'] = $_POST['guest_email'];
  if (Tools::getValue('customer_maternal_lastname') == '')
$this->errors[] = Tools::displayError('You must type maternal last name');
  /* Preparing customer */
  $customer = new Customer();
  $lastnameAddress = $_POST['lastname'];
  $firstnameAddress = $_POST['firstname'];
  $_POST['lastname'] = $_POST['customer_lastname'] . ' ' . $_POST['customer_maternal_lastname'];

 

Eso es suficiente para solicitar un apellido materno, lo puse en ingles pero puedes traducirlo desde el back office, no olvides hacer una copia de tus archivos antes de hacer cualquier cambio y forzar la compilacion para que veas los cambios, espero haberte ayudado, saludos.

  • Like 1
Link to comment
Share on other sites

Hola de nuevo, he hecho las modificaciones que comentas incluyendo lo de forzar compilacion pero en el registro no se me ve el campo para insertar el segundo apellido (customer_maternal_lastname) y no se por que.

 

Espero que puedas ayudarme y que la solucion que has propuesto es justo lo que necesiaria.

 

Un saludo.

Link to comment
Share on other sites

Hola de nuevo, he hecho las modificaciones que comentas incluyendo lo de forzar compilacion pero en el registro no se me ve el campo para insertar el segundo apellido (customer_maternal_lastname) y no se por que.

 

Espero que puedas ayudarme y que la solucion que has propuesto es justo lo que necesiaria.

 

Un saludo.

Deberia servirte, acabo de hacer la verificarlo en mi sitio de pruebas y funciona perfectamente, que version de PS estas usando?, porque este codigo lo verifique en la 1.4.6.2 pero creo debería servirte para la mayoría de 1.4.x

Link to comment
Share on other sites

Hola, perdona que he hablado antes de tiempo. Es que no lo habia hecho bien, pero sí funciona.

 

Ahora solo me quedaria un detalle y es que en el registro en la parte donde se indica la direccion hay un campo donde se ponen automaticamente los dos apellidos rellenados en la parte de "Datos personales" pero la etiqueta de este campo que se muestra es "Primer apellido" ya que yo lo modifique para que en "Datos personales" lo que antes era "Apellidos" ahora sea "Primer Apellido" y el nuevo campo de apellido materno ahora sea "Segundo Apellido". Como hago para que en la parte de direccion salga la etiqueta "Apellidos" en lugar de "Primer Apellido".

 

Espero haber explicado.

Muchas gracias por la ayuda y un saludo.

Link to comment
Share on other sites

Bueno lo que pasa que como los dos tienen la misma etiqueta en ingles te da la misma traduccion en ambos, lo que puedes hacer es cambiar la primera etiqueta "First last name", mas facil:

Esta linea:

<label for="lastname">{l s='Last name'}</label>

Por esta:

 

<label for="lastname">{l s='First last name'}</label>

Y ahora te va aparecer en ingles, solo cambias la traduccion en Traducciones.

Link to comment
Share on other sites

Aunque haga esa modificacion me sigue apareciendo en la parte donde hay que indicar la direccion el mismo label que yo he llamado "Primer apellido". El problema es que no lo encuentro en authentication.tpl para poder ponerlo diferente. Solo ubico el de los datos personales que es el que por defecto sale despues en direccion pero que fisicamente no esta en ese fichero.

 

Espero haberme explicado. Yo voy a seguir mirando a ver si doy con la solucion. Si puedes miralo, vale?

Un saludo.

Link to comment
Share on other sites

Si quieres cambiar un label y no sabes como encontrarlo en el tp, solo cambia de idioma en tu sitio al ingles y veras cual es el nombre que tiene el label en ingles, ahora puedes copiar ese label y buscarlo en el tpl, seguro que daras con el, en caso que no puedas avisame, y te reduerdo que si no forzas la compilacion te haras loco con eso y jamas veras un cambio, ¿no se si sea eso lo que te este pasando?

Link to comment
Share on other sites

  • 1 year later...
  • 3 weeks later...

He hecho todo lo que comenta sQs, pero no funciona ya que yo utilizo el pedido rápido en vez del pedido a pasos.

 

Alguien me podría ayudar? qué tpl tengo que modificar?

 

muchas gracias.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...