Saltar a contenido

Arquitectura

Visión general

El módulo es un módulo estándar de PrestaShop 9+ construido sobre Symfony 6.4. PrestaShop proporciona el contenedor de Symfony, Doctrine DBAL y todas las clases del framework — el módulo no incluye su propia instalación de Symfony.

PrestaShop Core
└── Symfony Container / Doctrine DBAL / Hooks
    └── fabfacebookpixel module
        ├── Admin SPA (Vue 3)           ← interfaz de configuración del backoffice
        ├── Admin API Controllers       ← endpoints REST consumidos por el SPA
        ├── Front Controllers           ← consumidor (sondeo de eventos), descarga de exportación del catálogo
        ├── Hooks (fabfacebookpixel.php)← captura de eventos, inyección de JS
        ├── Services
        │   ├── CAEventBuilder          ← construye y envía eventos CA, persiste filas FbpEvent
        │   ├── CatalogExportService    ← pipeline de generación de CSV por fragmentos
        │   └── Logger                  ← escribe en var/logs/
        ├── Repositories                ← capa de acceso a datos Doctrine/raw-DB
        └── Entities                    ← entidades Doctrine (FbpPixel, FbpPixelSetting, etc.)

Inyección de dependencias de Symfony

Los servicios se declaran en config/services.yml, config/admin/services.yml y config/front/services.yml. El módulo usa inyección por constructor en todas partes. La clase principal del módulo (FabFacebookPixel) no es un servicio de Symfony en sí misma — usa $this->get(ServiceClass::class) para obtener servicios del contenedor cuando es necesario dentro de los hooks.

Esquema de base de datos

Todas las tablas del módulo tienen el prefijo fbp_. Se crean en la instalación mediante install/install.sql y se eliminan en la desinstalación mediante uninstall/uninstall.sql.

Tabla Propósito
fbp_pixel_setting Configuración global por tienda (campo de descripción, formato de imagen, indicador de iubenda, indicador de depuración, etc.)
fbp_pixel Configuraciones de píxel (ID de Píxel, token CA, código de prueba)
fbp_pixel_country Ámbito de país por píxel (muchos a muchos)
fbp_pixel_currency Ámbito de moneda por píxel (muchos a muchos)
fbp_catalog_exporter Configuraciones de exportación del catálogo
fbp_catalog_exporter_category Filtro de categoría por exportador
fbp_catalog_exporter_manufacturer Filtro de fabricante por exportador
fbp_catalog_exporter_supplier Filtro de proveedor por exportador
fbp_category_mapping Mapeo de categoría PS → taxonomía de Google/Facebook
fbp_attribute_mapping Mapeo de atributo/característica PS → columna de Facebook
fbp_google_category Caché de taxonomía de Google
fbp_facebook_category Caché de taxonomía de Facebook
fbp_guest_context Contexto del navegador por invitado de PS (UA, IP, _fbp, _fbc)
fbp_event Cola de eventos: una fila por evento disparado, rastrea el estado de envío CA / JS
fbp_cache_setting Configuración de la caché del módulo (tiempo de expiración, indicador de activación)

Multi-tienda / multi-idioma / multi-moneda

  • La selección de píxel se resuelve por solicitud a partir del país y la moneda del visitante.
  • Los ajustes de píxel (fbp_pixel_setting) están delimitados por id_shop.
  • Las configuraciones de exportación del catálogo tienen cada una su propio id_shop, id_lang, id_currency, id_country.
  • Los mapeos de categorías y atributos están delimitados por id_shop.

Caché

Dos instancias de caché separadas:

Caché Ámbito Backend
Caché frontend Manejadores de hooks (sin contenedor) Symfony\Component\Cache\Adapter\FilesystemAdapter escribiendo en _PS_CACHE_DIR_/modules/fabfacebookpixel
Caché del backoffice Servicios de Symfony Inyectado por DI mediante fabfacebookpixel.cache.di (componente Cache de Symfony)

Claves de caché para la caché frontend: FabFacebookPixel_PixelRow_{shopId}_{countryId}_{currencyId}, FabFacebookPixel_PixelSettingRow_{shopId}.