Backend
Die Server-Seite des MapsLoader besteht aus der Plugin-Konfiguration, einem dekorierenden Cookie-Provider und einem CMS-Element-Resolver. Alle drei sind in src/Resources/config/services.xml registriert.
Plugin-Konfiguration
Konfiguriert wird das Plugin über src/Resources/config/config.xml. Es gibt zwei Felder in der Karte „Grundeinstellungen":
Schlüssel | Typ | Werte |
|---|---|---|
| single-select |
|
| text | API-Schlüssel des gewählten Anbieters |
Beide Werte werden sowohl server-seitig (Cookie-Provider) als auch client-seitig (siehe Frontend) ausgelesen.
Cookie-Provider
Leoparden\MapsLoader\Framework\Cookie\MapsCookieProvider dekoriert den Shopware-CookieProviderInterface und ergänzt einen anbieter-spezifischen Cookie in der bestehenden Cookie-Gruppe Komfortfunktionen (cookie.groupComfortFeatures):
Der Cookie-Eintrag verwendet den Snippet-Namen plugin.leoparden.MapsLoader.cookie.<provider>, den Cookie-Schlüssel <provider> und eine Gültigkeit von 30 Tagen. Erst nach Zustimmung zu diesem Cookie wird die Karte in der Storefront geladen (siehe Privacy-Block unter Frontend).
CMS-Element-Resolver
Leoparden\MapsLoader\Service\MapsCmsElementResolver ist mit shopware.cms.data_resolver getaggt und für den Element-Typ maps zuständig. Er lädt das in der Element-Konfiguration hinterlegte Marker-Bild als Media-Entity nach:
collect()legt für diemarkerImage-ID einCriteriaauf dieMediaDefinitionan.enrich()hängt die geladene Media-Entity an das CMS-Slot ($slot->setData(...)).
So steht im Storefront-Template element.data.url als Marker-Grafik zur Verfügung.
Plugin-Klasse & Abhängigkeiten
Die Plugin-Klasse Leoparden\MapsLoader\MapsLoader enthält selbst keine Lifecycle-Logik. Die Lizenzprüfung übernimmt das Paket leoparden/plugin-license-manager (ein symfony-bundle), das automatisch für jedes Plugin im Leoparden\…-Namespace greift – im MapsLoader ist dafür kein eigener Code nötig.