Jessy Posted August 8, 2014 Share Posted August 8, 2014 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 More sharing options...
ventura Posted August 8, 2014 Share Posted August 8, 2014 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 More sharing options...
Jessy Posted August 8, 2014 Author Share Posted August 8, 2014 Vale, a ver si me sirve, ¿me pasas el enlace del tutorial? Link to comment Share on other sites More sharing options...
ventura Posted August 8, 2014 Share Posted August 8, 2014 http://www.bitsandchips.it/forum/viewtopic.php?f=11&t=4884 1 Link to comment Share on other sites More sharing options...
Jessy Posted August 8, 2014 Author Share Posted August 8, 2014 (edited) 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 August 8, 2014 by Jessy (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted August 8, 2014 Share Posted August 8, 2014 (edited) 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 August 8, 2014 by ventura (see edit history) Link to comment Share on other sites More sharing options...
Jessy Posted August 8, 2014 Author Share Posted August 8, 2014 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 More sharing options...
Jessy Posted August 8, 2014 Author Share Posted August 8, 2014 En el back office, en clientes, veo a la derecha una columna nueva llamada "Birthdaypet". Pero en el formulario de registro no... Link to comment Share on other sites More sharing options...
ventura Posted August 8, 2014 Share Posted August 8, 2014 Recompila la plantilla y borra cache Link to comment Share on other sites More sharing options...
ventura Posted August 8, 2014 Share Posted August 8, 2014 Tienes que editar tambien el authentication.tpl no se , si lo has hecho Link to comment Share on other sites More sharing options...
Jessy Posted August 8, 2014 Author Share Posted August 8, 2014 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 More sharing options...
ventura Posted August 8, 2014 Share Posted August 8, 2014 revisa los campos nuevos , el validate lo tienes igual que el birthday, en la plantilla te deberia aparecer Link to comment Share on other sites More sharing options...
Jessy Posted August 8, 2014 Author Share Posted August 8, 2014 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 More sharing options...
ventura Posted August 8, 2014 Share Posted August 8, 2014 (edited) El metodo de compra lo tienes en 5 pasos o en 1? Si lo tienes en uno, lo tienes que hacer en el order-opc-new-account.tpl Edited August 8, 2014 by ventura (see edit history) Link to comment Share on other sites More sharing options...
Jessy Posted August 8, 2014 Author Share Posted August 8, 2014 Lo tengo en 5 Link to comment Share on other sites More sharing options...
Jessy Posted August 8, 2014 Author Share Posted August 8, 2014 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 More sharing options...
Jessy Posted August 8, 2014 Author Share Posted August 8, 2014 En traducciones también veo el campo, me aparece "Birthdatepet". Link to comment Share on other sites More sharing options...
Jessy Posted August 9, 2014 Author Share Posted August 9, 2014 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 More sharing options...
ventura Posted August 9, 2014 Share Posted August 9, 2014 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 More sharing options...
Jessy Posted August 9, 2014 Author Share Posted August 9, 2014 Sí. Aunque ya he revisado todo y a mi parecer va bien, pero claro, yo tengo poco conocimiento de cómo hacerlo. Ya veremos si alguien más de por aquí echa una manita. Gracias ventura! Link to comment Share on other sites More sharing options...
Recommended Posts