CE 4.10.2 - Level 3 Kategorien in Navigation

Hallo allerseits,

wie aus dem Forumnamen zu ersehen, bin ich Oxid-Anfänger. Ich habe eine Oxid CE 4.10.2 Installation und nutze das Flow theme mit abgeleitetem child theme.

Ich habe das Problem, daß standardmäßig nur Kategorien bis Level 2 (Haupt- und 1 Unterkategorie-Ebene) angezeigt werden. Dazu gab es bereits einige Einträge und Vorschläge, die sich aber alle auf ältere Versionen bezogen und so - glaube ich - nicht mehr anwendbar sind.
Mir ist bewußt, daß diese Funktion wohl mal aus Performancegründen rausgenommen wurde (?), gibt es trotzdem eine Lösung, die weiteren Unterkategorieebenen genauso per mouseover erreichbar zu machen wie die erste, d.h. ohne zunächst auf die Unterkategorie klicken zu müssen (-auch wenn die Performance dann ggfs. leidet)?
Wenn ich das richtig verstanden habe, muß ich dazu die categorylist.tpl anpassen?

Dank und Gruß,
der Mommsen

Ich stehe gerade vor dem gleichen Problem, hast Du es inzwischen lösen können?

ist aktuell nicht ohne ein Modul möglich, da OXID nur 2 Ebenen der Kategorien lädt

Naja geht eigentlich auch ohne Modul.

categorylist.tpl ca. Zeile 55 dem <li> die Klasse dropdown geben und dann ca. Zeile 57 vor dem schließenden </li> folgendes einfügen:


[{if $osubcat->getSubCats()}]
<ul class="dropdown-menu">
[{foreach from=$osubcat->getSubCats() item=osubsubcat key=subsubcatkey name=SubsubCat}]
[{if $osubsubcat->getIsVisible() }]
<li [{if $osubsubcat->expanded}]class="current"[{/if}] >
<a [{if $osubsubcat->expanded}]class="current"[{/if}] href="[{$osubsubcat->getLink()}]">
[{$osubsubcat->oxcategories__oxtitle->value}]</a>
</li>
[{/if}]
[{/foreach}]
</ul>
[{/if}] 

Müsste halt dann noch entsprechend formatiert werden und unter Grundeinstellungen - Perform. den Haken bei “Leere Kategorien (keine Unterkategorien, keine Artikel) nicht anzeigen” rein.

1 Like

Ergibt für mich zwar keinen Sinn, was leere Kategorien mit dem Laden von Kategorie > Level 2 zu tun haben, aber führt zum Ziel.

Danke…

Hallo,

auf dem Objekt “osubcat” kann man zählen, wie viele Unterelemente es liefert, dann wird auch die Performance-Einstellung (“Leere Kategorien nicht anzeigen”) korrekt berücksichtigt.
Die Modifikation kann dann so aussehen:

  • expanded}]class="current"[{/if}] href="[{$osubcat->getLink()}]"> [{$osubcat->oxcategories__oxtitle->value}] [{if $osubcat->getSubCats()|@count > 0}][{/if}] [{if $osubcat->getSubCats()|@count > 0}] [{/if}]
  • Den Pfeil nach unten kann man sich aus der obersten Ebene ausleihen (siehe fa fa-angle-down).

    Grüße

    1 Like

    Hi,
    ich habe das selbe Problem mit einem 6.1 Shop…
    kannst du bitte genauer erklären was zu tun ist, bei li die Klasse dropdown geben steig ich leider aus :slightly_smiling_face:

    Alternativ was für Module haben sich für die Navigation bewährt?

    Danke.
    Vg Philipp

    Ich habe OXID 6.2

    In der Datei categorylist.tpl versucht mache wie OXBERTRAND sagt,

    Ich veränder die Zeile von 45 bis 59

    Jetzt habe so,

           [{foreach from=$ocat->getSubCats() item="osubcat" key="subcatkey" name="SubCat"}]
                   [{if $osubcat->getIsVisible()}]
                        [{foreach from=$osubcat->getContentCats() item=ocont name=MoreCms}]
                                                            <li class="dropdown-item[{if $oViewConf->getContentId() == $ocont->getId()}] active[{/if}]">
                                                                <a class="dropdown-link[{if $oViewConf->getContentId() == $ocont->getId()}] current[{/if}]" href="[{$ocont->getLink()}]">[{$ocont->oxcontents__oxtitle->value}]</a>
                                                            </li>
                       [{/foreach}]
                      [{if $osubcat->getIsVisible()}]
                                                            <li class="dropdown-item[{if $homeSelected == 'false' && $osubcat->expanded}] active[{/if}]">
                                                                <a class="dropdown-link[{if $homeSelected == 'false' && $osubcat->expanded}] current[{/if}]" href="[{$osubcat->getLink()}]">[{$osubcat->oxcategories__oxtitle->value}]</a>
                                                            </li>
                         [{/if}]
                     [{/if}]
                  [{/foreach}]
    

    und verändert wie OXBERTRAND sagt

    [{if $osubcat->expanded}]class="current"[{/if}] href="[{$osubcat->getLink()}]"> [{$osubcat->oxcategories__oxtitle->value}] [{if $osubcat->getSubCats()|@count > 0}][{/if}] 
       [{foreach from=$osubcat->getSubCats() item=osubsubcat key=subsubcatkey name=SubsubCat}] 
           [{if $osubsubcat->getIsVisible() }]
                 [{if $osubcat->expanded}]class="current"[{/if}] > expanded}]class="current"[{/if}] href="[{$osubsubcat->getLink()}]"> [{$osubsubcat->oxcategories__oxtitle->value}]
           [{/if}] [
      {/foreach}]
    [{/if}]
    

    auf der Datei config.inc.php, geben $this->iDebug = 1; und bekomme diese fehler,

    Fatal error : Smarty error: [in widget/header/categorylist.tpl line 45]: syntax error: unrecognized tag ‘expanded’ (Smarty_Compiler.class.php, line 585) in /vendor/smarty/smarty/libs/Smarty.class.php** on line 1100

    Achtung beim Kopieren. Die Darstellung von Code ist bei dieser Forensoftware leider eine Katastrophe: Das dürfte

    if $osubcat->expanded

    lauten und nicht wie oben

    > expanded

    danke für deinen korrigiertest…

    jetz habe so,

    [{if $ocat->getSubCats()}]
         <ul class="dropdown-menu">
              [{if $osubcat->expanded}]class="current"[{/if}] href="[{$osubcat->getLink()}]"> [{$osubcat->oxcategories__oxtitle->value}] [{if $osubcat->getSubCats()|@count > 0}][{/if}] 
                  [{foreach from=$osubcat->getSubCats() item=osubsubcat key=subsubcatkey name=SubsubCat}] 
                       [{if $osubsubcat->getIsVisible() }]
                          [{if $osubcat->expanded}]class="current"[{/if}] > expanded}]class="current"[{/if}] href="[{$osubsubcat->getLink()}]"> [{$osubsubcat->oxcategories__oxtitle->value}]
                                                        
                   [{/foreach}]
              [{/if}]
          </ul>
    

    aber bekomme dieser Warnung…

    Fatal error : Smarty error: [in widget/header/categorylist.tpl line 55]: syntax error: mismatched tag {/if}. expected {/foreach} (opened line 30). (Smarty_Compiler.class.php, line 2338) in /home/kalamulu/public_html/mela/vendor/smarty/smarty/libs/Smarty.class.php on line 1100

    Klammern beachten. Das wird schon mal nicht funktionieren. Mehr habe ich nicht geprüft.

    kannst du bitte mir sagt wo Klammern Richtig schreibe soll?

    Das sollte nicht mehr so sein, solange Code als Code markiert wird. Ansonsten gilt hier Markdown :wink:

    ähm, wie wird denn Code als Code markiert?

    Danke, hab ich bisher nicht entdeckt - nur leider steht hier als Hilfetext:
    ‘vorformatierter Text’ = wenig aufschlussreich …

    ich versuche deine code zu implementiert, aber bekomme diese Fehler…

    Fatal error : Smarty error: [in widget/header/categorylist.tpl line 55]: syntax error: mismatched tag {/if}. expected {/foreach} (opened line 30). (Smarty_Compiler.class.php, line 2338) in /home/kalamulu/public_html/mela/vendor/smarty/smarty/libs/Smarty.class.php on line 1100

    Jetzt habe so,

    [{if $ocat->getSubCats()}]
           <ul class="dropdown-menu">
                [{if $osubcat->expanded}]class="current"[{/if}] href="[{$osubcat->getLink()}]"> [{$osubcat->oxcategories__oxtitle->value}] [{if $osubcat->getSubCats()|@count > 0}][{/if}] 
                     [{foreach from=$osubcat->getSubCats() item=osubsubcat key=subsubcatkey name=SubsubCat}] 
                        [{if $osubsubcat->getIsVisible() }]
                          [{if $osubcat->expanded}]class="current"[{/if}] > expanded}]class="current"[{/if}] href="[{$osubsubcat->getLink()}]"> [{$osubsubcat->oxcategories__oxtitle->value}]
                                                    
                      [{/foreach}]
               [{/if}]
      
         </ul>
    [{/if}]
    

    und bekomme dieser fehler,

    • href="
      Fatal error: Uncaught Error: Call to a member function getLink() on null in /source/tmp/smarty/c75ae21b919b4a6b9a1ddb86365d4146^%%4B^4BD^4BDBEFEF%%categorylist.tpl.php:64 Stack trace: #0 /vendor/smarty/smarty/libs/Smarty.class.php(1270): include() #1 /vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Smarty/Legacy/LegacySmartyEngine.php(66): Smarty->fetch(‘widget/header/c…’, ‘ox|0|0|0|0|ssl’) #2 /vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Templating/TemplateRenderer.php(35): OxidEsales\EshopCommunity\Internal\Framework\Smarty\Legacy\LegacySmartyEngine->render(‘widget/header/c…’, Array) #3 /vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(509): OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRenderer->renderTemplate(‘widget/header/c…’, Array) #4 /vendor/oxid-esales/oxideshop-ce/source/ in /source/tmp/smarty/c75ae21b919b4a6b9a1ddb86365d4146^%%4B^4BD^4BDBEFEF%%categorylist.tpl.php on line 64

    Auf der Zeile 64 habe,

    [{include file=“widget/header/menubasket.tpl”}]

    auch wenn leer der tmp Verzeichnis, bekomme gleiche fehler…

    Hallo,

    leider scheint mein Code-Schnipsel hier nicht richtig dargestellt zu werden. Möglicherweise ist das bei einer Konvertierung nach Umstellung der Forensoftware verloren gegangen.

    (Im Beispiel sind die a-Tags verloren gegangen und die Listenelemente wurden ausgegeben statt den Code zu zeigen, außerdem taucht eine Klasse zweimal auf.)

    Ohne Funktionsprüfung (sorry, bin im Urlaub), kann ich das hier anbieten:

    [{if $ocat->getSubCats()}]
        <ul class="dropdown-menu">
        [{if $osubcat->expanded}]class="current"[{/if}] href="[{$osubcat->getLink()}]"> [{$osubcat->oxcategories__oxtitle->value}] [{if $osubcat->getSubCats()|@count > 0}][{/if}] 
            [{foreach from=$osubcat->getSubCats() item=osubsubcat key=subsubcatkey name=SubsubCat}] 
                [{if $osubsubcat->getIsVisible() }]
                    <a
                    [{if $osubcat->expanded}]class="current"[{/if}]
                    href="[{$osubsubcat->getLink()}]">[{$osubsubcat->oxcategories__oxtitle->value}]</a>
                [{/if}]
            [{/foreach}]
        [{/if}]
        </ul>
    [{/if}]

    Danke, aber bekomme gleiche Fehler als vor deine Code…

    href="
    Fatal error: Uncaught Error: Call to a member function getLink() on null in /source/tmp/smarty/c75ae21b919b4a6b9a1ddb86365d4146^%%4B^4BD^4BDBEFEF%%categorylist.tpl.php:64 Stack trace: #0 /vendor/smarty/smarty/libs/Smarty.class.php(1270): include() #1 /vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Smarty/Legacy/LegacySmartyEngine.php(66): Smarty->fetch(‘widget/header/c…’, ‘ox|0|0|0|0|ssl’) #2 /vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Templating/TemplateRenderer.php(35): OxidEsales\EshopCommunity\Internal\Framework\Smarty\Legacy\LegacySmartyEngine->render(‘widget/header/c…’, Array) #3 /vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(509): OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRenderer->renderTemplate(‘widget/header/c…’, Array) #4 /vendor/oxid-esales/oxideshop-ce/source/ in /source/tmp/smarty/c75ae21b919b4a6b9a1ddb86365d4146^%%4B^4BD^4BDBEFEF%%categorylist.tpl.php on line 64

    Ohne Funktionsprüfung (sorry, bin im Urlaub), kann ich das hier anbieten:

    keine Probleme, genießt dein Urlaub…


    Auf der Zeile 64 habe,

    [{include file=“widget/header/menubasket.tpl”}]

    auch wenn leer der tmp Verzeichnis, bekomme gleiche fehler…

    ein screenshot wie die webseite…

    ich kenne nicht über der OXID code…aber ich denke die Probleme bekommt wie der Link wird gerufen…

    href=“[{$osubsubcat->getLink()}]”>

    und wie die erste Zeile von der Fehler zeigt,

    Uncaught Error: Call to a member function getLink()