Instalación
Requisitos
Magento 2.4.x. PHP 8.1–8.5. Funciona con Hyvä (cualquier tema hijo) y Luma (el tema por defecto de Magento) — el tema activo se detecta automáticamente, sin necesidad de configuración. En cualquier otro tema el módulo no tiene ningún efecto (no hace nada, igual que si estuviera desactivado).
Pasos de instalación
- Añade las credenciales que recibirás por email a
auth.jsonen la raíz de tu proyecto Magento:{ "http-basic": { "repo.codingrow.com": { "username": "...", "password": "..." } } } composer config repositories.codingrow composer https://repo.codingrow.comcomposer require codingrow/module-pppsbin/magento module:enable Codingrow_Pppsbin/magento setup:upgrade && bin/magento setup:di:compile- Pega tu clave de licencia en Admin → Stores → Configuration → Codingrow Extensions → Product Page Pro & SEO → License → License Key, guarda, y luego
bin/magento cache:flush. bin/magento setup:static-content:deploy -f(si estás en modoproduction).
No se requiere ningún paso de compilación Tailwind ni configuración del tema: cada regla de diseño crítica (proporciones de la cuadrícula, posicionamiento fijo, puntos de ruptura) se incluye como CSS puro en los propios templates del módulo, no como clases de utilidad Tailwind.
Configuración
Cinco interruptores independientes en Stores → Configuration → Codingrow Extensions → Product Page Pro & SEO → General:
- Enable column gallery on desktop — cuadrícula de imágenes de 2 columnas en lugar de una imagen a la vez.
- Enable sticky buy-box on desktop — en Hyvä, tanto las imágenes como la columna de precio se vuelven fijas (la que sea naturalmente más corta permanece visible mientras la otra hace scroll); la descripción se mueve bajo la galería, y este ajuste desbloquea los dos siguientes. En Luma, solo la columna de precio/compra permanece fija durante el scroll.
- Enable repeated image strip below description — requiere el ajuste sticky buy-box anterior. Muestra de nuevo todas las imágenes del producto en una fila que se ajusta.
- Enable simplified section titles — elimina el nombre del producto repetido junto a títulos como "Description" (solo Hyvä).
- Enable product SEO structured data — añade un bloque JSON-LD schema.org/Product (nombre, imagen, marca, GTIN, precio, disponibilidad) para los resultados enriquecidos de Google, y rellena una meta description para los productos que no la tienen. No visual; tanto en Hyvä como en Luma, escritorio y móvil por igual; nunca sobrescribe una meta description existente.
Los cinco requieren una licencia válida; sin ella, el módulo se comporta como si estuviera completamente desactivado (diseño por defecto del tema sin modificar, sin ningún error mostrado a los visitantes de la tienda).
| Opción | Qué hace | Predet. | Notas |
|---|---|---|---|
| Clave de licencia | La clave de licencia emitida para este dominio. | — | Pégala tras la compra y vacía la caché. |
| Activar galería en columna en escritorio | Muestra todas las imágenes del producto a la vez en una cuadrícula de 2 columnas en lugar de una cada vez. | Sí | Solo escritorio ≥ 1024px; el móvil mantiene la galería nativa. |
| Activar columna de precio fija en escritorio | Mantiene la columna de precio / añadir al carrito a la vista al desplazarse. | Sí | Requisito de las dos opciones siguientes; mueve la descripción bajo las imágenes. |
| Activar tira de imágenes repetida bajo la descripción | Muestra de nuevo todas las imágenes, a tamaño fijo, en una tira bajo la descripción. | Sí | Requiere la columna de precio fija. |
| Activar títulos de sección simplificados | Elimina el nombre de producto repetido junto a títulos como “Descripción”. | Sí | Solo Hyvä (sin efecto en Luma). |
| Activar datos estructurados SEO del producto | Añade un bloque JSON-LD schema.org/Product (nombre, imagen, marca, GTIN, precio, disponibilidad) para que Google pueda mostrar resultados enriquecidos, y rellena una meta description para los productos que no la tienen. | Sí | No visual; Hyvä y Luma, escritorio y móvil. Nunca sobrescribe una meta description existente. |
Desinstalación
composer remove codingrow/module-ppps y después
bin/magento setup:upgrade && bin/magento setup:di:compile && bin/magento cache:flush.
Guía de usuario
Galería en columnas
En escritorio (1024px en adelante), todas las imágenes del producto se muestran a la vez en una cuadrícula de 2 columnas en lugar de la imagen única más tira de miniaturas de Hyvä o el slider Fotorama de Luma. El móvil nunca se ve afectado — siempre mantiene el comportamiento nativo de la galería del tema (imagen única, tira de miniaturas deslizable debajo).
En Hyvä, esto se implementa como un bloque adicional dentro del propio componente de galería Alpine.js del tema, reutilizando los mismos datos de imagen ya cargados para la galería por defecto — sin estado JavaScript duplicado. En Luma, la cuadrícula se añade junto al widget Fotorama nativo (nunca modificado ni reinicializado); ambos se alternan con CSS puro en el punto de ruptura de escritorio.
Columna de precio fija
En Hyvä: tanto la columna de imágenes como la columna de precio/compra se
vuelven position: sticky — la que sea naturalmente más corta (normalmente la
columna de precio, ya que la columna de imágenes+descripción suele ser más alta) permanece
visible mientras la otra hace scroll. La descripción se mueve de su posición por defecto (bajo
ambas columnas) directamente debajo de las imágenes, dentro de esa misma columna izquierda.
En Luma: solo la columna de precio/compra permanece visualmente fija
mientras haces scroll, entre la cabecera y el final de la sección de información del producto —
la columna de imágenes y descripción siempre hace scroll normalmente. Esto se implementa en
JavaScript (transform: translateY(), recalculado en cada scroll) en lugar de CSS
position: sticky, ya que el posicionamiento fijo resultó no ser fiable combinado
con el diseño nativo de dos columnas basado en flotantes de Luma. La descripción también se
reposiciona directamente debajo de las imágenes (por defecto Luma la coloca a ancho completo
debajo de ambas columnas).
Tira de imágenes repetida
Requiere el ajuste sticky buy-box. Debajo de la descripción, todas las imágenes del producto se muestran de nuevo a tamaño fijo (274×274px), ajustándose de forma natural al reducirse la pantalla — 3 por fila en un ancho de escritorio típico, menos por fila cuanto más se reduce, hasta 1 por fila en móvil. Las imágenes solo se reducen por debajo de su tamaño fijo cuando ni siquiera una sola cabe ya en el ancho disponible.
Títulos de sección simplificados
El tema por defecto de Hyvä muestra "Description / Nombre del Producto" como título encima de la pestaña de descripción — redundante una vez que el nombre del producto ya es prominente en otra parte de una página reorganizada. Este ajuste lo sustituye por un simple título "Description". Las propias pestañas de Luma nunca tuvieron esta repetición, así que el ajuste no tiene efecto visible ahí.
Datos estructurados SEO del producto
Independiente de todo lo anterior, y no es un cambio visual. Cuando está activado, cada página
de producto recibe un bloque JSON-LD schema.org/Product que describe el producto —
nombre, imagen, marca, GTIN/EAN y una Offer con precio, moneda, disponibilidad y
estado del artículo — para que los motores de búsqueda puedan mostrar resultados enriquecidos
(precio y disponibilidad en la SERP, elegibilidad para las fichas de producto gratuitas de
Google). Cada campo es best-effort: lo que el producto no tiene simplemente se omite, nunca un
error, y el bloque se genera de la misma forma en Hyvä y Luma, escritorio y móvil.
El mismo ajuste también rellena una meta description para los productos que no tienen una propia — construida a partir de la descripción corta/larga del producto (o su nombre como último recurso). Nunca toca un producto que ya tiene una meta description, así que solo rellena un hueco.
Fichas de comerciante: devoluciones y envío
Google lee de la ficha de producto las condiciones de devolución y de envío para mostrarlas en sus fichas de comerciante gratuitas, y Search Console las señala como ausentes cuando no están. No pueden deducirse del catálogo — son condiciones comerciales — así que se declaran en la configuración, en Merchant listings (returns and shipping). Ambos bloques están desactivados por defecto y requieren los datos estructurados del producto activos.
- Condiciones de devolución →
hasMerchantReturnPolicy: países (elegidos de la lista de Magento), plazo de devolución, días, cómo vuelve la mercancía, quién paga y el coste cuando lo hay. - Condiciones de envío →
shippingDetails: países a los que envías, coste (0para envío gratuito), tiempos de preparación y entrega en días laborables.
Dos reglas son deliberadas. Un bloque con los campos obligatorios incompletos se descarta entero en lugar de publicarse a medias: Google compara lo que declaras con lo que el cliente encuentra en tu sitio, así que una declaración equivocada vale menos que una ausente. Y con "devoluciones no aceptadas" no se publica ni el método ni quién paga: no hay devolución que describir.
La oferta lleva además validFrom, la fecha desde la que vale el precio publicado: el inicio del precio especial cuando lo hay, si no la fecha de creación del producto. Esa no necesita configuración.
Casi nunca estas condiciones son iguales para todo el catálogo: los tiempos de preparación y entrega cambian entre almacén propio y dropshipping, el envío depende del volumen, el plazo de devolución de lo que se vende. Y el número suele existir ya en el producto, en un atributo que rellena tu importador o tu equipo. Por eso cada uno de esos campos puede apuntar a un atributo del producto — la lista incluye los personalizados — con una casilla para escribir un código que la lista no ofrece. Donde el producto tiene un valor gana él; donde no, se mantiene el valor fijo; y un valor que no es un número recae en el fijo en lugar de publicar un disparate.
Cada número puede venir de un atributo del producto, elegido de la lista del catálogo: aquí los tiempos de preparación y entrega salen de los atributos que rellena un importador.
Soporte Hyvä y Luma
El tema activo se detecta automáticamente (sin necesidad de configuración) recorriendo la cadena de temas padre del tema actual buscando "Hyva" o "Luma" en el código del tema. En cualquier tema que no sea descendiente de Hyvä o Luma, cada plugin de este módulo no hace nada garantizado — la página se renderiza exactamente igual que sin el módulo instalado, nunca un error.
Licencia
Una clave de licencia por dominio Magento, introducida en Stores → Configuration → Codingrow Extensions → Product Page Pro & SEO → License → License Key. La clave la verifica el módulo, y tu tienda no depende de nuestros servidores para funcionar: una incidencia nuestra no la detiene. Cambiar a un nuevo dominio requiere una nueva clave — contacta con soporte con los detalles de tu compra original. La licencia cubre la versión actual más 1 año de actualizaciones y soporte: las versiones publicadas dentro de ese año son tuyas para siempre, y para instalar las posteriores renuevas el soporte (−35%). Para cambiar de dominio: el primer cambio es gratuito e inmediato desde tu área de cliente, después uno al año.