FranciscoVillen Posted January 22, 2016 Share Posted January 22, 2016 (edited) Buenas, He decidido compartir esto con vosotros porque creo que es un problema habitual, tener que pulsar el botón de guardar en los campos de textos personalizados es realmente molesto y va en contra de la experiencia del usuario. Comentar que hay un post al respecto en el foro inglés, aunque lleva 11 páginas y se comentan soluciones para versiones 1.4 y 1.5 de prestashop. Si teneis una versión antigua de Prestashop os puede ser de utilidad: https://www.prestashop.com/forums/topic/76874-how-to-remove-save-button-for-customized-fields/ La solución que voy a compartir con vosotros, no la he realizado yo, la he encontrado en una web en inglés y me ha sido de mucha utilidad. Hay que realizar tres pasos: 1. Modificar el archivo ajax-cart.js del modulo del carrito (el cual estará en /themes/tu-tema/js/modules/blockcart/ajax-cart.js). Si no tienes esta ruta de archivo es recomendable que te la crees y copies ahi el archivo ajax-cart.js desde /modules/blockcart/ajax-cart.js: Debeis añadir al principio de la funcion add (sobre la linea 256) add : function(idProduct, idCombination, addedFromProductPage, callerElement, quantity, whishlist) Lo siguiente: if(addedFromProductPage && $('#customizationForm').length > 0) { console.log("llega aqui"); $('#quantityBackup').val($('#quantity_wanted').val()); customAction = $('#customizationForm').attr('action'); $('body select[id^="group_"]').each(function() { console.log("llega al each"); customAction = customAction.replace(new RegExp(this.id + '=\\d+'), this.id +'=' + this.value); }); // ajax to product page with custom action var customization_entries = $('#customizationForm').serialize(); $.ajax({ async:false, type: 'POST', data: customization_entries+ '&ajax=1', dataType: 'json', url: customAction, success: function(data){ if(typeof(data.errors) !== 'undefined') { alert('Error while saving customization data'); return; } } }); } 2. Añadir una función a /controllers/front/ProductController.php (mucho mejor si le haceis un override para no perder la modificación cuando actualiceis Prestashop), la función es la siguiente: public function postProcess() { if (Tools::getValue('ajax') && Tools::isSubmit('submitCustomizedDatas')) { if (!$this->context->cart->id && isset($_COOKIE[$this->context->cookie->getName()])) { $this->context->cart->add(); $this->context->cookie->id_cart = (int)$this->context->cart->id; } $this->pictureUpload(); $this->textRecord(); $this->formTargetFormat(); if($this->errors) { $error_list = implode('; ', $this->errors); die(Tools::jsonEncode(array('errors' => $error_list))); } else die(Tools::jsonEncode(array('success' => true))); } } 3. Modificar el archivo /js/tools.js en la funcion checkCustomizations (linea 316): Tendreis que cambiar una linea: if (parseInt(customizationFields[i][1]) == 1 && ($('#' + customizationFields[i][0]).html() == '' || $('#' + customizationFields[i][0]).text() != $('#' + customizationFields[i][0]).val()) && !pattern.test($('#' + customizationFields[i][0]).attr('class'))) Por: if (parseInt(customizationFields[i][1]) == 1 && ($('#' + customizationFields[i][0]).val() == '')) De este archivo no se puede hacer un override por lo que tened en cuenta que ante una actualización de Prestashop perdereis la modificación. Por último tendreis que ocultar el botón de guardar de los campos personalizados, en el caso de mi plantilla es añadir la siguiente regla de estilo: #customizedDatas{ display: none; } Nota: para que os funcione teneis que tener habilitado ajax en la configuración de modulo blockcart Obtenido de: http://nemops.com/save-prestashop-custom-fields-add-to-cart/#.VqJEQvE8zkx Edited January 22, 2016 by FranciscoVillen (see edit history) Link to comment Share on other sites More sharing options...
santidrod Posted March 22, 2016 Share Posted March 22, 2016 (edited) Hola FranciscoVillen he intentado hacer lo que sugieres. Pero no me ha funcionado. Tienes idea de por qué prodría ser?? He seguido todos los pasos y copiado el código tal y como lo presentas aquí. Ah, el campo de texto que quiero añadir lo he diseñado con un datepicker para que me muestre un calendario. Muchas gracias por tu aportación Edited March 22, 2016 by santidrod (see edit history) Link to comment Share on other sites More sharing options...
FranciscoVillen Posted March 22, 2016 Author Share Posted March 22, 2016 Hola Santidrod, ¿La modificación de /controllers/front/ProductController.php la has hecho con un override o sobre el original?. Si has hecho el override, a veces Prestashop no te coge la modificación de primeras y es necesario borrar el fichero class_index.php (tras borrarlo se volverá a regenerar) que se encuentra en la carpeta /cache. Link to comment Share on other sites More sharing options...
niconqn Posted June 10, 2016 Share Posted June 10, 2016 No me ha funcionado, tengo que cargar 2000 productos personalizados y me estoy volviendo loco. ya tengo la pagina funcionando y tengo miedo de que se caiga todo ya que probe esto que indicas mas arriba y se me ha caido la pagina productos. ya llevo una semana sin poder resolver, alguien pudo saber algo mas? Link to comment Share on other sites More sharing options...
niconqn Posted June 10, 2016 Share Posted June 10, 2016 esta parte donde se modifica? #customizedDatas{ display: none;} Link to comment Share on other sites More sharing options...
FranciscoVillen Posted June 10, 2016 Author Share Posted June 10, 2016 esta parte donde se modifica? #customizedDatas{ display: none; } Es una regla de estilo, tienes que guardarla en el global.css o en el product.css de tu tema Link to comment Share on other sites More sharing options...
niconqn Posted June 10, 2016 Share Posted June 10, 2016 me podrias pasar un link de como quedo tu sitio con estas modificaciones, yo no lo he logrado aun. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now