Vai al contenuto

Architettura

Panoramica

Il modulo è un modulo PrestaShop 9+ standard costruito su Symfony 6.4. PrestaShop fornisce il container Symfony, Doctrine DBAL e tutte le classi del framework — il modulo non include la propria installazione Symfony.

PrestaShop Core
└── Symfony Container / Doctrine DBAL / Hooks
    └── fabfacebookpixel module
        ├── Admin SPA (Vue 3)           ← interfaccia di configurazione del backoffice
        ├── Admin API Controllers       ← endpoint REST consumati dal SPA
        ├── Front Controllers           ← consumer (polling eventi), download esportazione catalogo
        ├── Hooks (fabfacebookpixel.php)← cattura eventi, iniezione JS
        ├── Services
        │   ├── CAEventBuilder          ← costruisce e invia eventi CA, persiste righe FbpEvent
        │   ├── CatalogExportService    ← pipeline di generazione CSV a frammenti
        │   └── Logger                  ← scrive in var/logs/
        ├── Repositories                ← livello di accesso ai dati Doctrine/raw-DB
        └── Entities                    ← entità Doctrine (FbpPixel, FbpPixelSetting, ecc.)

Dependency Injection Symfony

I servizi sono dichiarati in config/services.yml, config/admin/services.yml e config/front/services.yml. Il modulo utilizza l'iniezione per costruttore ovunque. La classe principale del modulo (FabFacebookPixel) non è essa stessa un servizio Symfony — utilizza $this->get(ServiceClass::class) per recuperare i servizi dal container quando necessario all'interno degli hook.

Schema del database

Tutte le tabelle del modulo hanno il prefisso fbp_. Create all'installazione tramite install/install.sql, eliminate alla disinstallazione tramite uninstall/uninstall.sql.

Tabella Scopo
fbp_pixel_setting Impostazioni globali per negozio (campo descrizione, formato immagine, flag iubenda, flag debug, ecc.)
fbp_pixel Configurazioni pixel (ID Pixel, token CA, codice di test)
fbp_pixel_country Ambito paese per pixel (molti-a-molti)
fbp_pixel_currency Ambito valuta per pixel (molti-a-molti)
fbp_catalog_exporter Configurazioni di esportazione del catalogo
fbp_catalog_exporter_category Filtro categoria per esportatore
fbp_catalog_exporter_manufacturer Filtro produttore per esportatore
fbp_catalog_exporter_supplier Filtro fornitore per esportatore
fbp_category_mapping Mappatura categoria PS → tassonomia Google/Facebook
fbp_attribute_mapping Mappatura attributo/caratteristica PS → colonna Facebook
fbp_google_category Cache tassonomia Google
fbp_facebook_category Cache tassonomia Facebook
fbp_guest_context Contesto browser per ospite PS (UA, IP, _fbp, _fbc)
fbp_event Coda eventi: una riga per evento attivato, traccia lo stato di invio CA / JS
fbp_cache_setting Configurazione cache del modulo (timeout, flag di abilitazione)

Multi-negozio / multi-lingua / multi-valuta

  • La selezione del pixel viene risolta per richiesta in base al paese e alla valuta del visitatore.
  • Le impostazioni del pixel (fbp_pixel_setting) sono delimitate per id_shop.
  • Le configurazioni di esportazione del catalogo hanno ciascuna il proprio id_shop, id_lang, id_currency, id_country.
  • Le mappature di categorie e attributi sono delimitate per id_shop.

Cache

Due istanze di cache separate:

Cache Ambito Backend
Cache frontend Gestori di hook (senza container) Symfony\Component\Cache\Adapter\FilesystemAdapter che scrive in _PS_CACHE_DIR_/modules/fabfacebookpixel
Cache backoffice Servizi Symfony Iniettato tramite DI via fabfacebookpixel.cache.di (componente Cache Symfony)

Chiavi di cache per la cache frontend: FabFacebookPixel_PixelRow_{shopId}_{countryId}_{currencyId}, FabFacebookPixel_PixelSettingRow_{shopId}.