Custom Shopseite | Default Inhalt (Menüs, Logo, usw) werden nicht angezeigt

Ich brauche für eine Shopseite ein Custom-Template.

Dazu habe ich folgende Datei erstellt: MYTHEME/frontend/custom/about.tpl

Bei der Shopseite habe ich folgendes eingegeben:
Tpl. Variable 1: sContent
Tpl. Pfad 1: frontend/custom/about.tpl

Grundsätzlich funktioniert dies, wenn ich irgendetwas in der Datei eingebe, wird dies angezeigt im Frontend.
Was jedoch gar nicht funktioniert, ist das alle normalen Inhalte (wie z.B. die Menüs, das Logo, usw.) nicht angezeigt werden. 
Als gäbe es die Variablen $sMenu (für die Menüs) und $theme (für z.B. das Logo) nicht. 

Ich habe jetzt zum testen in der Datei about.tpl folgendes eingegeben:

{extends file=„parent:frontend/index/index.tpl“}

Auch folgendes habe ich schon probiert:

{extends file=„parent:frontend/custom/index.tpl“}

 

Immer werden die Menüs, das Logo usw. nicht angezeigt! Auch wenn ich andere bestehende Templates extende, die sonst funktionieren inklusive Menüs, Logo usw. funktioniert dies nicht. 
Habe ich was übersehen oder vergessen?

Ich habe im eigenen Theme natürlich einige Änderungen vorgenommen. Wenn ich zum „Reponsive“-Theme wechsele, funktioniert alles einwandfrei. 
Was könnte ich aber in meinem Theme gemacht haben, weil dies nicht funktioniert?
Eine MYTHEME/frontend/custom/index.tpl-Datei gibt es nicht und in der MYTHEME/frontend/index/index.tpl-Datei habe ich nur einige Blöcke ausgetauscht bzw. mit append und prepend erweitert.
Wenn ich aber in meine about.tpl file {extends file=„parent:frontend/index/index.tpl“} eingebe, sollte dies doch immer vom „Parent“ ausgehen?

(_Cache leer _und Templates neu kompilieren wurden bei jeder Änderung gemacht)

Danke für eure Hilfe!

Hallo  V1nk0,

hast du mittlerweile eine Lösung für dein Problem gefunden? Ich stehe derzeit vor genau der gleichen Problematik.

Beste Grüße!

Btw. In Shopware niemals mit append und prepend arbeiten nur mit smarty.block.parent.

Hiho!

Bin auf die gleiche Problematik gestoßen und komme nicht wirklich weiter.

smarty.block.parent ist leider nicht die Ursache.

Noch jemand eine Idee vielleicht?

Hallo allerseits!

Bin aktuell auch bei diesem Problem angelangt. Wir haben ebenfalls eine Custom Shopseite angelget unter meinTheme/frontend/custom/about.tpl angelegt und dort unseren eingenen Code niedergschrieben.

Ich sehe das gleich wie V1nk0, das Verhalten wirkt als ob die Variabeln nicht vorhanden sind. Habe auch diverse Versuche unternommen um das Logo oder die Sidebar auszugeben. Dabei ist mir aufgefallen wenn ich im Custom Template z.B.

{* Sidebar left *}
{block name="frontend_index_content_left"}
    {include file="frontend/index/sidebar.tpl"}
{/block}

einfüge wird zwar der Block für die Sidebar eingeüfgt aber der Inhalt nicht. Sobald ich den Include rausnehme wird er wie gewohnt weggelassen.

Sonnigen Gruss

DrDrSunshine

Hallo zusammen,

habt ihr eine Lösung dafür gefunden?

VG

Ja und nein. Ich habe jedenfalls herausgefunden, warum dies nicht funktioniert.

Das eigene Template ( Tpl. Pfad 1 ) ersetzt NICHT den ganzen Template, sondern wird nur als Wert der Variable  sContent  ubertragen (hier könnte man wahrscheinlich jede beliebige Variable nehmen)
Sprich, das Template unter Tpl. Pfad 1 sollte nur als einfaches Snippet eingesetzt werden

Ich habe es jetzt so gemacht, dass in der Datei index.tpl im eigenen Theme im Inhaltsbereich nur die Variable {$sContent} ausgelesen wird.
Hier wird dann der normale Inhalt eingegeben, oder, wenn ich für die Content-Seite eingebe:
Tpl. Var 1 = sContent
Tpl. Pfad 1 = pfad zum Custom Template-Snippet
den Inhalt des Custom-Template-Snippets (Tpl. Pfad 1)
Im Custom-Template-Snippet kann dann ebenfalls die Variable {$sContent} ausgelesen werden, die innerhalb des Custom-Template-Snippets  den normalen Seiteninhalt beinhaltet (was im Editor eingegeben wurde)

Ganz schön kompliziert und möglich nicht mal einen offizielen Weg (wenn’s überhaupt einen gibt). Ich bekomme jedoch hin was ich brauche. 

Wenn man einfach nur ein Dropdown-Menü hatte und hier eine eigene TPL-Datei auswählen konnte 
In Shopware sollte man für die Shopseiten und Formulare scheinbar nur die gleichen Layouts machen 

Hi V1nk0,

vielen Dank für deine Antwort. 

Aber es kann doch nicht sein, dass wir das alle irgendwie falsch verstehen?   Undecided
Ich habe nach dieser Anleitung versucht: http://blog.design-und-media.de/2016/01/23/eigene-templates-in-den-shopware-5-shopseiten-verwenden/

Wenn man nach den üblichen “Templating-Regeln” vorgeht, sollte es doch funktionieren die “frontend/custom/index.tpl” im eigenen Theme zu überschreiben bzw. zu kopieren, anzupassen und im Tpl. Pfad 1 anzugeben… 

Ist das vielleicht was für den Issue Tracker, oder sind wir hier total auf dem falschen Dampfer?

Ja, diese Anleitung habe ich damals auch gefunden.

Was hier jedoch wichtig ist: beim 4. Schritt steht " wir löschen alles bis auf folgenden Code aus dem Template."
Hier bleibt dann nur mehr ein Snippet bleibt übrig ( keine Extends mehr )
Dieses Snippet kann man dann mit einer bestimmten Variable einbinden.

Im Beispiel der Anleitung wurden ja nur ein paar Blöcke oberhalb hinzugefügt (sprich: Snippet) und kein ganzes Template ersetzt.

Was dies meiner Meinung nach heißt:

  1. Man kann Snippets hinzufügen
  2. Man kann kein ganzes Template ersetzen

Nur der guten Ordnung halber: Snippets und Blöcke sind bei Shopware zwei paar Schuhe! Bitte die richtigen Begriffe verwenden.

@sonic: wie sollte man die Template-Datei nennen, die man bei Tpl. Pfad eingibt? 

Block ist hier wohl auch falsch, da dies nichts mit Blöcke wie Smarty Blocks  zu tun hat. 

Das steht da ja, aber wenn man nach den üblichen Templating-Regeln vorgeht, müsste doch z. B. folgender Code greifen?
 

{extends file="frontend/index/index.tpl"}
{$smarty.block.parent}

{* Breadcrumb *}
{block name="frontend_index_start"}{/block}

{* Custom page tab inner content *}
{block name="frontend_custom_article_content"}
    {$sContent}
{/block}


{* Sidebar left *}
{block name="frontend_index_content_left"}{/block}

 

Keine Ahnung, ich habe mich mit den Shopseiten nicht weiter beschäftigt, weil ich nicht durchgestiegen bin  Grin
Nur da hier im Zusammenhang von „Template-Dateien“ geschrieben wurde: Blöcke fangen mit {block} an und hören mit {/block} auf.
Snippets sind Textbausteine und fangen mit {s name="…"} an und hören mit {/s} auf. Wink
Ich vermute mal: Dem Inhalt eine Blockes wird weiterer HTML-Code aus Deiner Template-Datei eingefügt, ohne die smarty-Überschreibung zu nutzen?
Code-Fragment oder so - glaube nicht, dass ich da gerade eine offizielle Bezeichnung hätte. Wearing-Sunglasses

@Eldan

Dein Code ist für ein Parent-Template.

Was man bei Tpl. Pfad eingibt, ist ein Code-Fragment (nennen wir es mal so).
Wenn man macht was Du vorhast (und ich damals auch vorgehabt habe) extended man im Code-Fragment ein Template das aber bereits als Parent-Template verwendet wird. 
Außerdem wird Shopware das Template wahrscheinlich nicht mit den Variablen außerhalb des Contentseiten-Scopes befüllen (was glaube ich der Grund ist, warum wir die leeren Variablen haben)

Du hast recht.
Rein vom Aufbau mit Tpl. Pfad 1-3 und Tpl. Variable 1-3 verfehlen die Shopseiten aber somit ihren Erweiterungszwecks. 
Ich stell mir gerade nur noch die Frage, was die beste Lösung ist… :frowning:

Wahrscheinlich nur mittels den Einkaufswelten, was ich schon versucht habe, aber auch wieder andere Probleme mit sich bringt… Wenn man in einer Einkaufswelt z. B. Reiter oder ein Akkordion einbauen möchte, funktioniert es nicht. 

Was Du machen könntest ist ein Freitext-Feld erstellen.

Du kannst den Wert dann abfragen in der index.tpl Datei in deinem Theme (/frontend/custom/index.tpl).

Wenn Du aber 5 verschiedene Layouts machen möchtest wirst Du quasi einiges if-elsen müssen :wink:

Die Anleitung hat einen kleinen Fehler:
Ihr müsst schon extenden - aber nicht von frontend/index/index.tpl sondern von parent:frontend/custom/index.tpl
Macht ja auch so Sinn, da Ihr somit ja die index.tpl aus dem Theme - und wenn es die eigene ist - ändert.
Geht dann so weiter, wie mit jeder Templateänderung. Suche den Block Deiner Wahl und bearbeite ihn. Gerade im Testhop gemacht - das Beispiel aus dem Blog.
Also erste Zeile:
 

{extends file="parent:frontend/custom/index.tpl"}

 

Das Beispiel aus dem Blog funktioniert ja, aber ich glaube die machen etwas anderes. 
Hier wird doch nämlich nicht der gesamte Custom-Seite ersetzt mit einem anderen Template, sondern oberhalb einfach etwas  hinzugefügt?

Oder liege ich hier komplett falsch?

Der Originalinhalt Shopseiteninhalt wird auch mit eingefügt, am Ende im Block mit {$sContent}
Ich weiss aber noch nicht 100%, wie der Ablauf genau ist, da man ja drei Templates angeben kann. Da müsste man das erste an das zweite an das dritte gerendert durchreichen. Da wäre extends aber fehl am Platz.
Sagen wir mal so: mit einem Template pro site geht es - den Inhalt positionierst Du ja selber mit {$sContent}
Wie das Ganze mit bis zu drei Templates gehen soll, müsste ich mir noch erarbeiten - brauch ich jetzt aber nicht für mich  Wink
Letztlich müsste sich dazu mal einer von SW äussern.

Edit: Das ist der Originalblock:

{* Custom page tab inner content *}
{block name="frontend_custom_article_content"}
 {$sContent}
{/block}

Der wird im Beispiel komplett überschrieben.

Ja genau, der Seiteninhalt kann man beeinflüßen / überschreiben / ersetzen / erweitern. 

Was ich aber vorgehabt habe, bzw. wozu ich den Beitrag damals erstellt habe, ist um das ganze Template zu ersetzen.
Sprich: inkl. Header, Footer, Sidebar, etc. etc.
Quasi wie ein eigenes parent Template für bestimmte Shopseiten.

Aus anderen Systemen kenne ich einfach die Möglichkeit aus einer Liste mit Layouts auswählen zu können.
Leider ist diese Art von Customization in Shopware anscheinend gar nicht angedacht. 

Ich habe bereits eine für mich halbwegs funktionierende Lösung gefunden in Zusammenarbeit mit Freitextfeldern.