Marketplace Redirect: Erweiterbarkeit
Marketplace Redirect erweitern: weiteren Marktplatz per URL-Builder anbinden, austauschbare Services und Rückwärtskompatibilität.
Marketplace Redirect: Erweiterbarkeit
Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.
Weiteren Marktplatz anbinden
Die URL wird aus der Referenz von je einem Service gebaut, der MarketplaceUrlBuilderInterface implementiert. Der Resolver sammelt alle Services mit dem Tag mmd_sylius_marketplace_redirect.url_builder ein und fragt der Reihe nach, wer den Typ unterstützt.
| Methode | Aufgabe |
|---|---|
supports(MarketplaceType $type) |
Ob dieser Builder den Typ übernimmt |
isValidReference(string $reference) |
Ob die Referenz für diesen Marktplatz gültig ist |
build(string $reference, ?string $region = null) |
Baut die URL, wirft \InvalidArgumentException bei einer ungültigen Referenz |
services:
App\Marketplace\MyMarketplaceUrlBuilder:
tags: ['mmd_sylius_marketplace_redirect.url_builder']
Der Marktplatz-Typ ist ein Enum des Plugins (
MarketplaceTypemit den Fällenamazonundshopware_store) und lässt sich nicht per Konfiguration erweitern. Ein dritter Marktplatz braucht einen neuen Enum-Fall, also eine Änderung am Plugin selbst, und einen passenden Button im Shop-Template.
Austauschbare Services
| Service oder Interface | Zweck |
|---|---|
MarketplaceRedirectProviderInterface |
Liefert den Redirect zu einem Produkt. Per Service-Alias austauschbar |
mmd_sylius_marketplace_redirect.channel_settings_repository |
Öffentlicher Service für die Channel-Einstellungen, damit Tests und der Host darauf zugreifen können |
sylius_twig_hooks.renderer.hookable |
Wird vom Plugin dekoriert und kann vom Host weiter dekoriert werden |
ChannelSettingsRepositoryInterface, ProductMarketplaceLinkRepositoryInterface |
Repositories für Channel-Einstellungen und Links, per Autowiring-Alias erreichbar |
mmd_sylius_marketplace_redirect_plugin.marketplace_redirect_settings, mmd_sylius_marketplace_redirect_plugin.product_marketplace_link |
Die beiden als Sylius-Resource registrierten Entities |
mmd_sylius_marketplace_redirect_plugin_admin_marketplace_redirect_settings |
Grid-ID der Einstellungsliste, über sylius_grid erweiterbar |
Rückwärtskompatibilität
Die Klasse AdminMenuListener ist als @internal markiert: Konstruktoren und Interna können sich in einem Minor-Release ändern. Verlass dich beim Erweitern auf die oben genannten Interfaces und Tags.