Unterschiedliche Templates pro Shopseite

Hallo, wie der Names des Themas schon sagt, will ich für meine Shopseiten unterschiedliche Templates verwenden. Leider komme ich dabei nicht mehr weiter. Was muss ich bei Tpl.Variable1 und Tpl.Pfad1 eintragen? Habe eigentlich schon alle urls ausprobliert. Von absolut bis hin zu allen möglichen relativen Pfaden. Das einzige was passiert ist, das manchal die Seite nur noch grau wird. Eine zweite möglichkeit die mir ebenfalls recht wäre, wo ich aber auch nicht weiterkomme wäre das ganze über Smarty zu lösen. Also von der Idde her: Wenn URL enthält “datenschutz” dann LOREMIPSUM oderwenn URL enthält “agb” dann LOREMIPSUM else LOREMIPSUM. Vielen Dank schon mal. LG Michael

Hallo, auch mich würde das brennend interessieren. Ich würde gerne ein Template erstellen, mit dem ich auf einigen Shopseiten die linke Spalte ausblenden kann, auf den meisten soll sie aber eingeblendet bleiben. Der Variable $sContent kann ich ja ein beliebeiges Custom Template zuweisen, also beliebigen Content auf der Detailseite anzeigen lassen. Aber die Grundstruktur aus der index.tpl bleibt. Schön wäre es, wenn man verschiedene selbst erstellte Templates (eigene index.tpl) für die Detailseiten diesen Seiten in den EIgenschaften zuweisen könnte. So daß auf einer Shopseite die linke Spalte eingeblendet wird, auf einer anderen nicht, dafür oben ein Menü, usw. Gibt es dafür eine Möglichkeit? Über eure Hilfe wäre ich sehr dankbar Grüße

Hallo Flo, ich würde das direkt im template machen. mit: {if $smarty.server.REQUEST\_URI == "/versand-und-kosten"} template1 {else} template2 {/if} kannst du die URL abfragen. In diesem fall meine „Versand und Kosten“ Seite. Das Geht aber natürlich auch mit kategorien. Ich hatte ein etwas anderes Ziel, weil die Unterschiedlichen Benutzergruppen auf bestimmten Seiten verschiedenen Content sehen sollten, aber das sieht dann so aus. {block name='frontend\_custom\_article\_content'} {if $smarty.server.REQUEST\_URI == "/versand-und-kosten"} {if !$B2B} Versand und Kosten für Shopkunden {else} Versand und Kosten für Händler {/if} {elseif $smarty.server.REQUEST\_URI == "/agb"} {if !$B2B} AGB Shopkunden {else} ABB Händler {/if} {else} {$sContent} {/if} {/block} Mehr zu diesem Thema findest du hier. administration-f55/unterschiedliche-seiteninhalte-je-benutzergruppe-t9468-10.html#p54405 Wie du in den .tpl datein genau die unterschiedlichen Templates reinlädst weis ich leider auch nicht genau. Du könntest aber in der index.tpl von der du gesprochen hast rundherum die IF-Anweisung machen und dann deine 2 Templates direkt darin bauen. Du solltest aber darauf achten das ganze vorhin in dein eigenes Template zu kopieren sonst ists nach dem nächsten update weg. Aber das gilt ja sowieso für jede Template Anpassung. Ich hoffe das hilft dir ein wenig. LG Michael

1 „Gefällt mir“

Hallo, wenn einzelne Teile ausgeblendet werden sollen, dann muss man nur ein eigenes Template anlegen und dort den entsprechenden Block mit den if-Else-Bedingungen neu schreiben. Hier habe ich mal zwei Beispiele. Die Idee mit der URL-Abfrage ist auch schön, aber dann wird die Liste der Bedingungen endlos lang, wenn mehrere Seiten geändert werden sollen (A). Außerdem kann man beliebige freie Attribut-Felder der Artikel abfragen, wenn man einzelne Artikel anders darstellen möchte. Vorsicht: wenn man ganze „Spalten“ ausblendet, muss man eventuell das CSS anpassen und dann muss auch noch eine if-Abfrage zum Einfügen eines neues CSS-Files verwendet werden. Selbiges Beispiel für individuelle CSS: templates-und-design-f57/einkaufswelt-kategorie-mit-eigener-farbe-t10407-10.html {extend …}-Zeile nicht vergessen, wenn nur einzelne Blocks geändert werden sollen. (A.) alle Kategorien einer Hauptkategorie id=8 ändern oder (B.) tatsächlich nur die aktuelle Kategorie. A. {block name='frontend\_index\_content\_left'} {if $sBreadcrumb[0].id eq 8} {\* z. B. eine eigene Template-Datei einbinden \*} {include file='frontend/index/whatsoever.tpl'} {else} {\* Original einbinden \*} {include file='frontend/index/categories\_left.tpl'} {/if} {/block} B. {block name='frontend\_index\_content\_left'} {if $sCategoryCurrent eq 5} {\* z. B. eine eigene Template-Datei einbinden \*} {include file='frontend/index/whatsoever.tpl'} {else} {\* Original einbinden \*} {include file='frontend/index/categories\_left.tpl'} {/if} {/block} Viel Erfolg

1 „Gefällt mir“

@Web-Spirit schrieb:

Hallo Flo,
ich würde das direkt im template machen.

mit:

{if $smarty.server.REQUEST_URI == „/versand-und-kosten“} template1 {else} template2 {/if}

Also ich würde tunlichst davon abraten das so zu machen. 

Problem: Wenn der Seitenname sich verändert dann muss jedes mal das Template angepasst werden. Das bedeutet wieder den Code anpacken! Zudem sieht mir das ganez einfach nicht richtig aus… ich will ja nicht immer die URL bzw URI abfragen müssen.

 

Ich glaube das hier einfach die entsprechende Logik auf dem Template fehlt die dafür sorgt entsprechende tpl einzubauen.

Erstmal was ganz allgemeines. Die Variablen sowie die Pfade werden direkt an die custom/index.tpl übergeben. Wenn hier keine Logik automatisch aufgerufen wird (was auch nicht der Fall ist) liegt es nahe das alle Informationen einfach nur ordnungshalber typenbezeichnete Variablen sind. Also so das ich sie später einfach nur auseinander halten kann.

Jetzt zur Logik

Es gibt 3 TPL-Felder. Diese sollten so eingebunden werden das immer die letzte TPL eingebunden wird… und wenn keine angegeben ist, der Standardsource!

Hier ein Beispiel:

{block name="frontend_index_content"}
    

        {block name="frontend_custom_article"}

            {if !empty($sCustomPage.tpl3path) && $sCustomPage.tpl3path|template_exists}
                {include file=$sCustomPage.tpl3path}
            {elseif !empty($sCustomPage.tpl2path) && $sCustomPage.tpl2path|template_exists}
                {include file=$sCustomPage.tpl2path}
            {elseif !empty($sCustomPage.tpl1path) && $sCustomPage.tpl1path|template_exists}
                {include file=$sCustomPage.tpl1path}
            {else}
                {block name="frontend_custom_article_inner"}
                    {$smarty.block.parent}
                {/block}
            {/if}

        {/block}

    
{/block}

Habe das nicht so getestet… bei mir ist es zwar so im gebrauch aber ich habe in meinem else-Bereich eine andere Gestaltung.

Hier wird erst geschaut ob in tpl3path was drin steht, wenn ja dann wird das TPL eingebunden… wenn nicht dann in 2 und dann in 1… wenn alles nicht zutrifft wird der herkömmliche Inhalt geladen. Es wird auch geprüft ob das TPL existiert. Wenn nicht dann überspringt es auch die IF da sonst Fehler beim Include wären.

Wenn an das hier einbindet dann kann man, so wie in der WIKI beschrieben, TPL-Dateien einbinden.

 

Hoffe das hilft. Auch wenn der Thread schon alt ist. Aber ich habe auch grade danach suchen müssen und durch die Aussagen anderer ist mir erst aufgefallen das eigentlich was in der TPL fehlt. Was evtl. auch in der Wiki ergänzt werden sollte :slight_smile: