Advanced Menu Einträge ein-/ausblenden mit if und Freitextfeld, sowie Zuordnung der Advanced Container korrigieren

Guten Tag,

Es geht um das Advanced Menu.

Ich habe mit Hilfe eine Freitextfeldes festgelegt, wann eine Kategorie oben in der Menüleiste bzw. links im Kategoriebaum angezeigt werden soll und wann nicht.

Dies habe realisiert, in dem ich folgendes gemacht habe:

Ich habe in meinem Theme unter frontend/plugins/advanced_menu eine index.tpl mit folgendem Inhalt angelegt, das funktioniert soweit auch wunderbar.



  {function name="categories_top" level=0}

 
 
 
    {$columnIndex = 0}
    {$menuSizePercentage = 100 - (25 * $columnAmount * intval($hasTeaser))}
    {$columnCount = 4 - ($columnAmount * intval($hasTeaser))}

    <ul class="menu--list menu--level-{$level} columns--{$columnCount}"{if $level === 0} style="width: {$menuSizePercentage}%;"{/if}>
        {block name="frontend_plugins_advanced_menu_list"}
            {foreach $categories as $category}
            
            
            
               
               
            
                {if $category.hidetop}
                    {continue}
                {/if}

                {$categoryLink = $category.link}
                {if $category.external}
                    {$categoryLink = $category.external}
                {/if}

                <li class="menu--list-item item--level-{$level}"{if $level === 0} style="width: 100%"{/if}>
                    {block name="frontend_plugins_advanced_menu_list_item"}
                        <a href="{$categoryLink|escapeHtml}" class="menu--list-item-link" title="{$category.name|escape}">{$category.name}</a>

                        {if $category.sub}
                            {call name=categories_top categories=$category.sub level=$level+1}
                        {/if}
                    {/block}
                </li>
                
               
                
                
            {/foreach}
        {/block}
    </ul>
    
    
      
{/function}









     

<div class="advanced-menu" data-advanced-menu="true">
    {block name="frontend_plugins_advanced_menu"}
    
      
        {foreach $sAdvancedMenu as $mainCategory}
        
        
        {if $mainCategory.attribute.eigene_category_yes_no != 1}
        
        
        
      
   
         
           
      
        
         
         
         
         
            {if !$mainCategory.active || $mainCategory.hidetop}
                {continue}
            {/if}

            {$link = $mainCategory.link}
            {if $mainCategory.external}
                {$link = $mainCategory.external}
            {/if}

            {$hasCategories = $mainCategory.activeCategories > 0  && $columnAmount < 4}
            {$hasTeaser = (!empty($mainCategory.media) || !empty($mainCategory.cmsHeadline) || !empty($mainCategory.cmsText)) && $columnAmount > 0}








            <div class="menu--container">
                {block name="frontend_plugins_advanced_menu_main_container"}
                    <div class="button-container">
                        {block name="frontend_plugins_advanced_menu_button_category"}
                            <a href="{$link|escapeHtml}" class="button--category" title="{s name="toCategoryBtn" namespace="frontend/plugins/advanced_menu/advanced_menu"}{/s}{$mainCategory.name|escape:'html'}">
                                <i class="icon--arrow-right"></i>
                                {s name="toCategoryBtn" namespace="frontend/plugins/advanced_menu/advanced_menu"}{/s}{$mainCategory.name}
                            </a>
                        {/block}

                        {block name="frontend_plugins_advanced_menu_button_close"}
                            <span class="button--close">
                                <i class="icon--cross"></i>
                            </span>
                        {/block}
                    </div>

                    {if $hasCategories || $hasTeaser}
                        <div class="content--wrapper{if $hasCategories} has--content{/if}{if $hasTeaser} has--teaser{/if}">
                            {if $hasCategories}
                                {block name="frontend_plugins_advanced_menu_sub_categories"}
                                    {call name="categories_top" categories=$mainCategory.sub}
                                {/block}
                            {/if}

                            {if $hasTeaser}
                                {if $hasCategories}
                                    <div class="menu--delimiter" style="right: {$columnAmount * 25}%;"></div>
                                {/if}
                                <div class="menu--teaser"{if $hasCategories} style="width: {$columnAmount * 25}%;"{else} style="width: 100%;"{/if}>
                                    {if !empty($mainCategory.media)}
                                        <a href="{$link|escapeHtml}" title="{s name="toCategoryBtn" namespace="frontend/plugins/advanced_menu/advanced_menu"}{/s}{$mainCategory.name|escape:'html'}" class="teaser--image" style="background-image: url({link file={$mainCategory.media.path}});"></a>
                                    {/if}

                                    {if !empty($mainCategory.cmsHeadline)}
                                        <div class="teaser--headline">{$mainCategory.cmsHeadline}</div>
                                    {/if}

                                    {if !empty($mainCategory.cmsText)}
                                        <div class="teaser--text">
                                            {$mainCategory.cmsText|strip_tags|truncate:250:"..."}
                                            <a class="teaser--text-link" href="{$link|escapeHtml}" title="{s name="learnMoreLink" namespace="frontend/plugins/advanced_menu/advanced_menu"}mehr erfahren{/s}">
                                                {s name="learnMoreLink" namespace="frontend/plugins/advanced_menu/advanced_menu"}mehr erfahren{/s}
                                            </a>
                                        </div>
                                    {/if}
                                </div>
                            {/if}
                        </div>
                    {/if}
                {/block}
            </div>
            
                 
            
            
            
            
            
            
              {/if}
         
        
        {/foreach}   
    {/block}
</div>

Das Problem:

Wenn ich eine Kategorie hinzufüge, dann wird mir beim Hover über einen Eintrag vom Advanced Menu immer der Containerinhalt der nächsten Kategorie angezeigt.

Beispiel:

Ich habe Kategorie Grün und Gelb. Wenn ich nun davor die Kategorie Rot einfüge, so, dass ich dann die Kategorien Rot Grün Gelb habe, dann wird mit im Advanced Container beim Hover über „Rot“ der Containerinhalt (also die Unterkategorien, Bild und Text bei dem dann erscheinenden DIV) von „Grün“ angezeigt. Wenn ich über Grün hover, wird mir der Inhalt von „Gelb“ angezeigt. Also immer um 1 verschoben.

Ich hatte das Problem bereits zwei mal in der Vergangenheit und habe es irgendwie lösen können. Es ist aber schon Monate her und ich komme einfach nicht mehr auf die Lösung. Habe jetzt 2,5 Stunden probiert, aber ich weiss, dass es eine ganz einfache Lösung dafür gab.

Kann mir jemand helfen, wieder auf die Lösung zu kommen?

Grüsse,
Wilo

Ist mir gestern auch passiert, ewig nach dem Fehler gesucht. Ich habe dann von php8 wieder auf php7.4 zurückgestellt, dann klappte alles wieder. Offensichtlich läuft Shopware noch nicht stabil mit php8, dieses war nicht das einzige Problem bei mir.
Gruß Volker

Hallo,

ich hatte vor Monaten das Problem anders gelöst. Es war irgendwo css oder ein Codeschnippsel in ner tpl, welchen ich angepasst hatte. Das musste ich schon 2x machen, als ich Kategorien hinzugefügt hatte. Ich bin mir da ganz sicher.

Die PHP Version hatte ich da ganz sicher nicht geändert.

So ein Ärger. Ich habe mir beim zweiten Mal, wo ich auch schon länger rumsuchen musste noch gedacht, schreibs dir lieber auf, habs dann aber nicht gemacht.

Jetzt hab ich den Salat.

lg
Wilo