Píldoras PrestaShop de mayo de 2023: 1.7.8.9, SQL y EAN
Las ideas sueltas de mayo de 2023 en la comunidad: por qué convenía actualizar a la 1.7.8.9, consultas para sacar costes y EAN duplicados, la propuesta de Gustavo para las reglas del carrito y avisos de rendimiento.
Mayo de 2023: una actualización de seguridad que convenía aplicar, consultas SQL para sacar costes y EAN repetidos, y avisos de rendimiento. Lo que no dio para ficha.
Actualiza a 1.7.8.9 u 8.0.4: era una versión de seguridad
Cuando alguien preguntó qué versión instalar, la respuesta fue clara: para proyectos nuevos, la 8.0.4; y quien esté en la 1.7, que suba a la 1.7.8.9, porque es importante por seguridad. En junio se repitió el consejo a quien dudaba si pasar desde la 1.7.8.8. En general, sin una razón no se actualiza; con un parche de seguridad, sí, con copia y pruebas. Y si tu versión ya no recibe parches, el plan es cambiar de rama.
Cuánto te costó lo que vendiste en un mes, con una consulta
Un compañero quería el coste de lo vendido en un periodo. Gustavo pidió a ChatGPT una consulta que cruza pedidos, líneas de pedido y el precio de coste (wholesale_price) del producto. Funciona, con un matiz importante: el coste de ps_product es el actual, no el del día de la venta. Las líneas de pedido guardan el coste que había al vender en ps_order_detail.original_wholesale_price; para informes de meses pasados, usa ese campo. Y si no rellenas el precio de coste, la consulta te dará cero.
Localiza los EAN13 repetidos entre combinaciones
Con miles de referencias, un EAN13 duplicado en dos combinaciones hace que marketplaces y módulos se líen con el stock. Un compañero compartió una consulta para encontrarlos; esta es una versión simplificada:
SELECT pa.ean13, pa.id_product, pa.id_product_attribute
FROM ps_product_attribute pa
WHERE pa.ean13 <> '' AND pa.ean13 IN (
SELECT ean13 FROM ps_product_attribute
WHERE ean13 <> '' GROUP BY ean13 HAVING COUNT(*) > 1
)
ORDER BY pa.ean13;Si un producto necesita de verdad varios EAN, nuestro módulo de múltiples EAN lo resuelve sin duplicar.
Un buscador en las reglas del carrito: la propuesta de Gustavo
Al crear una regla del carrito limitada a ciertos productos, PrestaShop muestra listas larguísimas sin buscador. Gustavo se cansó y envió al repositorio oficial una propuesta para añadir un filtro de búsqueda en esos listados: la propuesta en GitHub. A quien la hubiera aplicado a mano en alguna tienda le avisó de que la había actualizado. La propuesta acabó cerrándose sin incorporarse a PrestaShop, así que ese filtro no viene de serie.
Varios productos que comparten el mismo stock
Una tienda de productos personalizados vendía «Taza día del Padre», «Taza día de la Madre», «Taza Comunión»… Distintas en la web, pero todas salen de las mismas tazas blancas del almacén. PrestaShop no tiene stock compartido entre productos, y repartir el stock entre ellos a mano no le servía. Gustavo tiene un módulo de stocks dependientes para esto, y en Rekire tenemos LinkStock, que comparte el stock entre productos, combinaciones y packs.
Cuidado con los hostings que empujan a PrestaShop 8
Gustavo avisó de que algunos hostings estaban recomendando, casi obligando, a actualizar a PrestaShop 8 porque pasaban a PHP 8. Mucha gente lo intentaba desde una 1.7.6 o anterior y se rompía todo. Una 1.7 no funciona con PHP 8: o mantienes PHP 7.4 mientras puedas, o preparas la migración con una copia, módulos compatibles y pruebas. Actualizar porque lo dice el hosting, sin plan, sale caro.
Cabeceras de caché en el .htaccess: prueba antes de dejarlas
Gustavo compartió varios trucos para subir nota en PageSpeed: cabeceras de caché en el .htaccess, compresión y ajustes en head.tpl. Él mismo puso los matices: las mejoras de las pruebas no siempre son reales, y con la caché de imágenes vio que algunas no cargaban al volver a la web, algo que achacó a su propio equipo. También probó Brotli y le fue mejor que Gzip. La norma: verifica que todo funciona después de cada cambio.
Errores de datos estructurados de reseñas sin reseñas
A un compañero, Search Console le avisaba de problemas críticos en fragmentos de reseñas: faltaban ratingValue, reviewCount e itemReviewed. Gustavo fue directo: esos valores no pueden existir si el producto no tiene opiniones. Lo que pasa es que el tema pinta el marcado de reseñas aunque no haya ninguna. No te impide salir en Google, pero ese producto no tendrá estrellas. Lo correcto es que el tema no lo pinte sin reseñas: pídeselo a quien lo mantiene.
3.700 consultas para pintar 16 productos: mira el profiler
Activando el profiling de PrestaShop, Gustavo vio una página que hacía 3.700 consultas SQL para mostrar 16 productos con el módulo de productos de la misma categoría; lo normal está entre 400 y 800. Optimizando, en otras webs ha bajado de 800 a 450 consultas, de 160 a 70 MB de memoria y de 1,7 segundos a menos de uno. Si una página va lenta, el profiler te dice qué la frena. Para hacerlo con informes, tenemos RKR Diagnoses.
Esto salió en @PrestashopEsp, la mayor comunidad PrestaShop de España en Telegram. Ver la conversación