[Gelöst] Statischen Seiten eine "active"-Klasse zuweisen

Hallo liebe Foren-Gemeinde, ich versuche mich gerade daran, Links zu statischen Seiten (Shopseiten) beim aktiv werden entsprechend zu kennzeichnen. So wie dies ja beispielsweise auch bei den Links zu den einzelnen Kategorien auch der Fall ist. Dazu habe ich auch folgende Erklärung gefunden: http://wiki.shopware.de/Quicktip-Statischen-Seiten-eine_detail_597_486.html Diese bezieht sich einmal auf Links bestehend aus Listenpunkte und einmal auf reine Textlinks. Da es sich bei meinem Fall jedoch nicht um dynamisch erzeugte, sondern und fest angelegte Links handelt, müssten einige Teile dabei raudfallen. Mein Lösungsansatz sieht wie folgt aus: Code: [code]

Seite 1Seite 2Seite 3Seite 4Seite 5[Support]({url controller=‘custom’ sCustom=44})
[/code] Style: #TopNav a, #TopNavSeite1 a, #TopNavSeite2 a, #TopNavSeite3 a, #TopNavSeite4 a, #TopNavSeite5 a, #TopNavSupport a {float:left; color: #000; font-weight: normal; font-size: 16px; padding-left: 11px; padding-bottom: 5px;} #TopNav a:hover {border-bottom: #ff0000 solid 1px;} #TopNav a.active {border-bottom: #ff0000 solid 1px;} Ich habe bei den Shopseiten die Seite “Support” angelegt. Diese heißt im Backend Support(44), sprich, die ID beträgt 44. Das Aufrufen der Seite über {url controller=‘custom’ sCustom=44} funktioniert wunderbar. Ich habe nun beispielsweise in dem Artikel http://wiki.shopware.de/Shopseitendarstellung-ohne-Kontaktbox_detail_776.html folgenden Code-Schnipsel gesehen: {if $sCustomPage.id == 9}AKTION{/if} Daraus leite ich ab, wenn ich {if $sCustomPage.id == 44} class=“active”{/if} verwende, müsste beim Aufrufen der Supporseite (ID = 44) der Link gem. der CSS formatiert angezeigt werden. Tut er aber nicht. Hat einer eine Idee, woran es liegen könnte oder übersehe ich nur etwas? Vielen Dank für Eure Unterstützung! [color=blue]Marco[/color]

Hallo xcreative, hast du dir testweise mal mit {$sCustomPage.id} die Custom ID ausgeben lassen? Ich habe gerade deinen Lösungsansatz getestet und er funktioniert bei mir einwandfrei.

[quote=“Linus Holtstiege”]Hallo xcreative, hast du dir testweise mal mit {$sCustomPage.id} die Custom ID ausgeben lassen? [/quote] Das könnte das Problem sein, dass dies keinen Wert zurück gibt…

kannst du mir einmal einen Link zu deinem Shop geben?

Hallo xcreative, da du deine statischen Links in dem Checkout Widget benutzt, musst du dem Template checkout_actions.tpl auch die sCustomPage Variable zuweisen. Das könntest du z.B. so machen: Widgets\Checkout.php[...] $staticPage = Shopware()-\>Modules()-\>Cms()-\>sGetStaticPage($this-\>Request()-\>sCustom); $this-\>View()-\>sCustomPage = $staticPage; [...] Deine Template Anpassung kann genauso bleiben, wie sie ist. Sinnvoll wäre es, wenn du deine Modifikation über ein Plugin realisierst, damit deine angepassten Dateien bei einem Update nicht überschrieben werden.

1 „Gefällt mir“

Hallo Linus, Hallo Community, der Hinweis mit der Variablenzuweisung war genau der Richtige! Stimmt nämlich, solange sich die statischen Links direkt in der checkout_actions.tpl befinden, sind diese quasi aus der normalen Seitenfunktion herausgelöst und es müsste die Zuweisung gem. Linus stattfinden. Doch da mir der Weg etwas zu kompliziert erscheint und ich alle Änderungen so weit wie möglich direkt im Template umsetzen möchte, ohne erst Plugins zu schreiben, habe ich nach einer [color=red]alternativen Lösung[/color] gesucht. Und gefunden :wink: Lösungsansatz: In der templates/_emotion/frontend/index/index.tpl findet man den folgenden Block: {\* Shop navigation \*} {block name='frontend\_index\_checkout\_actions'} {action module=widgets controller=checkout action=info} {/block} Es wird also die erwähnte checkout_actions.tpl aufgerufen. In diese beabsichtigte ich, meine statische Navigation einfach zu integrieren, da diese ja auch die Menüpunkte Service/Hilfe, Merkzettel, Warenkorb, etc. beinhaltet. Den ersten Block habe ich wie folgt ändern wollen: [code] {block name=“frontend_index_checkout_actions_my_options”}

{* MEIN STATISCHES MENÜ – ANFANG – *}
Seite 1Seite 2Seite 3Seite 4Seite 5 {* DER TEIL {if $sCustomPage.id == 44} class=“active”{/if} FUNKTIONIERT EIGENTLICH, nur nicht in der checkout_actions.tpl *} [support]({url controller=‘custom’ sCustom=44})
{* MEIN STATISCHES MENÜ – ENDE – *} {block name=“frontend_index_checkout_actions_account”} [{s namespace=‘frontend/index/checkout_actions’ name=‘IndexLinkAccount’}{/s}]({url controller=‘account’} “{s namespace=‘frontend/index/checkout_actions’ name=‘IndexLinkAccount’}{/s}”) {/block} […]
 

{/block} [/code] Leider haben, wie Linus sagte, sCustomPage Variable-Zuweisungen in dem Checkout Widget nicht funktioniert. Doch bevor jetzt erst eine Zuweisung dieser Variablen vorzunehmen, entschied ich mich für einen viel einfacheren Weg. Die Div-Container mit der Klasse “my_options” und “clear” habe ich aus der checkout_actions.tpl entfernt (also die Datei in meinem persönlichen Template-Ordner angelegt und den betreffenden Block name=“frontend_index_checkout_actions_my_options” angepasst, sodass der Originalblock aus dem emotion-Template überschrieben wird): {\*Zeile 2\*} DER INHALT DER checkout\_actions.tpl BLEIT SONT UNVERÄNDERT   {\*Zeile 27\*} {\*Zeile 28\*} Den zu Anfang erwähnten Block name=‘frontend_index_checkout_actions’ nehme ich nun für meine eigene index.tpl in meinem _emotion_local-Template heraus und ändere diesen wie folgt ab: [code] {* Shop navigation, um TopNavi erweitert *} {block name=‘frontend_index_checkout_actions’}

Seite 1Seite 2Seite 3Seite 4Seite 5[support]({url controller=‘custom’ sCustom=44})
{* HIER WIRD NUN DIE checkout_actions.tpl innerhalb des DIV class=“my_options” geladen *} {action module=widgets controller=checkout action=info}
 

{/block} [/code] Diese Lösung hat den Vorteil, dass das statische Menü jetzt dort ansässig geworden ist, wo auf die Variable zugegriffen werden kann. Das Checkout Widget wird mit den den Container geladen (andere Lösungen klappen da nicht, da sich sonst das statische Menü hinter den my_options-Block legt und die Links nicht wählbar wären. Ich denke, dies ist doch ein sehr guter Weg, zumal diese Lösung auch UPDATEFÄHIG ist! Ich hoffe, der Lösungsweg ist verständlich genug. Sonst einfach nochmal nachfragen, falls Ihr auch mal eine solche Umsetzung vornehmen wollt.