obedao Posted September 9, 2015 Share Posted September 9, 2015 Hola, tengo un problema con los atributos de productos en las vistas lista y rejilla. Los productos que tienen combinaciones con el atributo color, en estas vistas, les aparece debajo de la descripción corta los cuadraditos con la representación de colores disponibles que tiene dicho producto. Funciona perfectamente hasta que activo la caché smarty. En este punto, llega un momento que dejan de aparecer a determinados productos, hasta que al final no sale en ninguno. Si vacío la caché, vuelven a salir unas cuantas veces hasta que vuelven a aparecer. Curioseando con el firebug: donde estaba la lista de colores que ponía esto: <div class="color-list-container"> <ul class="color_to_pick_list clearfix"> ... </ul> </div> al activar el smarty caché sale bien hasta que de momento empieza a salir así: <div class="color-list-container"> </div> Veo que efectivamente en el html que llega al navegador, desaparece toda el código que general el archivo product-list-colors.tpl de la plantilla. El fallo sólo lo hace en estas vistas, luego entro a la página de producto y las combinaciones y atributos funcionan perfectamente. ¿le pasa a alguien más? ¿sabéis cómo se puede solucionar para poder seguir con la caché activada? Mi versión de prestashop es la 1.6.1.0, aunque actualizando a la 1.6.1.1 sigue con el mismo problema. Mi web es http://laguerza.es Gracias y saludos. Link to comment Share on other sites More sharing options...
moraira Posted September 17, 2015 Share Posted September 17, 2015 Mismo problema, curiosidades de prestashop... Link to comment Share on other sites More sharing options...
moraira Posted September 18, 2015 Share Posted September 18, 2015 No tengo muy claro el motivo pero, desde que hemos cambiado el "tipo de cache" de "sistema de archivos" a "Mysql" no sucede Link to comment Share on other sites More sharing options...
obedao Posted September 20, 2015 Author Share Posted September 20, 2015 Hola, muchas gracias por compartir tu solución. La verdad es que me da bastante reparo activar la caché en mysql. Según he leído, la base de datos crece de forma enorme, pudiendo pasar de 3 megas a 1 giga en un pis-pas. Yo uso bastante phpmyadmin para hacer backups y cambios directamente en la base de datos. Para importar en phpmyadmin una base de datos de 5 megas el servidor necesita su tiempo. No quiero imaginar lo que sería importar una base de datos de 500 megas, fijo que el servidor daría error timeout. Comenta si puedes si has visto incrementar tu base de datos, yo por mi parte estoy buscando la forma de incluir el tpl 'produc-list-color' en el 'product-list' a ver si así le obligo a que lo procese. No es muy ortodoxo, pero igual funciona... saludos Link to comment Share on other sites More sharing options...
JoseR Posted October 28, 2015 Share Posted October 28, 2015 Hola. A mi me ocurre lo mismo pero aunque cambie a caché en mysql me sigue sin mostrar los colores en la lista de productos. ¿Alguien ha podido descubrir la solución? (utilizo 1.6.1.1.) Gracias! Link to comment Share on other sites More sharing options...
val_carter Posted December 14, 2015 Share Posted December 14, 2015 (edited) Yo he tenido el mismo problema, es una locura la verdad porque te vuelves loco vaciando y cargando cache...etc. Yo he realizado algunas modificaciones para solucionarlo y parece que lo está, pero si alguien más lo puede probar o comentar las conclusiones a las que he llegado pues se lo agradeceríamos toda la comunidad, por si me equivoco en algo...etc. En primer lugar cuando una persona quiere mostrar los colores en el product list lo que hace es descomentar o dejar el siguiente código: {if isset($product.color_list)} <div class="color-list-container">{$product.color_list}</div> {/if} Esto hace uso del método addColorsToProductList definido en la clase FrontController.php (/classes/controller). Además, la llamada se realiza en el fichero CategoryController.php, sobre la línea 233. Esto quiere decir, que muestres o no los cuadraditos de colores en tu product list, estás realizando la llamada de todas maneras. Todo lo que se realiza en este método, por tema de cache...etc se escapa un poco a mi comprensión, y tampoco querría tocarlo, por lo que he optado por realizar una nueva llamada en el controlador que me devolviera los colores y texturas. De esta manera no empleo un fichero tpl, no hago uso de cache...etc. Por tanto, en primer lugar añado en el FrontController.php el siguiente método: public function addColorsVal(&$products) { $string_id=''; foreach ($products as &$product) { if($string_id=='') $string_id=$product['id_product']; else $string_id=$string_id.','.$product['id_product']; } $sql='SELECT p.id_product, att.color,att.id_attribute, palang.name FROM ps_product p, ps_product_attribute pa, ps_product_attribute_combination pac, ps_attribute att, ps_attribute_lang palang, ps_attribute_group pag WHERE p.id_product = pa.id_product AND pac.id_product_attribute = pa.id_product_attribute AND pac.id_attribute = att.id_attribute AND palang.id_attribute=att.id_attribute AND palang.id_lang='.$this->context->language->id.' AND pag.id_attribute_group=att.id_attribute_group AND pag.group_type="color" AND p.id_product IN ( '.$string_id.' ) GROUP BY p.id_product, att.color,att.id_attribute,palang.name'; $results = Db::getInstance()->ExecuteS($sql,true,0); return $results; } Con este método obtengo un array con los productos y sus atributos color. La idea es luego hacer uso de este en el product-list.tpl de tu tema. La sql la he realizado yo, por tanto, si veis algún error o alguna cosa importante a mencionar no dudéis en hacerlo. Además de hacer uso de esta variable en nuestro product-list, hay que ver donde nos interesa realizar el cambio a la llamada addColorsToProductList, ya que además de estar en el fichero de categorías (CategoryController.php), también se realiza cuando navegamos por la paginación o realizamos una búsqueda. Yo en mi caso necesitaba cambiarlo en la página de categorías, en las búsquedas y al filtrar por la navegación por facetas, por lo que tuve que modificar tres ficheros (CategoryController.php, SearchController.php y blocklayered.php, situado en la carpeta modules/blocklayered): //En el fichero CategoryController cambio: $this->addColorsToProductList($this->cat_products); por $this->context->smarty->assign('colorVal', $this->addColorsVal($this->cat_products)); //En el blocklayered.php: $this->context->controller->addColorsToProductList($products); por $smarty->assign('colorVal',$this->context->controller->addColorsVal($products)); //En el fichero SearchController cambiamos: $this->addColorsToProductList($search['result']); por $this->context->smarty->assign('colorVal', $this->addColorsVal($search['result'])); y esto $this->addColorsToProductList($result); por $this->context->smarty->assign('colorVal', $this->addColorsVal($result)); (son 3 lineas en total) Si realizas una búsqueda de addColorsToProductList en tu proyecto de prestashop verás que además habría que cambiar: - BestSalesController.php - ManufacturerController.php - NewProductsController.php - PricesDropController.php - SupplierController.php El fichero product-list.tpl lo modificamos de la siguiente manera, después del bloque <div class="color-list-container">{$product.color_list}</div> que comentaremos : {foreach from=$colorVal key=k item=comb} {if $comb["id_product"] == $product.id_product} <p class="comb_title">{$comb.name} {if $comb.color==''} {*assign var='img_color_exists' value=file_exists('/img/co/'|cat:$comb.id_attribute|cat:'.jpg')*} {*if $img_color_exists*} <img class="colorList" src="{$img_col_dir}{$comb.id_attribute|intval}.jpg" alt="{$comb.name|escape:'html':'UTF-8'}" title="{$comb.name|escape:'html':'UTF-8'}" width="20" height="20" /> {*/if*} {else} <span class="colorList" style="background:{$comb.color}!important;"></span> {/if} </p> {/if} {/foreach} En este código He comentado el bloque que smarty comprueba si existe la imagen porque a veces fallaba y no me la mostraba aunque existiera (qué raro, no?). Para el span y la imagen de la textura he usado la clase colorList con el siguiente css: span.colorList, img.colorList{width:20px;height:20px;display: inline-block;border-radius:50%;vertical-align: bottom;} Yo uso las imágenes redondeadas, el que no quiera lo puedo omitir del css. Como siempre hacer un backup de todos los ficheros aunque los cambios no son muy traumáticos, espero que os sirva y si alguien lo prueba que comente. Un saludo. Edited December 14, 2015 by val_carter (see edit history) 1 Link to comment Share on other sites More sharing options...
JoseR Posted April 28, 2016 Share Posted April 28, 2016 De antemano dar las gracias a val_carter por la aportación! Viendo que no se acaba de solucionar a nivel "oficial", alguien ha probado esta solución? Me parece muy elogiable el trabajo, pero no me gusta mucho modificar estos archivos pues en cualquier actualización te los pueden volver a cambiar y a veces se vuelve un poco locura... Saludos. Link to comment Share on other sites More sharing options...
Code-Plus Posted May 3, 2016 Share Posted May 3, 2016 Buenas, por casualidad usáis todos el mismo tema? Saludos Link to comment Share on other sites More sharing options...
JoseR Posted May 4, 2016 Share Posted May 4, 2016 En mi caso es un tema de pago: Diseñado por Chetan Maisuria He probado más alternativas que hay en distintos hilos pero sin éxito! es un poco desesperante... Gracias por el interés! Link to comment Share on other sites More sharing options...
val_carter Posted May 4, 2016 Share Posted May 4, 2016 Hola, en mi caso es una de pago también, pero creo que salvo caso excepcional no influye, los archivos que comento son del core de prestashop. Un saludo. Link to comment Share on other sites More sharing options...
JoseR Posted May 4, 2016 Share Posted May 4, 2016 (edited) Os paso la solución provisional que han propuesto en el hilo en inglés (https://www.prestashop.com/forums/topic/458999-product-color-picker-does-not-show-at-category-list/page-3) que es ir a Preferencias / Producto > marcar la opción "Mostrar productos no disponibles en la página de producto?" a SI Con esto ya muestra los colores, lo malo es que también muestra los productos que tengan desmarcado el check "Disponible para pedidos" en la ficha del producto... Espero que os sirva hasta encontrar la solución definitiva. Edited May 4, 2016 by JoseR (see edit history) Link to comment Share on other sites More sharing options...
Code-Plus Posted May 6, 2016 Share Posted May 6, 2016 Probar en una instalación limpia, si funciona es del tema que comprasteis, si no es bug de Prestashop. Slaudos Link to comment Share on other sites More sharing options...
val_carter Posted May 6, 2016 Share Posted May 6, 2016 Jejeje, has arrojado mucha luz en el tema. Link to comment Share on other sites More sharing options...
JoseR Posted May 9, 2016 Share Posted May 9, 2016 Code-Plus: aunque es una operación que lleva su tiempo... lo he hecho, he instalado una versión 1.6.1.5 limpia en local con los artículos de demo y sí que aparecen los colores en el listado y la ficha. Lo que he notado es que NO salen en el módulo de Nuevos, Populares, más vendidos y Promociones especiales, pero tanto en el tema de pago que utilizamos como el que viene en la instalación, por lo que eso ya es cosa de la plantilla. Otro detalle es que el entorno de caché no es exactamente el mismo y de hecho no puedo activar las mismas opciones... es complicado hacer un "espejo" del entorno del servidor. Gracias en cualquier caso. Jose. Link to comment Share on other sites More sharing options...
Code-Plus Posted May 10, 2016 Share Posted May 10, 2016 Buenas, a qué te refieres al entorno de caché? Saludos Link to comment Share on other sites More sharing options...
JoseR Posted May 10, 2016 Share Posted May 10, 2016 Perdón, me refería a la configuración de caché, las opciones que se pueden configurar en Prestashop, no pude activar las mismas opciones. Link to comment Share on other sites More sharing options...
Code-Plus Posted May 10, 2016 Share Posted May 10, 2016 Buenas, si la plantilla no está bien escrita, la caché puede provocar lo de las combinaciones. En la tienda que está en producción, desactiva la cache, y desactiva toda la zona de rendimiento de CCC y etc. Recompila todo. Comprueba si sale o no lo de los colores. Saludos Link to comment Share on other sites More sharing options...
JoseR Posted May 13, 2016 Share Posted May 13, 2016 A qué te refieres con "Recompliar todo" ? Gracias. Link to comment Share on other sites More sharing options...
Code-Plus Posted May 14, 2016 Share Posted May 14, 2016 En rendimiento, Forzar compilación. Saludos Link to comment Share on other sites More sharing options...
SOPDIOS Posted June 8, 2016 Share Posted June 8, 2016 Muy buenas, he activado la opción cache en la sección de rendimiento y parece ser que que los colores han salido, cuando lo he vuelto a desactivar a su opción por defecto siguen apareciendo pero no aparecen en la pagina inicial de la tienda, solo aparecen en cada categoría. Alguna sugerencia? Link to comment Share on other sites More sharing options...
SOPDIOS Posted June 20, 2016 Share Posted June 20, 2016 Ayuda por favor!!! Link to comment Share on other sites More sharing options...
slinkychile Posted February 11, 2018 Share Posted February 11, 2018 Hola, me pasaba lo mismo, Hice este cambio en Preferencias / Productos. (Baje a Página de Producto.) ¿Mostrar el botón "añadir al carrito" cuando el producto tenga atributos? colocar NO. Con eso me mostro los colores en la grilla de productos. Version 1.6 Slds. Link to comment Share on other sites More sharing options...
inakyfdez Posted April 6, 2018 Share Posted April 6, 2018 Hola gente, pues yo con mi prestashop 1.7.2 tengo el mismo problema con colores y con listas desplegables. Si pongo más de dos lista desplegables la que está en primer lugar se ve bien, pero las siguientes desaparecen, os dejo una captura. Link to comment Share on other sites More sharing options...
Francisco Ampuero Posted January 3, 2021 Share Posted January 3, 2021 Queridos emprendedores...feliz año 2021!!! Ya han pasado muchos años...y aún no se resuelve esto.???? Estoy actualizando mi página web en PS1.6 (lo intenté en terthy bees y tuve muchos problemas) Nuevamente me encuentro con el error que desaparecen los colores al seleccionar varios productos de distintas categorías...al regresar al INDEX ya NO hay colores en los productos, y nuevamente BORRAR CACHE.... Voy a probar la llamada en SQL que hace nuestro amigo mas arriba....pero me di cuenta por otro comentario que si vuelvo a "guardar atributo color con URL amigable" en atributos ( sin modificarlo...solo abrirlo y volver a guardar...APARECE EL COLOR NUEVAMENTE...yo no entiendo pero al parecer hay problemas con la lectura de la URL amigable entonces???? Espero que alguien vea este mensaje, cruzo los dedos!!! Link to comment Share on other sites More sharing options...
Francisco Ampuero Posted January 3, 2021 Share Posted January 3, 2021 (edited) Lamentablemente no me sirvió ninguna de las opciones. Al elegir varios productos, mas de 6 con el botón seguir comprando...en algún momento se vuelven a perder los colores. Pero insisto....volvía GUARDAR atributo color y aparecieron los colores. y luego probé con desactivar y activar URL amigable y APARENCEN colores nuevamente... Edited January 3, 2021 by Francisco Ampuero CAMBIO DE PALABRA y nota importante (see edit history) 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