developer
21.11.2023

Shopware 6 Theme, Plugin & App Reihenfolge verändern

Verfasst von: Sebastian Aschenbach, Online

Dieser Beitrag richtet sich speziell an Shopware Entwickler.

tl;dr

Grundsätzlich gibt es zwei Möglichkeiten, um die Reihenfolge zu verändern: Im Plugin über die getTemplatePriority Methode, es wird nur die eigene Priorität festgelegt, man hat keinen Einfluss auf Drittanbieter-Plugins.

Oder in einem eigenen Theme. Dort kann die Reihenfolge vollständig verändert werden, das beinhaltet auch die Reihenfolge von Drittanbieter-Plugins. 

Eine Erweiterung aus dem Shopware Store funktioniert nicht wie erwartet?

Viele Erweiterungen überschreiben vorhandene Template (Twig) Blöcke oder verwenden einen vorhandenen CSS Selector um Style Anpassungen durchzuführen.

Wenn mehrere Erweiterungen den gleichen Template (Twig) Block erweitern oder den gleichen CSS Selector verwenden ist es möglich, dass die gewünschte Funktion der Erweiterung nicht erzielt wird, da die Erweiterungen sich gegenseitig blockieren.

Durch das Verändern der Reihenfolge könnte das Problem behoben werden.


Im Plugin über getTemplatePriority

Im Standard wird die Reihenfolge der Plugins über das Installationsdatum festgelegt. Ab Shopware-Version 6.4.12.0 ist es möglich, diese Reihenfolge im Plugin mittels getTemplatePriority() zu verändern.

Diese Neuerung ermöglicht es Entwicklern, die Reihenfolge der Plugins gezielt anzupassen, um bestimmte Templates oder Funktionen priorisiert darzustellen. Dies kann die Gestaltung und Funktionalität eines Shopware-Shops erheblich verbessern, da Entwickler nun mehr Kontrolle über die Darstellung und Funktionalität ihrer Plugins haben. Damit wird die Anpassung und Erweiterung von Shopware 6 noch flexibler und benutzerfreundlicher.

Es besteht die Möglichkeit, die Template-Priorität für eigene Plugins festzulegen, um die gesamte Reihenfolge der Plugins zu verändern, muss allerdings ein eigenes Theme angelegt werden.

Code Beispiel

<plugin root>/src/<plugin class>.php

final class <plugin class> extends Plugin
{
   public function getTemplatePriority(): int
   {
      return 100;
   }
}

Im Theme in der theme.json

In einem eigenen Theme kann die Reihenfolge von Templates(views), Cascading Style Sheets(style), JavaScript(script) und Assets vollständig verändert werden. In der Dokumentation von Shopware sind weitere Informationen vorhanden.

Mit dem Wert @Plugins in "views" wird die Standard-Reihenfolge der Plugins festgelegt (Installationsdatum bzw. getTemplatePriority), es ist jedoch möglich explizit mit dem Plugin Namen z.B. @Pluginone die Reihenfolge zu verändern, indem man es vor bzw. danach setzt.

Beim "style" wird es mit dem Wert @Storefront geladen und kann auch jeweils mit z.B. @Plugintwo verändert werden.

Der Vorteil bei dieser Methode ist, dass auch die Reihenfolge von Drittanbieter Plugins verändert werden kann.

Code Beispiel

// <plugin root>/src/Resources/theme.json

"views": [
  "@Storefront",
  "@Plugins",
  "@Themeone",
  "@Pluginone",
  "@Plugintwo",
  "@Themetwo"
],
"style": [
  "app/storefront/src/scss/overrides.scss",
  "@Storefront",
  "@Themeone",
  "@Pluginone",
  "@Plugintwo",
  "app/storefront/src/scss/base.scss"
],

Referenzen

Hi,

ich bin Thomas. Du brauchst Hilfe im Shopware-Game? Meld dich bei mir!

Projekt starten

tf@krusemedien.com
T +49 2564 5686-148