Shopware Administración & Productividad

Dynamic Product Groups Subcategorías Shopware 6 — DfStreamCategoryTree: filtro de categoría recursivo que incluye las categorías hijas

Un filtro de categoría que por fin desciende por el árbol, sin volver a introducir cada subcategoría a mano.

Crea un grupo dinámico de productos sobre la categoría Hombre, guarda, y el stream devuelve 12 productos en lugar de los 138 esperados. Nada está roto: el filtro Categories de Shopware se basa en las asignaciones directas, y sus productos están en Zapatillas, Botas o Chaquetas, no en la categoría padre. La única salida nativa consiste en marcar veinte subcategorías una por una y repetirlo cada vez que el catálogo evoluciona. DfStreamCategoryTree expone el campo product.categoryTree en el constructor de condiciones: ese campo contiene la ruta completa de ancestros de cada producto, así que seleccionar la categoría padre captura todo el subárbol, incluidas las categorías creadas después.

De un vistazo
  • Nuevo campo Category (including subcategories) en los Dynamic Product Groups
  • Filtrar una categoría padre incluye automáticamente todos los productos de las subcategorías, a cualquier profundidad
  • Se apoya en el campo nativo product.categoryTree del DAL de Shopware, sin consultas adicionales ni impacto en el rendimiento de indexación
  • Cero configuración: instalar, activar y el campo aparece en el selector de condiciones
  • Interfaz de administración traducida al inglés, alemán y francés
Shopware 6.7 PHP 8.2+ Cero configuración 3 idiomas de administración Código fuente incluido
  • Reembolso de 30 días
  • 12 meses de actualizaciones
  • Soporte 24h
www.datafirefly.com/es/
Constructor de condiciones de un grupo dinámico de productos de Shopware 6 con el campo Categoría incluidas subcategorías y el subárbol de categorías recuperado
v1.0.0 · actualizado 2026-08-08
Qué hace

La versión corta.

01

Filtro de categoría recursivo

Seleccione una categoría padre con el operador Is equal to any of: todos los productos ubicados en sus hijos, nietos y niveles inferiores entran en el grupo dinámico.

02

Apoyado en un campo nativo del DAL

El plugin no añade tabla, ni índice, ni consulta. Se limita a exponer product.categoryTree, un campo que Shopware ya mantiene para cada producto mediante el CategoryIndexer.

03

Sigue la evolución del catálogo

Una subcategoría creada después de configurar el grupo se tiene en cuenta de inmediato. Ya no hace falta reabrir cada stream tras reorganizar el árbol.

04

Las variantes también siguen

El campo categoryTree tiene en cuenta la herencia padre-hijo de los productos variables: las variantes de un producto ubicado en una subcategoría aparecen correctamente en el grupo.

05

Convive con el filtro nativo

El campo Categories original sigue disponible. Elige caso por caso entre asignación directa estricta y subárbol completo, en el mismo constructor de condiciones y sobre el mismo stream.

06

Instalación sin efectos secundarios

El plugin se limita a una entrada en la lista de autorización del servicio productStreamConditionService de la administración. Sin sobrecarga de servicios, sin migración en base de datos, desinstalación neutra.

La versión larga

Todo lo que querrías saber antes de instalar.

Una mirada detallada a cómo funciona Dynamic Product Groups Subcategorías Shopware 6 — DfStreamCategoryTree: filtro de categoría recursivo que incluye las categorías hijas, por qué lo construimos así y la lógica detrás de las características anteriores.

§ 01

Por qué el filtro de categoría nativo no desciende por el árbol

El constructor de condiciones de los grupos dinámicos expone un campo Categories que consulta la asociación product.categoriesRo. Esa asociación solo lista las categorías a las que un producto está explícitamente vinculado en su pestaña Categories. Un catálogo bien organizado ubica sus productos en las categorías hoja: un modelo de zapatillas está en Hombre, Calzado, Zapatillas, no en Hombre. La consecuencia es mecánica: un filtro sobre Hombre devuelve solo los escasos productos asignados directamente a ese nivel. No es un error, es el comportamiento documentado de la asociación, pero sorprende sistemáticamente al crear un stream de merchandising sobre una familia entera.

§ 02

Qué hace product.categoryTree

Shopware ya mantiene en cada producto un campo JSON llamado categoryTree que contiene el identificador de todas las categorías de la ruta, desde la raíz hasta la categoría de asignación. El CategoryIndexer lo recalcula en cada desplazamiento de categoría y en cada cambio de asignación de producto. El storefront lo utiliza internamente para los listados de categoría. Un filtro equalsAny sobre este campo con el identificador de una categoría padre recupera por tanto todos los productos cuya ruta pasa por ella, sea cual sea la profundidad. El campo existe y funciona en el DAL, pero la administración no lo ofrece en el selector del constructor de condiciones: no figura en la lista de autorización del servicio productStreamConditionService.

§ 03

El papel exacto del plugin

DfStreamCategoryTree añade una línea a esa lista de autorización y aporta las etiquetas traducidas correspondientes. Eso es todo, y es deliberado. No introduce ningún decorador de servicio, ningún listener de eventos de producto, ninguna tabla, ninguna migración. El filtro construido en la interfaz es un filtro DAL perfectamente estándar, evaluado por el mismo motor que las demás condiciones del stream. También significa que un stream configurado con este plugin sigue siendo legible y utilizable aunque el plugin se desactive más adelante: el filtro sigue funcionando a nivel DAL, solo desaparece la visualización del campo en la interfaz.

§ 04

Casos de uso típicos

Una página de categoría de navegación alimentada por un grupo dinámico sobre toda una familia de productos, sin listar las subcategorías a mano. Una regla de promoción que aplica un descuento a toda una sección, subsecciones incluidas. Un bloque de cross-selling automático construido sobre la sección a la que pertenece el producto consultado. Un feed de exportación o un bloque de Shopping Experience alimentado por un stream que debe reflejar una rama completa del catálogo. En todos estos casos, la versión nativa obliga a reabrir la configuración con cada nueva subcategoría. La versión categoryTree no exige mantenimiento alguno.

§ 05

Instalación y recompilación de la administración

El plugin se instala subiendo un ZIP en Extensions, My extensions, o depositando la carpeta en custom barra plugins y ejecutando después plugin:refresh y plugin:install --activate. Como modifica el comportamiento de la administración, es necesaria una recompilación del bundle admin una vez tras la instalación mediante el comando build-administration o bin barra console bundle:dump seguido de la compilación. En un entorno de producción gestionado por un pipeline de despliegue, esa recompilación suele formar parte ya de los pasos estándar. Una vez recompilada la administración, el campo aparece de inmediato en el selector de condiciones, sin configuración de plugin que rellenar.

§ 06

Lo que el plugin no hace

No sustituye al filtro Categories nativo, se añade junto a él. No modifica el algoritmo de indexación de categorías ni el cálculo de categoryTree, consume lo que Shopware ya produce. No se aplica a los filtros de listado del storefront ni a la navegación por facetas, que dependen de otro mecanismo. No funciona en Shopware Cloud, ya que la versión SaaS alojada por Shopware no permite instalar plugins de servidor. Y no pretende acelerar la evaluación de los streams: al ser el campo nativo e indexado, el coste de evaluación es el de un filtro estándar, ni más ni menos.