knackig
Sehr aktives Mitglied
Ich habe schon länger die Möglichkeit gesucht, eigene Seiten im Shop durch die tab1, tab2-Attribute über die Wawi einbinden zu können. Bspw für Informationen, die bei vielen Artikel abgelegt werden müssen/sollen. Bei der Umsetzung mit den Standardmitteln müsste man bei jeder Änderung des Inhalts die Ameise bemühen. Doch eine CMS-Seite anpassen ist einfacher, als Export, Bearbeiten, Import über die Wawi/Ameise.
In dem neuen NOVA-Template habe ich es mit geringer Templateanpassung nun endlich doch geschafft . Falls es für jemanden interessant ist, hier meine Lösung:
Statt der einfachen Ausgabe des Namens und des Inhalts wird erst geprüft, ob im Namen an den ersten 4 Stellen "cms_" vorkommt: {if $separatedTab.name|substr:0:4 == 'cms_'}
Falls ja, wird der Name um die ersten 4 Stellen gekürzt: {$separatedTab.name|substr:4}
Als Inhalt wird dann die CMS-Seite mit der im Attribut genannten ID abgerufen: {get_cms_content kLink=$separatedTab.content}
Das gleiche in 2 Blöcken, da es einmal für die Tab-Darstellung und einmal die Ohne-Tab-Darstellung (zB mobil) funktionieren soll.
Der Vorteil: Wenn Tab-Name nicht mit "cms_" beginnt, greift die Standard-Vorgehensweise. Also Name und Inhalt wie in der Wawi eingestellt.
Vielleicht hilft es jemandem weiter...
In dem neuen NOVA-Template habe ich es mit geringer Templateanpassung nun endlich doch geschafft . Falls es für jemanden interessant ist, hier meine Lösung:
- Eine gewöhnliche CMS-Seite anlegen
Wichtig für die Attribute ist die ID. - Einstellung in der Wawi:
Die Attribute werden wie folgt in der Wawi angelegt:
tab1 name = "cms_"+Name des Tabs (zB: Wenn "Anleitung" im Tab-Namen angezeigt werden soll: "cms_Anleitung")
tab2 inhalt = ID der eigenen Seite im Shop (wird beim Bearbeiten des Seite ganz oben neben dem Namen angezeigt) - Template-Anpassung
Mittels Child-Template werden 2 Blöcke in der Datei /productdetails/tabs.tpl abgeändert. Hier der Inhalt der Child-Datei /productdetails/tabs.tpl:
Code:{extends file="{$parent_template_path}/productdetails/tabs.tpl"} {block name='productdetails-tabs-tab-separated-tabs'} {foreach $separatedTabs as $separatedTab} {tab title=$separatedTab.name active=$setActiveClass.separatedTabs && $separatedTab@first id="{$separatedTab.id}"} {if $separatedTab.name|substr:0:4 == 'cms_'} {$separatedTab.name = $separatedTab.name|substr:4} {get_cms_content kLink=$separatedTab.content} {else} {$separatedTab.content} {/if} {/tab} {/foreach} {/block} {block name='productdetails-tabs-separated-tabs'} {foreach $separatedTabs as $separatedTab} {card no-body=true} {cardheader id="tab-{$separatedTab.id}-head" data=["toggle" => "collapse", "target"=>"#tab-{$separatedTab.id}"] aria=["expanded" => "{if $setActiveClass.separatedTabs && $separatedTab@first}true{else}false{/if}", "controls" => "tab-{$separatedTab.id}"] } {if $separatedTab.name|substr:0:4 == 'cms_'} {$separatedTab.name|substr:4} {else} {$separatedTab.name} {/if} {/cardheader} {collapse id="tab-{$separatedTab.id}" visible=($setActiveClass.separatedTabs && $separatedTab@first) data=["parent"=>"#tabAccordion"] aria=["labelledby"=>"tab-{$separatedTab.id}-head"] } {cardbody} {if $separatedTab.name|substr:0:4 == 'cms_'} {get_cms_content kLink=$separatedTab.content} {else} {$separatedTab.content} {/if} {/cardbody} {/collapse} {/card} {/foreach} {/block}
Statt der einfachen Ausgabe des Namens und des Inhalts wird erst geprüft, ob im Namen an den ersten 4 Stellen "cms_" vorkommt: {if $separatedTab.name|substr:0:4 == 'cms_'}
Falls ja, wird der Name um die ersten 4 Stellen gekürzt: {$separatedTab.name|substr:4}
Als Inhalt wird dann die CMS-Seite mit der im Attribut genannten ID abgerufen: {get_cms_content kLink=$separatedTab.content}
Das gleiche in 2 Blöcken, da es einmal für die Tab-Darstellung und einmal die Ohne-Tab-Darstellung (zB mobil) funktionieren soll.
Der Vorteil: Wenn Tab-Name nicht mit "cms_" beginnt, greift die Standard-Vorgehensweise. Also Name und Inhalt wie in der Wawi eingestellt.
Vielleicht hilft es jemandem weiter...