Wie ist das genau mit dem _default und _emotion-Template?

Liebes Forum, :x :slight_smile: …und ich habe schon wieder eine Frage. shopware ist ja ähnlich wie css kaskadierend aufgebaut. Und wenn man ein neues Template erstellt überschreibt man mit dem genialen -Tag Blöcke des übergeordneten Templates. Wenn man zum Beispiel ein Template mit dem Namen muster_emotion erstellt, dann sind die übergeordneten Templates: _emotion und _default, wenn ich das richtig verstanden habe.
Wie hängt das genau zusammen:
1.) Warum gibt es zwei übergeordnete Templates? Ist das noch ein Überbleibsel von shopware 3. oder hat das einen tieferen Sinn?
2.) Wie ist das genau geregelt? Ist _default dem _emotion übergeordnet (das heißt wenn in _emotion ein Eintrag steht, dann gilt dieser)?
3.) Gibt es eine Regel dafür, was in _default steht und was in _emotion? Oder muss man immer erst in _emotion schauen und dann in _default?
4.) Wie mache ich es, wenn ich aus beiden Templates Blöcke überschreiben möchte? Sucht der extend-Befehl dann die jeweils gültige *.tpl Datei?

Fragen über Fragen, aber das ist echt kompliert. :wink:

Liebe Grüße

Kerstin :slight_smile:

  1. weil shopware so updatefähigkeit sowie nutzbarkeit für viel unterschiedliche userklassen sicherstellen kann. Es gibt ja Leute die können selber sowas wie das emotion schreiben und andere die lassen alles wie es ist und machen nur kleine eigene Änderungen. 2. wenn im emotion ein eintrag steht gilt der, sofern er im default nicht existiert. gibt es ihn im default auch (den block) dann wird er ganz oder teilweise überschrieben oder nur ergänzt. Gibt es den eintrag nur im default zählt das default. 3. Regel was wo steht gibt es wohl…aber das wissen wohl nur die programmierer von shopware. Wenn du länger mit den Dateien beschäftigt bist ergibt sich schon eine Ordnung. Wobei man sich einen guten Teil der Sucherei spart wenn man das Firebug Tool im Browser installiert. 4. {extends file=‘parent:/frontend/index/index.tpl’} das überschreibt mal das emotion und eventuell auch den default block wenn es ihn im emotion nicht gibt (I am not sure) 5. dein eigenes template soll mit dem wort emotion beginnen und nicht muster_emotion
1 „Gefällt mir“

Also meine Anmerkungen (das meiste hat 4now schon korrekterweise beantwortet) dazu: 1. Das ist in der Tat eher ein Überbleibsel. Der Entwicklungsprozess der Templates war wohl nicht so geradlinig wie er hätte sein können, was sich auch an einigen anderen Stellen zeigt. Grundsätzlich ist _default das ältere Template welches die Basis bildet und _emotion das neuere Template, welches viele Sachen im alten Template mit neuen Sachen überschreibt und einige neue 4.x-Funktionen überhaupt erst unterstützt sowie das Design vom alten Template verfeinert. Vielleicht hat auch der Kompatbilitätsgedanke mit reingespielt, man wollte das Update einfacher gestalten. 3. Eine allgemeingültige Regel gibt es nicht. Grundsätzlich: Schau erstmal in _emotion, wenn es dort nichts gibt dann in _default. In manchen Bereichen (Checkout, Kategorieseite) verändert _emotion kaum etwas, und das meiste steht noch im _default. 4. {extends file=‘parent:/frontend/index/index.tpl’} Das Schlüsselwort ‘parent:’ sucht tatsächlich das “Elternelement” von dem es die Inhalte/Blöcke erbt. Wenn dein Template auf _emotion basiert, schaut parent: im _emotion-Verzeichnis nach der index.tpl, wenn diese dort nicht vorhanden ist, schaut es im Elternelement von _emotion: Dem _default Template. Ich hoffe ich konnte alles noch ein wenig spezifizieren. Viel Glück weiterhin! PS: Ein wirklich einfacher Weg rauszufinden, wo es Elemente gibt, ist sich eine Klasse oder Id von dem Element das man ändern will (oder in der Nähe ist) zu nehmen, und diese mit deinem Editor (Notepad++, Sublime Text 2 etc. können das alle) im templates-Verzeichnis zu suchen. Dann bekommt man alle Dateien aufgelistet, in denen der Suchbegriff vorkommt - meistens eine Datei im _default und eine im _emotion. Dann weiss man direkt wo man es ändern muss. :slight_smile:

2 „Gefällt mir“

ganz vielen Dank 4snow und ganz vielen Dank Strongground, das hat mir wirklich sehr geholfen :slight_smile: :slight_smile: Edit: Kann man immer nur einem ein „Danke“ senden?