# DataFirefly Guía de tallas — Documentación

> Descripción general DataFirefly Guía de tallas añade a su tienda PrestaShop un sistema completo de guías de tallas modulables por categoría, fabricante o producto, con tablas de equivalencia EU/US/UK/FR/JP, calculadora…

- Página: <https://www.datafirefly.com/es/documentation/guide-des-tailles-prestashop/>
- Idioma: es
- Actualizado el: 2026-09-01
- Otros idiomas: [fr](https://www.datafirefly.com/documentation/guide-des-tailles-prestashop/index.md), [en](https://www.datafirefly.com/en/documentation/guide-des-tailles-prestashop/index.md), [de](https://www.datafirefly.com/de/documentation/guide-des-tailles-prestashop/index.md), [pl](https://www.datafirefly.com/pl/documentation/guide-des-tailles-prestashop/index.md), [it](https://www.datafirefly.com/it/documentation/guide-des-tailles-prestashop/index.md), [nl](https://www.datafirefly.com/nl/documentation/guide-des-tailles-prestashop/index.md), [pt](https://www.datafirefly.com/pt/documentation/guide-des-tailles-prestashop/index.md)
- Índice: <https://www.datafirefly.com/es/documentation/llms.txt>

## Descripción general

**DataFirefly Guía de tallas** añade a su tienda PrestaShop un sistema completo de guías de tallas modulables por categoría, fabricante o producto, con tablas de equivalencia EU/US/UK/FR/JP, calculadora interactiva de recomendación de talla, página SEO indexable dedicada por categoría, y widget de feedback post-compra con puntuación de sesgo agregada.

El módulo se dirige a tiendas de textil y calzado donde más del 20% de las devoluciones se deben a problemas de talla. Transforma esta fricción en un recorrido de compra tranquilizador: el cliente ve la tabla correcta automáticamente, puede introducir sus medidas para obtener una recomendación personalizada, y usted recoge feedback cualificado que permite detectar productos mal escalados.

### Compatibilidad

- PrestaShop 8.0.x, 8.1.x, 8.2.x, 9.0.x
- PHP 8.1, 8.2, 8.3
- Multi-tienda (todas las asignaciones están acotadas por `id_shop`)
- Polylang FR/EN/ES/DE/IT/NL/PL listo para usar
- Temas classic, hummingbird y temas custom (7 posiciones diferentes disponibles)

## Instalación

1. Suba el ZIP `dfsizeguide.zip` desde **Módulos → Module Manager → Subir un módulo**.
2. Haga clic en **Instalar**. Las 13 tablas preset (textil mujer y hombre superior e inferior, vestidos, sujetadores, calzado mujer, hombre y niños, ropa infantil, guantes, sombreros, anillos, cinturones) se crean automáticamente en 7 idiomas, y se crea una asignación por defecto sobre la tabla textil mujer.
3. Al terminar la instalación, la pestaña "Guía de tallas" aparece en todas sus fichas de producto sin configuración adicional.
4. Vaya a **Módulos → DataFirefly Guía de tallas → Configurar** para ajustar las posiciones, la unidad por defecto y las funciones activadas.

## Conceptos clave

### El resolutor de tablas de 5 niveles

Cuando un cliente llega a una ficha de producto, el módulo busca qué tabla mostrar siguiendo una prioridad estricta:

1. **Producto** — si ha asignado explícitamente una tabla a este producto concreto, gana.
2. **Categoría + Fabricante** — si no, la tabla asignada al par formado por una categoría del producto y su marca. Al ser más específico que cada dimensión por separado, este nivel prevalece sobre los dos siguientes. Las categorías se recorren de la más profunda a la más general.
3. **Fabricante** — si no, la tabla asignada a la marca del producto.
4. **Categoría** — si no, la primera categoría del producto que tiene una tabla, empezando por la más profunda (la especificidad gana).
5. **Por defecto** — si no, la tabla marcada como fallback global.

Esta jerarquía permite mantener una sola tabla por marca o por sección sin tocar las fichas de producto individuales, conservando la posibilidad de override quirúrgico.

### Tipos de columnas

Cada tabla está compuesta de columnas tipadas:

- **Columna "talla"** — un solo valor de texto por fila (S, M, 38, XL). Utilizada para las equivalencias internacionales (EU, US, UK, FR, JP).
- **Columna "medida"** — un rango numérico min/max por fila (ej. contorno de pecho 88–92 cm). Utilizada para indicar las medidas corporales que corresponden a cada talla.

La calculadora interactiva se apoya exclusivamente en las columnas "medida" para determinar la talla recomendada.

## Configuración

### Posiciones en la ficha de producto

El módulo expone 7 posiciones activables individualmente en **Configurar → Posiciones ficha producto**:

- **Pestaña de producto** (activada por defecto, recomendada) — hook `displayProductExtraContent`, añade una pestaña limpia junto a "Descripción" y "Detalles". Funciona en la práctica totalidad de temas PS 1.7+.
- **Bajo el precio** — hook `displayProductPriceBlock` (tipo `after_price`), renderiza un enlace compacto justo debajo del precio.
- **Cerca del botón "Añadir al carrito"** — hook `displayProductActions`, renderiza un botón compacto.
- **Bajo la información del producto** — hook `displayProductAdditionalInfo`, renderiza un botón prominente.
- **En el bloque de garantías** — hook `displayReassurance`, se integra visualmente con sus otros argumentos (envío, devoluciones).
- **Después de las imágenes del producto** — hook `displayAfterProductThumbs`, renderiza un botón compacto justo bajo la galería.
- **Al pie de la página de producto** — hook `displayFooterProduct`, renderiza un botón prominente al pie de página.

Puede activar varias posiciones en paralelo: la modal de la guía se instancia una sola vez en el DOM (anti-duplicado), y los botones adicionales abren la misma modal.

La pestaña de producto es la única posición que renderiza la tabla _inline_. Las otras 6 posiciones renderizan un botón que abre la modal.

### Parámetros generales

- **Unidad por defecto** — cm o pulgadas. El cliente puede cambiar al vuelo, la preferencia se conserva en el cálculo.
- **Calculadora interactiva** — activa la introducción de medidas y la recomendación de talla (activada por defecto).
- **Feedback de cliente post-compra** — activa el widget que pregunta al cliente si la talla era adecuada (activado por defecto).
- **Datos estructurados JSON-LD** — activa la inyección del marcado Schema.org para mejorar el SEO (activado por defecto).
- **Color de acento** — color de los botones, de la unidad activa y de la fila destacada. Ajústelo a su tema; el tono de hover se calcula automáticamente.
- **Slug página SEO** — prefijo de la URL de las páginas de guías dedicadas (por defecto `size-guide`).

## Crear y editar una tabla

Menú **Módulos → Guías de tallas → Tablas**. Haga clic en "Añadir" para crear una tabla nueva, o en el icono del lápiz para editar una tabla existente.

### Campos de la tabla

- **Código interno** — identificador técnico único (ej. `mujer-vestidos-2026`). Utilizado en las URL SEO y en los logs.
- **Tipo** — textil superior, textil inferior, vestido, calzado, o custom.
- **Nombre** — etiqueta multilingüe mostrada a los clientes (título de la pestaña, título de la modal, h1 de la página SEO).
- **Introducción (HTML)** — contenido multilingüe mostrado encima de la tabla.
- **Instrucciones de medida (HTML)** — sección plegable que explica cómo tomar cada medida.
- **Pie (HTML)** — contenido multilingüe mostrado bajo la tabla (aviso, enlace a política de devoluciones, etc.).
- **Meta title / Meta description** — para la página SEO dedicada.
- **Activo** — interruptor on/off. Una tabla inactiva nunca se sirve aunque esté asignada.

### Editar la tabla

Bajo el formulario de la tabla, un editor visual permite construir el tabla:

1. Haga clic en **Columna talla** para añadir una columna textual. Rellene el código (ej. `eu`, `intl`) y la etiqueta multilingüe.
2. Haga clic en **Columna medida** para añadir una columna numérica. Rellene el código (ej. `chest_cm`) y la unidad (cm, pulgadas, mm).
3. Haga clic en **Fila** para añadir una fila. Rellene las celdas: texto simple para las columnas "talla", valores min/max para las columnas "medida".
4. Haga clic en **Guardar**. El guardado se realiza en una transacción SQL atómica — o se guarda todo, o no se guarda nada.

### Duplicar una tabla

El botón **Duplicar** de la lista copia en profundidad la tabla, sus traducciones, sus columnas y sus etiquetas, sus filas y todas sus celdas. Útil para derivar una variante de una tabla existente en lugar de partir de una tabla vacía.

Dos puntos a tener en cuenta. Las asignaciones no se copian: son únicas por destino, así que duplicarlas robaría los destinos de la tabla original. Y la copia se crea **inactiva**, para que no pueda servirse antes de su revisión. El código interno se deriva automáticamente (`mujer-tops` pasa a `mujer-tops-copy`) ya que debe seguir siendo único.

## Asignar una tabla

Menú **Módulos → Guías de tallas → Asignaciones**.

1. Elija la tabla a asignar en la lista.
2. Elija el tipo de destino: Por defecto (fallback global), Categoría, Fabricante, Categoría + Fabricante, o Producto.
3. Según el tipo, aparece un segundo campo para elegir la categoría (en un árbol indentado), la marca (desplegable) o el ID del producto (entrada directa).
4. Haga clic en **Añadir / Actualizar**. Si ya existe una asignación para este destino, se sobrescribe (upsert).

Todas las asignaciones están acotadas por tienda en multi-tienda. Puede tener una tabla diferente para la misma categoría en dos tiendas del mismo grupo.

### Modificar una asignación

El lápiz al final de la fila vuelve a cargar la asignación en el formulario, con su tabla, su tipo de destino y su destino. Puede entonces cambiar la tabla, pero también mover la asignación a otro destino o convertir una asignación simple en una combinación categoría + fabricante. La fila en edición se resalta en la lista, y un botón Cancelar permite salir sin cambiar nada.

Mover una asignación a un destino que ya ocupa otra se rechaza con un mensaje explícito, ya que cada destino solo puede llevar una tabla.

## La calculadora de tallas

La calculadora aparece bajo la tabla, únicamente si la tabla tiene al menos una columna "medida".

### Algoritmo de puntuación

El cliente introduce sus medidas en los campos (un campo por columna "medida"). Al enviar:

1. Los valores se normalizan a centímetros (conversión automática si el usuario ha elegido pulgadas: ×2.54).
2. Para cada fila de la tabla, el módulo calcula una puntuación: **+2 puntos** si la medida del cliente cae exactamente en el rango min/max de la celda, **+1 punto** si está cerca (a ±5% del rango), **0 puntos** en otro caso.
3. La fila con la mejor puntuación gana.
4. Los empates se resuelven escogiendo la fila cuyos rangos están más centrados en los valores del cliente.
5. La talla recomendada se extrae prioritariamente de la columna `eu`, luego `fr`, `intl`, `uk`, `us`, `jp`.

### Retorno usuario

La calculadora muestra la talla recomendada con una puntuación de confianza en porcentaje, el top 3 de candidatas posibles cada una con su puntuación, un resaltado de la fila recomendada en la tabla superior, y la lista de medidas que no coinciden con ninguna fila (con aviso).

## Feedback de cliente post-compra

Un widget "¿La talla era adecuada?" aparece al pie de la ficha de producto con 5 opciones: muy pequeño, algo pequeño, perfecto, algo grande, muy grande. Solo se renderiza en las siguientes condiciones:

- El cliente está autenticado (sesión activa).
- El cliente ha comprado efectivamente este producto (join con `orders` y `order_detail`, estado válido).
- El cliente no ha dado ya su opinión sobre este producto.

El gating es íntegramente del lado servidor, sin riesgo de bypass.

### Panel de feedback

Menú **Módulos → Guías de tallas → Feedback cliente**. Una síntesis sobre la tabla muestra el número de respuestas en cada categoría de los 5 niveles. Debajo, la lista completa del feedback por producto con el ID del cliente, la talla comprada y la fecha.

### Puntuación de sesgo

Para cada producto con al menos 3 feedbacks, se calcula una puntuación de sesgo:

```
puntuación = ((too_large × 2 + slightly_large) − (too_small × 2 + slightly_small)) / total
```

Una puntuación **positiva** indica que el producto talla sistemáticamente grande (a bajar un escalón). Una puntuación **negativa** indica que talla pequeño (a subir un escalón). Una puntuación cercana a cero indica un buen escalado.

## Página SEO dedicada

El módulo expone una ruta pública por categoría: `/{slug}/{category-link-rewrite}`, donde `{slug}` es el prefijo configurado (por defecto `size-guide`).

Ejemplo: `https://sutienda.com/size-guide/vestidos-mujer`

La página contiene un breadcrumb, el título h1 de la tabla, la introducción, las instrucciones de medida y la tabla completa, la calculadora (si está activada), el pie HTML de la tabla, y un marcado JSON-LD `WebPage` Schema.org que ayuda a Google a entender que la página es una guía práctica.

Las etiquetas meta title y meta description vienen de los campos SEO de la tabla. Configúrelas correctamente para captar búsquedas long tail tipo "guía tallas vestidos mujer".

## Multi-idioma y multi-tienda

El módulo es multilingüe a nivel de tablas (nombre, intro, instrucciones, pie, meta), a nivel de etiquetas de columnas, y a nivel de etiquetas Polylang para las URL.

En multi-tienda, cada asignación (guía → destino) está acotada por `id_shop`. Puede así mostrar la tabla A para la categoría "Calzado" en la tienda francesa, y la tabla B para la misma categoría en la tienda alemana.

## Estructura técnica

### Base de datos

8 tablas con prefijo `dfsg_`: `dfsg_guide`, `dfsg_guide_lang`, `dfsg_column`, `dfsg_column_lang`, `dfsg_row`, `dfsg_cell`, `dfsg_assignment`, `dfsg_feedback`. Todas las tablas se eliminan limpiamente en la desinstalación.

### Hooks utilizados

- `actionFrontControllerSetMedia` — inyección CSS/JS front
- `displayBackOfficeHeader` — inyección CSS/JS admin
- `displayProductExtraContent` — pestaña ficha producto (recomendado)
- `displayProductPriceBlock`, `displayProductActions`, `displayProductAdditionalInfo`, `displayReassurance`, `displayAfterProductThumbs`, `displayFooterProduct` — posiciones alternativas
- `displayHeader` — inyección JSON-LD en las fichas de producto
- `actionValidateOrder` — trigger para futuros recordatorios (v2)
- `moduleRoutes` — página SEO dedicada

## FAQ

### La guía no se muestra en mi ficha de producto, ¿qué hago?

Compruebe primero en **Configurar → Posiciones ficha producto** que al menos una posición está activada (Pestaña de producto por defecto). Si su tema custom no renderiza los hooks nativos de PrestaShop, active varias posiciones en paralelo: al menos una de las 7 debería funcionar. Compruebe también que existe al menos una tabla activa y una asignación por defecto en **Guías de tallas → Asignaciones**.

### ¿Puedo importar tablas desde CSV?

Por ahora no. El editor visual permite construir y editar las tablas al vuelo, columna por columna y fila por fila. La importación CSV está en estudio para una versión posterior.

### ¿Funciona la calculadora sin JavaScript?

No, la calculadora es interactiva y necesita JavaScript para hacer la llamada AJAX al servidor. Sin embargo, la tabla estática se muestra perfectamente sin JS, lo que preserva la accesibilidad y el SEO.

### ¿Hay riesgo de marcado JSON-LD duplicado?

No. El hook `displayHeader` emite un solo script JSON-LD por página de producto, y la página SEO dedicada tiene su propio marcado `WebPage` distinto. El validador Schema.org de Google no señala ningún duplicado.

### ¿Compatible con la migración PrestaShop 8 a 9?

Sí. El módulo declara `ps_versions_compliancy` de 8.0.0 a 9.99.99, usa las clases ObjectModel y HelperForm que siguen soportadas en PS 9, y no usa ninguna API obsoleta.

### ¿Cómo purgar todos los datos del módulo?

La desinstalación vía Module Manager elimina todas las tablas `dfsg_*` y todas las configuraciones `DFSG_*`. No queda ningún rastro en la base de datos.

## Soporte

Email: [support@datafirefly.com](mailto:support@datafirefly.com). Respuesta en 5 días laborables en francés o inglés.
