Plugin-Reihenfolge beeinflussen

Hallo zusammen,

wie ist der letzte Stand bezüglich der Ladereihenfolge von Plugins? Kann ich die Reihenfolge zweier Plugins programmatisch festlegen?
Es geht darum, dass mein eigenes Plugin nach einem anderen geladen werden muss, da ich Änderungen des fremden Plugins unter bestimmten Bedingungen überschreiben muss.

Ich habe hier gelesen, dass damals das Installationsdatum die Reihenfolge bestimmte, jedoch auch, dass Änderungen geplant waren, dieses Verhalten zu verbessern. Weitere Infos kann ich im Moment leider nicht finden.

Vielleicht hat jemand von Euch ja schon dieses Thema erfolgreich gelöst und kann mir einen Ratschlag geben. Danke sehr!

Ich schließe mich dieser Frage mal an.
Soviel wie ich weiß soll man es ja über die theme.json steuern können.

Hier steht dann drin

"views": [
        "@Storefront",
        "@Theme",
        "@Plugins",
        "@EigenesPlugin"
    ],

Damit soll also das eigene Plugin als letztes genommen werden, leider Funktioniert das nicht und es wird vor anderen Plugins aufgerufen.

Kann mir jemand sagen warum?

Ja, es ist möglich, die Lade- bzw. Vererbungsreihenfolge von Plugins in Shopware 6 zu beeinflussen – auch dann, wenn es sich nicht um ein Theme-Plugin handelt.

In der composer.json deines Plugins kannst du eine Abhängigkeit zum Ziel-Plugin angeben:

{
  "name": "vendor/deinPlugin",
  "type": "shopware-platform-plugin",
  "require": {
    "vendor/Ziel_Plugin": "^1.0"
  }
}
  • „dein Plugin“ wird nach dem „Ziel_Plugin“ geladen.
  • Dadurch werden deine Template-Overrides bei gleichnamigen Twig-Blöcken bevorzugt, da sie später registriert werden.

Alternativ habe ich auch mal was von der funktion getTemplatePriority() gehört, das hatte allerdings nie so richtig funktioniert.

Zusatz:

Füge in deiner „deinPlugin.php“ folgende funktion hinzu:

// <plugin root>/src/deinPlugin.php
    public function getViewPaths(): array {
        $viewPaths = parent::getViewPaths();
        $viewPaths[] = 'Resources/views/storefront';
        return $viewPaths;
    }

und nach der Installation über SSH:

In deinem Shopware-Installationsverzeichnis => z.b. "var/html/" oder "www/meinShop/..."
in der sich auch der "var" ordner deines Shopware-Shops befindet.

Diesen Befehl:

rm -Rf var/cache

Alternativ kannst du auch über FTP den Inhalt dieses Ordners löschen.

Es werden beim Cache leeren nicht immer alle dateien gelöscht…