Introducción
Obtén etiquetas de estado de producto ("Nuevo", "En venta", "Agotado") para etiquetar y filtrar elementos del catálogo.
Más información sobre los estados de producto en el panel de administración de OneEntry: https://doc.oneentry.cloud/docs/category/catalog
🎯 ¿Qué hace este módulo?
El módulo ProductStatuses proporciona condiciones de filtrado adicionales para los elementos del catálogo junto con filtros basados en atributos. Los estados de producto te permiten crear etiquetas personalizadas - como "Nueva llegada", "Más vendido", "En venta", "Agotado" - para etiquetar, organizar y filtrar productos en tu catálogo de comercio electrónico.
Definís las etiquetas de estado en el panel de administración de OneEntry (Catálogo > Estados de Producto), las asignas a los productos y usas este módulo para obtener los estados y filtrar productos por ellos. El SDK es de solo lectura: no puedes crear estados a través de él.
🚀 Inicio Rápido
Inicializa el módulo desde defineOneEntry:
const { ProductStatuses } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
Obtén todos los estados y lee sus campos:
// Fetch every product status, localized to English.
const statuses = await ProductStatuses.getProductStatuses("en_US");
statuses.forEach((status) => {
console.log(status.identifier, status.localizeInfos.title, status.isDefault);
});
// Or fetch a single status by its marker.
const sale = await ProductStatuses.getProductsByStatusMarker("sale", "en_US");
console.log(sale.localizeInfos.title); // "Sale"
✨ Conceptos Clave
¿Qué es un Estado de Producto?
Un Estado de Producto (IProductStatusEntity) es una etiqueta/etiqueta personalizada para productos:
- Nombre del Estado (
localizeInfos) - Nombre de visualización localizado (por ejemplo, "Nueva llegada", "En venta") - Marcador de Estado (
identifier) - Identificador único utilizado para filtrar - Indicador por defecto (
isDefault) - Si este es el estado por defecto - Posición (
position) - Orden de visualización
Flujo de Trabajo del Estado de Producto
1. Create status in admin panel
(e.g., "New Arrival")
↓
2. Assign status to products
(Select products in admin)
↓
3. Fetch statuses via SDK
(ProductStatuses.getProductStatuses())
↓
4. Display status badges on products
(Render badges in product listings)
↓
5. Filter products by status marker
(Products.getProducts([{ statusMarker }], langCode))
📋 Lo Que Necesitas Saber
Los estados se crean en el panel de administración
No puedes crear estados a través del SDK - se crean en el panel de administración de OneEntry (Catálogo > Estados de Producto). Cada estado necesita un Nombre (requerido) y un Marcador único (requerido).
Restricciones del Marcador:
- Solo letras latinas (a-z, A-Z) y números (0-9)
- Se permiten guiones bajos (
_) y guiones (-) - Sin espacios ni caracteres especiales
- Debe ser único entre todos los estados
El SDK es para obtener estados y filtrar productos, no para crear estados.
Un estado por producto
Un producto hace referencia como máximo a un estado. El objeto del producto lleva statusIdentifier (el marcador de estado, o null):
const product = await Products.getProductById(123);
console.log(product.statusIdentifier); // "in_stock" - status marker, or null
Filtrando por estado
Para filtrar productos por estado, usa el método getProducts(body, langCode, userQuery) del módulo Products. Pasa un campo statusMarker dentro del array del cuerpo IFilterParams para obtener productos con un estado específico.
Validando un marcador
validateMarker(marker) devuelve true si el marcador existe y false en caso contrario. Dado que el SDK no puede crear estados, úsalo para verificar un marcador antes de hacer referencia a él en tu código.
Estado vs atributos
ProductStatuses son diferentes de los atributos de producto:
| Característica | ProductStatuses | Atributos |
|---|---|---|
| Propósito | Etiquetas/insignias/filtros | Propiedades del producto |
| Ejemplos | "Nuevo", "En venta", "Destacado" | Color, Tamaño, Material |
| Por producto | Un estado | Muchos atributos |
| Filtrado | Simple (por marcador de estado) | Complejo (rangos, valores) |
| Caso de uso | Etiquetas de marketing | Especificaciones del producto |
Mejor práctica: Usa estados para etiquetas de marketing, atributos para propiedades del producto.
📊 Tabla de Referencia Rápida
| Método | Descripción | Caso de Uso |
|---|---|---|
| getProductStatuses() | Obtener todos los estados de producto | Listar todos los estados disponibles |
| getProductsByStatusMarker() | Obtener un estado de producto por marcador | Obtener estado por identificador |
| validateMarker() | Comprobar si existe un marcador | Validar marcador antes de usarlo |
❓ Preguntas Comunes (FAQ)
¿Cuál es la diferencia entre los estados de producto y los atributos de producto?
Los estados de producto son etiquetas de marketing (Nuevo, En venta, Destacado) para filtrar y etiquetar, mientras que los atributos son especificaciones del producto (Color, Tamaño, Material). Usa estados para etiquetas promocionales y atributos para propiedades del producto.
¿Puede un producto tener múltiples estados a la vez?
No. Un producto hace referencia como máximo a un estado, expuesto como statusIdentifier (el marcador de estado) en el objeto del producto.
¿Cómo filtro productos por estado?
Usa el método getProducts(body, langCode, userQuery) del módulo Products. Pasa un campo statusMarker dentro del array del cuerpo IFilterParams para obtener productos con un estado específico.
¿Cómo compruebo si existe un marcador de estado?
Usa validateMarker() - devuelve true si el marcador existe y false en caso contrario. El SDK no puede crear estados; los marcadores se definen en el panel de administración siguiendo las convenciones de nomenclatura (solo letras latinas, números, guiones bajos, guiones).
¿Puedo cambiar el orden de los estados mostrados?
Sí. En el panel de administración puedes arrastrar y soltar estados para reordenarlos. Esto afecta al campo position, que determina el orden de visualización en tu aplicación.
¿Cómo añado estilos personalizados a las insignias de estado?
Obtén todos los estados, luego asigna marcadores de estado a clases CSS o estilos en línea en tu código frontend. Aplica estos estilos al renderizar una insignia de producto basada en el statusIdentifier del producto.
🎓 Mejores Prácticas
- Usa marcadores descriptivos -
nueva_llegada, noestado1. - Valida antes de hacer referencia - llama a
validateMarker()antes de codificar un marcador. - Renderiza la insignia de estado - muestra la insignia del
statusIdentifierdel producto en las listas. - Cachea los estados - rara vez cambian, así que cachea para mejorar el rendimiento.
🔗 Documentación Relacionada
- Panel de Administración de OneEntry - Estados de Producto - Documentación oficial del panel de administración
- Módulo de Productos - Gestiona productos con estados
- Módulo de Atributos - Atributos de producto vs estados
- Módulo GeneralTypes - Tipos y categorías de productos
- Módulo de Locales - Nombres de estado en múltiples idiomas