injectBeforePlugins true oder false

Komme mir etwas blöd vor das zu Fragen, aber gibt es eine Grundregel wie man den Wert in der Theme.php setzen sollte?

Ich habe ein neues Plugin geschrieben, in dem ich eine .tpl File mit extends und {$smarty.block.parent} überschreibe. Die Änderungen wurden mir aber nicht im Frontend angezeigt - also habe ich in der Theme.php File injectBeforePlugins auf true gesetzt - et voila - funktioniert.

Was bedeutet das nun für schon installierte Plugins (davon sind einige aktiv) - muss ich die nochmal alle auf Funktionalität prüfen? Ich habe glaube ich ein Problem mit dem in den Kopf kriegen der Funktionalität der Veerbung -> Getting started with Smarty

PS: Wir nutzen kein Theme aus einem Plugin, sondern aus dem themes Verzeichnis.

 

$injectBeforePlugins = true

Dies sollte man bei Kundenprojekten bzw. dem eigenem Theme einstellen. Es hat den Vorteil, dass man installierte Plugins überschreiben kann. Da man weiß, welche Plugins man einsetzt, kann man das Theme anpassen, damit die Plugins kompatibel bleiben.

$injectBeforePlugins = false

Dies sollte bei Themes gesetzt sein, die im Community Store vertrieben werden. Man weiß nicht, welche Plugins der Shopbetreiber später einsetzen wird. Daher sollte das Theme vor den Plugins geladen werden. Dies hat den Vorteil, dass ein überschriebener Block im Theme trotzdem von einem Plugin erweitert werden kann, da es in der Reihenfolge später dran kommt.

@simkli schrieb:

$injectBeforePlugins = true

Dies sollte man bei Kundenprojekten bzw. dem eigenem Theme einstellen. Es hat den Vorteil, dass man installierte Plugins überschreiben kann. Da man weiß, welche Plugins man einsetzt, kann man das Theme anpassen, damit die Plugins kompatibel bleiben.

$injectBeforePlugins = false

Dies sollte bei Themes gesetzt sein, die im Community Store vertrieben werden. Man weiß nicht, welche Plugins der Shopbetreiber später einsetzen wird. Daher sollte das Theme vor den Plugins geladen werden. Dies hat den Vorteil, dass ein überschriebener Block im Theme trotzdem von einem Plugin erweitert werden kann, da es in der Reihenfolge später dran kommt.

Genau andersrum XD

(Überschrift 1 sollte heißen „$injectBeforePlugins = false“ und Überschrift 2 analog dazu) 

1 „Gefällt mir“

Woah - verwirrt mich doch nicht noch mehr :smiley: Also ersteres (false) sollte also beim eigenen Theme genutzt werden. Leicht verwirrt bin ich immer noch, da mein aktuelle Plugin nur funktioniert, wenn ich es auf true setze. Aber laut der Beschreibung wird der Block einfach in meinem Theme überschrieben und daher greift mein Plugin nicht. Ich binde also einfach die Blöcke direkt im Theme ein, würde es zwar sauberer lieber über das Plugin mcahen, aber naja…

 

 

Möchte man sein Theme im Communitystore nutzen oder generell felxibel und anpassbar sein sollte die Variable immer auf 

protected $injectBeforePlugins = true;

stehen. Dadurch haben Plugins die Möglichkeit das eigene Theme anzupassen.

Alle änderen, welche man selbst an Plugins machen möchte(und auch auch nur diese) kommen dann in ein zweites Theme welches man erstellt.
Dieses zweite Theme erbt vom ersten und wird im Theme Manager als aktives Theme ausgewählt. In dem Theme wird dann 

protected $injectBeforePlugins = false;

eingestellt.

Fazit: Man hat ein Theme für alle generellen Änderungen am Shopware Theme und ein zweites, welches NUR Änderungen an Plugins enthält.

1 „Gefällt mir“