Grundsatzfrage Templatevererbung

Hallo, da ich noch nicht ganz mit den Templatevererbungen und -überschreibungen klar komme, habe ich eine Frage an Euch: Wenn man die Basisdatei, also das Grundgerüst eines Templateteils, bspw. der Artikeldetailseite ändern möchte, geht das recht simpel. Mit folgendem Code kann ich die Ausgabe des Hersteller bspw. entfernen: {extends file=‘parent:frontend/detail/index.tpl’} {block name=‘frontend_detail_index_supplier’}{/block} Will ich dasselbe mit der Artikelnummer machen, geht das aber nicht: {extends file=‘parent:frontend/detail/data.tpl’} {block name=‘frontend_detail_data_ordernumber’}{/block} Die Frage ist nun, warum? Funktioniert die Vererbung abseits der index.tpl anders?

Man sollte im 2. Beispiel auch von der index.tpl erben. Woran es liegt: evtl. daran, dass die data.tpl in die index.tpl inkludiert wird (korrigiert mich bitte, wenn das falsch ist).

Hallo waldicom, [quote=“waldicom”]Man sollte im 2. Beispiel auch von der index.tpl erben. Woran es liegt: evtl. daran, dass die data.tpl in die index.tpl inkludiert wird (korrigiert mich bitte, wenn das falsch ist).[/quote] ich habe weiter getestet. Dabei stellte ich jetzt folgendes Verhalten fest: 1. Wenn ich in meinem Template, in der /frontend/detail/index.tpl folgenden Code einfüge… {extends file='parent:frontend/detail/data.tpl'} {block name='frontend\_detail\_data\_ordernumber'}{/block} …kann ich den betreffenden Block tatsächlich ausblenden. Soweit so gut. Will ich diesen Block nun aber nicht ausblenden, sondern ändern, funktioniert das nicht. Das heißt konkret, die Bezeichnung “Artikel-Nr.” kann nicht ausgefüllt werden. Im Frontend steht dann #DetailDataId#, gefolgt von der Artikelnummer selbst. Daraus schließe ich, dass meine Methode zwar zum Ausblenden funktioniert, im Grunde jedoch eher eine Codevergewaltigung darstellt. :wink: Zu Deinem Vorschlag, die Blockerweiterung direkt von der index.tpl zu erben: Das funktioniert nicht. Füge ich diesen Code… [code] {extends file=‘parent:frontend/detail/index.tpl’} {block name=‘frontend_detail_data_ordernumber’}

{se name=“DetailDataId”}{/se} {$sArticle.ordernumber}

{/block} [/code] …in meine data.tpl (meintemplate/frontend/detail/) ein, erhalte ich einen Laufzeitfehler (500). Wenn dieser Weg also “theoretisch” richtig wäre - habe ich dann einen Bug entdeckt? :wink: Bisher hatte ich das Blocksystem so verstanden, dass man jeweils aus dem hierarchisch höherliegenden Template erbt. Wenn ich die data.tpl also ändern will, würde ich annehmen, von der data.tpl (aus dem Mastertemplate) zu erben. Wie gesagt, direkt das index.tpl zu beerben scheint nicht zu funktionieren (Laufzeitfehler 500). Hat noch niemand versucht die Artikeldetailseite anzupassen? :frowning:

Hallo Tom, habe das gleiche Problem schon mal in diesem Thread beschrieben: post45473.html#p45473 Ich wollte hier die Attribute ausblenden. Gruß Jürgen

Hallo, ich habe mal dein Problem getestet und bei mir wird mit dem folgenden Code, die Artikelnummer wie gewünscht ausgeblendet: {extends file='parent:frontend/detail/data.tpl'} {block name='frontend\_detail\_data\_ordernumber'} {/block} Bitte auch den Cache ab und zu mal leeren, das wird gerne vergessen. Vielleicht lag das Problem darin. Wegen dem #DetailDataId#, das liegt daran, das der Textbaustein in der detail/index.tpl neu erstellt wurde, aber noch kein Inhalt definiert ist. Hoffe, ich konnte etwas weiterhelfen. Gruß Manuel Edit: Am besten noch die detail/index.tpl erstellen und folgenden Code einfügen: {extends file='parent:frontend/detail/index.tpl'}

Hallo Luhner, [quote=„Luhner“]Hallo, ich habe mal dein Problem getestet und bei mir wird mit dem folgenden Code, die Artikelnummer wie gewünscht ausgeblendet: {extends file='parent:frontend/detail/data.tpl'} {block name='frontend\_detail\_data\_ordernumber'} {/block} Bitte auch den Cache ab und zu mal leeren, das wird gerne vergessen. Vielleicht lag das Problem darin. Wegen dem #DetailDataId#, das liegt daran, das der Textbaustein in der detail/index.tpl neu erstellt wurde, aber noch kein Inhalt definiert ist. Hoffe, ich konnte etwas weiterhelfen. Gruß Manuel Edit: Am besten noch die detail/index.tpl erstellen und folgenden Code einfügen: {extends file='parent:frontend/detail/index.tpl'}[/quote] aus Deinem letzten Edit schließe ich, dass Du die zuerst genannten Codebeispiele in einer /frontend/detail/data.tpl ausprobiert hast. Ist das richtig? Also das funktioniert bei mir definitv nicht! Wenn ich diesen Code in der data.tpl einsetze, passiert: NIX. Nur wenn ich diesen Code in der /frontend/detail/index.tpl einsetze kann ich den betreffenden Bereich ausblenden. Mehr aber auch nicht. Änderungen an der Ausgabe funktionieren in dieser index.tpl nicht. Da tritt mein o.g. Fehler auf. Daher nahm ich an, dass Änderungen an der Ausgabe, bspw. der Artikelnummer, in der data.tpl zu machen seien. Aber selbst wenn ich nur eine simple CSS-Formatierung hinzufüge, wird jene ignoriert. Und ja, Cache ist geleert und hilft nicht. :wink: Meine Erweiterung, der CSS-Inlinecode, wird nicht realisiert. Man sieht den Code auch nicht im Quelltext (im Browser), woraus ich schließe, dass die data.tpl überhaupt nicht zum Einsatz kommt. Mein Versuch in der /frontend/detail/data.tpl: [code] {extends file=‚parent:frontend/detail/data.tpl‘} {block name=‚frontend_detail_data_ordernumber‘}

{se name=„DetailDataId“}{/se} {$sArticle.ordernumber}

{/block} [/code] und die /frontend/detail/index.tpl sieht so aus: {extends file='parent:frontend/detail/index.tpl'} {block name='frontend\_detail\_index\_supplier'}{/block} …hier blende ich den Hersteller aus. Das funktioniert. Und Du hast also diese beiden Dateien (index.tpl und data.tpl) mit den genannten Codes benutzt und dann wird Dir ein schwarzer Rahmen um die Artikelnummer angezeigt?

Hallo TomBOX, ja hatte ich vergessen mit anzugeben. detail/data.tpl [code] {extends file=‚parent:frontend/detail/data.tpl‘} {* Order number *} {if $sArticle.ordernumber} {block name=‚frontend_detail_data_ordernumber‘}

{se name=„DetailDataId“}{/se} {$sArticle.ordernumber}

{/block} {/if} [/code] So habe ich das gelöst und per CSS die p.ordernumber angepasst. Bei mir funktioniert die Vererbung auch ohne die detail/index.tpl. Schon etwas merkwürdig, warum das bei dir nicht funktioniert. Was passiert denn, wenn du die detail/data.tpl aus dem emotion-Ordner in dein Template-Ordner kopierst und du dort deine Änderung vornimmst? Gruß Manuel

Hab jetzt mal die data.tpl vom Emotion-Template in mein Template kopiert und dort die Änderungen vorgenommen. Dann funktionieren die Änderungen.

Also ich hatte bislang mit dem Basistemplate “orange” gearbeitet. Damit scheint es Probleme zu geben. Ich teste jetzt einmal mit dem emotion…

Hallo, [quote=“amroit”]Hab jetzt mal die data.tpl vom Emotion-Template in mein Template kopiert und dort die Änderungen vorgenommen. Dann funktionieren die Änderungen.[/quote] Du hast die data.tpl aus dem Ordner /_emotion/frontend/detail in den Ordner /emotion_DEINTEMPLATE/frontend/detail kopiert, dann diese data.tpl mit dieser Zeile versehen: {extends file=‘parent:frontend/detail/data.tpl’} und dann funktionieren Änderungen in dieser Datei? *nichglaubenkann* :shock:

Hallo, das extends kannst du dann weglassen, da die data.tpl die gleiche ist, wie die Originale. Also nur die Datei kopieren und den Inhalt nach deinen Wünschen anpassen. Gruß Manuel

1 „Gefällt mir“

[quote=„Luhner“]Hallo, das extends kannst du dann weglassen, da die data.tpl die gleiche ist, wie die Originale. Also nur die Datei kopieren und den Inhalt nach deinen Wünschen anpassen. Gruß Manuel[/quote] Hm… interessant. DAS funktioniert. :wink: Allerdings klärt das noch immer nicht die Frage warum man die Erweiterung einzeln nicht funktioniert. Das erscheint wie eine Schießerei mit Kanonen auf Spatzen, wenn ich jetzt für alle Subtemplates, die sich auf die jeweiligen index.tpl-Dateien beziehen, immer gleich komplett nutze und anpasse. Dann bräuchten wir ja kein Vererbungssystem mehr. Außerdem entsteht dadurch ein unübersichtlicher Overhead. Hm…

Ich hab die data.tpl nur kopiert. Die Zeile {extends file=‚parent:frontend/detail/data.tpl‘} hab ich nicht hinzugefügt. Irgendwas stimmt hier mit der Vererbung nicht. Vielleicht gibt uns ja Shopware mal einen Tipp dazu.

Wie gesagt, habe ich das auch mit der Vererbung getestet und da habe ich auch keine Probleme. Warum das nun bei euch nicht funktioniert, weiß ich leider auch nicht, aber Hauptsache ihr könnt erstmal dami weitermachen. Gruß Manuel

Hallo, seit dem Update auf die 4.04 Version funktioniert die Templatevererbung. Danke an das Shopware-Team.

das sowas [quote]#DetailDataId#[/quote] dann da steht liegt daran, dass auf dieser seite der textbaustein nicht definiert ist. Könnte man aber im Backend unter Textbaustein einfach nachtragen. (nach [DetailDataId suchen und wertzuweisen). hat aber mit dem eignetlichn thema nich ganz so viel zu tun

Hallo nochmal von meiner Seite, nachdem ich ja eine ganze Weile an meiner Problemlösung saß, kann ich nun zusammenfassend sagen, dass manche Fehler durch die 4.0.4. und manche auch von mir selbst behoben werden konnten. Allen, die Probleme mit der Vererbung haben, sei mein Lösungspost (Link: templates-und-design-f57/banner-verschieben-defektes-block-system-t9476-10.html?hilit=banner#p46644) ans Herz gelegt. :happy: