Jump to content

Duplicar campo fecha de nacimiento en registro (1.5.6)


Recommended Posts

Hola!

 

Quisiera añadir un nuevo campo en el registro de nuevos usuarios de mi tienda, pero sería un campo idéntico al de la fecha de nacimiento, sólo que pondré "Indica la fecha de nacimiento de tu mascota". 

 

¿Alguien puede ayudarme? He leído sobre nuevos campos, pero al ser un campo "duplicado" o copiado quizás sea más fácil.

 

Gracias.

 

PD: también quisiera saber si, después de lograr añadir ese campo, puedo hacer que los cliente que ya están registrados, añadan ese campo en su cuenta.

Link to comment
Share on other sites

Aqui tienes un tutorial en este caso tendras que copias lo correspondiente a la fecha de nacimiento, tendrás que crear tambien un ampo en la base de datos con el mismo formato que el de la otra fecha en la tabla

ps_customer

En lo demas sigue los mismos pasos del tutorial pero asociados al campo de fecha de nacimiento

Link to comment
Share on other sites

Hice esto:

 

En controllers/front/AuthController.php añado las líneas 438, 439 y 440 copiándolas de las 3 anteriores y modificando birthday por birthdaypet, quedando así:

$customer->firstname = Tools::ucwords($customer->firstname);
				$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.');
				$customer->birthdaypet = (empty($_POST['years']) ? '' : (int)$_POST['years'].'-'.(int)$_POST['months'].'-'.(int)$_POST['days']);
				if (!Validate::isBirthDate($customer->birthdaypet))
					$this->errors[] = Tools::displayError('Invalid date of birth.');

Añado las líneas 558, 559 y 560 copiándolas de las 3 anteriores y modificando "birthday" por "birthdaypet", quedando así:

$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');
					
			$customer->birthdaypet = (empty($_POST['years']) ? '' : (int)$_POST['years'].'-'.(int)$_POST['months'].'-'.(int)$_POST['days']);
			if (!Validate::isBirthDate($customer->birthdaypet))
					$this->errors[] = Tools::displayError('Invalid date of birth');

En class/Customer.php, bajo la ínea 29, añadí esto:

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

Y en la línea 172, añadí una línea copiando la anterior, quedando así:

			'birthday' => 					array('type' => self::TYPE_DATE, 'validate' => 'isBirthDate'),
			'birthdaypet' => 					array('type' => self::TYPE_DATE, 'validate' => 'isBirthDate'),

Luego he ido a themes/mi_tema/lang/es.php y en la línea 104 he añadido las dos siguientes:

$_LANG['authentication-create-account_1b4033814553ad8ffb709e3b5cc6ee2c'] = 'Fecha de nacimiento de tu mascota';
$_LANG['authentication_1b4033814553ad8ffb709e3b5cc6ee2c'] = 'Fecha de nacimiento de tu mascota';

En el archivo controllers/admin/AdminCustomersController.php, he buscado el código siguiente en la línea 143:

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

Y he añadido lo siguiente:

'Birthdaypet' => array(
				'title' => $this->l('Birthdaypet'),
				'width' => 'auto',
				'search' => true
			)

Por último, he ido a la base de datos y tengo que hacer esto:

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

Pero no sé hacerlo.

¿Podrías ayudarme, para comprobar si funcionó lo que hice?

Edited by Jessy (see edit history)
Link to comment
Share on other sites

Crear la tabla en la base de datos tienes que hacerlo desde phpMyAdmin en tu servidor y si lo quieres mas comodo utiliza este modulo

 

http://www.prestashop.com/forums/topic/74828-module-phpmyadmin/

 

Dentro de phpMyAdmin pulsa en la  pestaña SQL  y pegas este codigo y pulsas abajo a la derecha en GO

ALTER TABLE `ps_customer` 
ADD `birthdaypet` date

Lo puedes hacer asi o ir a la tabla ps_customer / Pestaña Structure y abajo tienes un campo ADD donde agregar la tabla y luego editarla con los valores que tiene la tabla birhday

Edited by ventura (see edit history)
Link to comment
Share on other sites

Vale, lo acabo de hacer. 

 

Resultado: No funciona  :(

 

Quizás algo de lo que hice arriba está mal, la verdad es que no tengo mucha idea de esto y creí hacerlo bien. No me aparece el nuevo campo en el registro...

Link to comment
Share on other sites

Sí, he añadido debajo de "Date of bith" un "Date of pet Birth", quedando así, pero no sé si va bien tampoco:

<p class="select">
					<span>{l s='Date of Birth'}</span>
					<select id="days" name="days">
						<option value="">-</option>
						{foreach from=$days item=day}
							<option value="{$day}" {if ($sl_day == $day)} selected="selected"{/if}>{$day}  </option>
						{/foreach}
					</select>
				{*
						  {l s='January'}
						  {l s='February'}
						  {l s='March'}
						  {l s='April'}
						  {l s='May'}
						  {l s='June'}
						  {l s='July'}
						  {l s='August'}
						  {l s='September'}
						  {l s='October'}
						  {l s='November'}
						  {l s='December'}
					  *}
					<select id="months" name="months">
						<option value="">-</option>
						{foreach from=$months key=k item=month}
							<option value="{$k}" {if ($sl_month == $k)} selected="selected"{/if}>{l s=$month} </option>
						{/foreach}
					</select>
					<select id="years" name="years">
						<option value="">-</option>
						{foreach from=$years item=year}
							<option value="{$year}" {if ($sl_year == $year)} selected="selected"{/if}>{$year}  </option>
						{/foreach}
					</select>
				</p>
								<p class="select">
					<span>{l s='Date of your pet Birth'}</span>
					<select id="days" name="days">
						<option value="">-</option>
						{foreach from=$days item=day}
							<option value="{$day}" {if ($sl_day == $day)} selected="selected"{/if}>{$day}  </option>
						{/foreach}
					</select>
				{*
						  {l s='January'}
						  {l s='February'}
						  {l s='March'}
						  {l s='April'}
						  {l s='May'}
						  {l s='June'}
						  {l s='July'}
						  {l s='August'}
						  {l s='September'}
						  {l s='October'}
						  {l s='November'}
						  {l s='December'}
					  *}
					<select id="months" name="months">
						<option value="">-</option>
						{foreach from=$months key=k item=month}
							<option value="{$k}" {if ($sl_month == $k)} selected="selected"{/if}>{l s=$month} </option>
						{/foreach}
					</select>
					<select id="years" name="years">
						<option value="">-</option>
						{foreach from=$years item=year}
							<option value="{$year}" {if ($sl_year == $year)} selected="selected"{/if}>{$year}  </option>
						{/foreach}
					</select>
				</p>
Link to comment
Share on other sites

Puse "ispetBirthDate" en lugar de "isBirthDate". Creo que era eso lo que me decías, ¿no?

 

Forcé compilación y sigue sin aparecer el campo duplicado

 

No hago más que buscar por el foro pero al ser otros campos y este ser duplicado no creo que se hagan igual... no sé. Que pena que no me salga  :(

Link to comment
Share on other sites

Lo he vuelto a hacer y revisar, porque encontré el mismo tutorial que me pasaste tú pero en español:

 

http://mqueridiam.tbfnation.com/prestashop-anadir-un-campo-personalizado-en-el-formulario-de-registro-del-cliente/

 

Pero sigue sin funcionar, no sé por qué... 

 

En el paso donde nombra la línea 430 y la línea 520, dice que debemos añadir "$customer->referralcode = $referralCode;". Yo, como es una copia del campo de fecha, lo que hago es copiar esas líneas que nombre y cambiar la plababra "birthdate" por PetBirthdate". No sé si está bien hecho así, no añado la línea que él dice.

 

Y después, en las demás líneas donde nombra "referralcode", siempres escribo "PetBirthdate". 

Link to comment
Share on other sites

Al final he tenido que anular todo lo que hice porque probé a registrarme y, después de cubrir los datos y darle a "registrarse", me llevaba a una página en blanco.

 

Gracias por tu ayuda Ventura.

 

A ver si alguien sabe cómo podría hacer para duplicar ese campo de fecha de nacimiento.

Link to comment
Share on other sites

Esta claro que hay algo que no estas haciendo bien. Revisa sobre todo la validacion, que los nuevos nombres coincidan en los archivos, es un desarrollo que para alguien con pocos conocimientos puede resultar bastante complicado. Te recomiendo que este tipo de desarrollos los hagas primero en un entorno de pruebas, en localhost, dominio de pruebas....

Link to comment
Share on other sites

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