FOL9000

Service/Hilfe-Menu in der Shopware 5.x Top-Navigation ändern

von

Shopware 5.x stellt im Responsive-Theme am oberen rechten Fensterrand ein Dropdown-Menu mit dem Titel Service/Hilfe dar. Mit einigen wenigen Handgriffen kann man es leicht ändern oder ganz entfernen.

Im Standard stellt das Service/Hilfe-Dropdown-Menu den Inhalt der Shopseiten-Gruppe ‚Links‘ dar. Man kann nun diese Gruppe direkt bearbeiten oder eine neue anlegen und diese im Menu anzeigen — was ich im folgenden erklären werde.

Seitengruppe anlegen

Der erste Schritt ist dabei das Anlegen einer neuen Gruppe. Unter Inhalte → Shopseiten klickt man im Shopseiten-Fenster unten links auf ‚Neue Gruppe‘. Dabei ist wichtig, dass die neue Gruppe eine eindeutige Template-Variable bekommt; wir nennen sie hier gTopMenu. Ist die Gruppe erstellt, kann man ihr die Seiten zuweisen, die man im Menu sehen möchte.

Titel des Menus

Der Titel des Menus ist der Textbaustein IndexLinkService; entsprechend lässt er sich in der Textbaustein-Verwaltung unter Einstellungen → Textbausteine einfach ändern.

Es gibt diesen Textbaustein aber zweimal: Einmal im Namespace frontend/index/checkout_actions zum anderen im Namespace frontend/index/topbar_navigation. Im Template verwendet wird der Textbaustein des Namespaces frontend/index/checkout_actions. Ich halte das für nicht ganz nachvollziehbar, schließlich befinden wir uns in der Topbar-Navigation. Ich habe deshalb den Text für frontend/index/topbar_navigation geändert und den anderen Baustein im überschriebenen Template verwendet (s.u.).

Wenn die Vorarbeiten nun fertig sind — also die neue Gruppe angelegt ist und ggf. der Menu-Titel angepasst ist — kann man daran gehen, das alte Menu im Template durch das neue zu überschreiben. Denn genau das ist der Mechanismus, mit dem man in Shopware (oder besser: beim Template-System smarty) einen Block ändert, durch Überschreiben.

Block überschreiben

Erste Variante: Mit gleichem Textbaustein

Der Menu-Block ist definiert im Template frontend/index/topbar-navigation.tpl. Unter diesem Pfad und unter diesem Namen muss nun im eigene Theme eine neue Datei angelegt werden. Mit folgendem Code wird darin der alte Menu-Block überschrieben:

{extends file="parent:frontend/index/topbar-navigation.tpl"}
{block name="frontend_index_checkout_actions_service_menu_include"}
    {include file="widgets/index/menu.tpl" sGroup=gTopMenu}
{/block}

(Wer dem Menu einen anderen Template-Variablen-Namen gegeben hat als gTopMenu muss das natürlich entsprechend ändern.)

Damit sollte das neue Menu bereits im Top-Bereich erscheinen.

Will man das Menu ganz entfernen muss man natürlich keine neuen Gruppe anlegen — wozu auch. Es reicht, den alten Menu-Block leer zu überschreiben, also so:

{extends file="parent:frontend/index/topbar-navigation.tpl"}
{block name="frontend_index_checkout_actions_service_menu_include"}{/block}

Zweite Variante: Mit anderem Textbaustein

Wer den Textbaustein aus dem anderen Namespace verwenden möchte, muss etwas anders überschreiben.

Hier könnte der neue Block so aussehen:

{extends file="parent:frontend/index/topbar-navigation.tpl"}
{block name="frontend_index_checkout_actions_service_menu"}
    <div class="navigation--entry entry--service has--drop-down" role="menuitem" aria-haspopup="true" data-drop-down-menu="true">
        <i class="icon--service"></i> {s namespace='frontend/index/topbar-navigation' name='IndexLinkService'}{/s}

        {block name="frontend_index_checkout_actions_service_menu_include"}
            {include file="widgets/index/menu.tpl" sGroup=gTop}
        {/block}
    </div>
{/block}

Kommentare sind geschlossen.