Gekauftes Theme anpassen und erweitern

Hallo zusammen,

für unseren Shop haben wir ein Theme gekauft, dessen Templates wir gerne vereinzelt mittels einem eigenen Plugin erweitern möchten. Ich habe gesehen, dass man hierfür ein Child-Theme erstellen kann, welches dann vom Parent-Theme erbt. Für unsere Code-Änderungen mussten wir jedoch auf ein „Plugin“ (CustomPlugin) zurückgreifen, welches bei Erstellung keine theme.json unter CustomPlugin/src/Resources/ führt.

Fragen:

  1. Ist es möglich Vererbungsstrukturen auch in „Plugins“ zu definieren (Equivalent zur theme.json bei Themes)?
{
 "name": "CustomPlugin",
 "views": [
   "@Storefront",
   "@ParentTheme", // Gekauftes Theme von ThemeWare
   "@Plugins",
   "@CustomPlugin" // Eigenes Plugin zum Erweitern der Templates des gekauften Themes
 ],
...
}
  1. Wie findet man heraus, wie der technische Name eines Themes lautet, um dieses in der theme.json oder in den Template-Dateien (XYZ) zu referenzieren?
{% sw_extends "@XYZ" %}

Danke für eure Hilfe!

Viele Grüße
Lutz

Hallo @LutzW ,

  1. Ist es möglich Vererbungsstrukturen auch in „Plugins“ zu definieren (Equivalent zur theme.json bei Themes)?

Nicht das ich wüsste.

  1. Wie findet man heraus, wie der technische Name eines Themes lautet, um dieses in der theme.json oder in den Template-Dateien (XYZ) zu referenzieren?

Normalerweise kannst du hier den Dateiname des Themes nehmen um es vereinfacht auszudrücken z.B. MeinTheme.php dann wäre dies „MeinTheme“.


Warum möchtest du Theme-Logik im Plugin verwenden? Ich würde empfehlen, auch für spätere Unterstützung durch andere, falls dies relevant wäre, das du dich hier möglichst an den Standards orientierst - Das was du beschreibst klingt ziemlich „tricky“ einen Fehler, wenn vorhanden, zu finden.

Am besten du machst die Design-Änderungen in einem Child-Theme. Solltest du zusätzliche Logik benötigen dann kannst du dies natürlich in einem Plugin durchführen und „Werte“ an den View übergeben und diese im Child-Theme verwenden.

Viele Grüße
Marco

1 „Gefällt mir“

Dein Plugin fällt unter @Plugins und ist somit an Position 3 deines Beispiels.

Der technische Name ist in der composer.json dokumentiert. Sehr häufig, bei Plugins aus dem Store vermutlich immer, entspricht der Name dem Ordnernamen unter custom/plugins.

1 „Gefällt mir“