4. Eigene Seitentypen integrieren

Nachfolgend wird beschrieben, wie Sie in einem eigenen Plugin zusätzliche Seitentypen für die Login-Weiterleitung aktivieren können. Das könnte notwendig sein, wenn ein von Ihnen verwendeter Standard-Seitentyp von Shopware noch nicht vom Plugin unterstützt wird, oder wenn Sie bereits in einem eigenen Plugin oder durch ein Drittanbieter Plugin neue Seiten hinzugefügt haben. Für diese Anleitung benötigen Sie Programmierkenntnisse.

4.1 Subscriber anlegen

Zuerst müssen Sie an einer beliebigen Stelle in Ihrem Plugin ein Subscriber anlegen. Hier ist zunächst ein vollständiges Beispiel und weiter unten wird das Beispiel erläutert:

<?php declare(strict_types=1);

namespace MyPlugin\Subscriber;

use Momocode\MomoLoginRedirectSW6\Redirect\Event\RedirectActiveCheckEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class LoginRedirectSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
        return [
            RedirectActiveCheckEvent::class => 'onRedirectActiveCheck',
        ];
    }

    public function onRedirectActiveCheck(RedirectActiveCheckEvent $event): void
    {
        if ($event->getRoute() === 'frontend.home.page') {
            $event->setIsActive(true);
        }
    }
}

Im Beispiel wird der Seitentyp "Startseite" beschrieben, welcher schon im Plugin existiert. Sie können nach dieser Logik aber jeden weiteren Seitentyp integrieren. Der Subscriber reagiert auf das "RedirectActiveCheckEvent". Dieses wird ausgelöst, nachdem man sich eingeloggt hat und wenn das Plugin prüft, ob eine Weiterleitung auf die vorherige Seite für diesen Seitentyp aktiviert ist. Im Beispiel wird dann geprüft, ob die beim Event hinterlegte Route (die vorm Login aufgerufene Seite) die Route "frontend.home.page" ist. Dies ist die Symfony-Route der Startseite. Falls es sich um diese Route handelt, wird beim Event die Information gespeichert, dass die Weiterleitung auf diese Seite aktiv sein soll. Sie können hier eine beliebige Logik einbauen und Sie können so theoretisch auch die Logik des Plugins für einzelne Routen überschreiben, sodass die Plugin Konfiguration ignoriert wird und Ihre eigene Logik ausgeführt wird. Den genauen Namen Ihrer Route sollten Sie im entsprechenden Controller Ihres Seitentyps finden.

4.2 Subscriber registrieren

Jetzt müssen Sie Ihren Subscriber nur noch im Service Container registrieren. Fügen Sie dafür folgenden Eintrag in Ihre services.xml ein:

<service id="MyPlugin\Subscriber\LoginRedirectSubscriber">
    <tag name="kernel.event_subscriber"/>
</service>

Hinweis: Sollten Sie sich nicht mit der Shopware Plugin Entwicklung auskennen und unbedingt einen neuen Seitentyp benötigen, können Sie mich gerne unter moritz@momocode.de kontaktieren.

Last updated