¡Hola @antonio92!
Entiendo perfectamente tu frustración con las alturas desiguales en la cuadrícula de productos en móvil. Es un problema común cuando se pasa de una columna a dos con flexbox si no se manejan bien las propiedades. Para PrestaShop 1.7.3.4 y el tema Classic, la solución suele pasar por asegurar que el contenedor flex esté configurado para estirar sus ítems y que estos no tengan restricciones de altura que lo impidan.
Tu código va por buen camino, pero faltan dos cosas clave: justify-content para distribuir bien el espacio y, más importante, align-items: stretch en el contenedor padre de los productos. Esto hará que todos los elementos product-miniature en la misma fila tengan la misma altura que el elemento más alto de esa fila.
Prueba a reemplazar tu snippet en themes/classic/assets/css/custom.css con este:
@media (max-width: 767px) {
#js-product-list .products {
display: flex;
flex-wrap: wrap;
justify-content: space-between; /* Distribuye espacio entre ítems */
align-items: stretch; /* ESTO es crucial para igualar alturas */
}
#js-product-list .product-miniature {
width: calc(50% - 10px); /* Ajusta para dejar un margen entre columnas */
margin-bottom: 20px; /* Espacio entre filas */
Explicación de los cambios:
justify-content: space-between;: Asegura que haya un espacio equitativo entre las dos columnas y que se peguen a los bordes si no hay más de dos. Si hay un número impar de productos en la última fila, esto puede centrar el último ítem.
align-items: stretch;: Esta es la propiedad clave. Hace que los product-miniature dentro de cada fila flexible se estiren para ocupar la misma altura que el más alto. Esto resuelve directamente el problema de las filas dentadas.
width: calc(50% - 10px);: Ajusta el ancho para dejar un margen de 20px entre las columnas (10px a cada lado). Puedes ajustar 10px según el espaciado deseado.
margin-bottom: 20px;: Añade un espacio entre las filas para una mejor legibilidad.
#js-product-list .product-miniature .thumbnail-container: He añadido un estilo para este contenedor interno para que también sea flexible y estire su altura al 100%.
#js-product-list .product-miniature .product-description: Al darle flex-grow: 1 a la descripción, si existe, se asegura que ocupe todo el espacio disponible, ayudando al estiramiento general.
Recuerda borrar la caché del navegador y de PrestaShop después de aplicar los cambios para verlos reflejados.