Alle Unterkategorien in Top Navigation

Hi liebe Community,

wir bauen unseren Shop nun auch mal wieder komplett um und wollen auf eine Linke navigation gänzlich verzichten bzw. wenn dann nur auf Unterseiten anzeigen lassen.

Jetzt habe ich mitbekommen das in der Top Navigation nur die erste ebene der Unterkategorien angezeigt werden, aber danach nicht weiter.

Gibt es eine Möglichkeit das auch in der Top Navi wenn ich per Hover über eine Root-Kategorie gehe auch alle Unterkategorien angezeigt bekomme?

Danke und noch einen schönen 1. Advent :slight_smile:

Hi Exo,

ersetze doch einfach die Topnavigation durch die linksseitige Navigation. Hierbei bekommst Du dann alle Ebenen der Navigation ausgegeben und kannst dann über ein wenig CSS und JavaScript eine aufklappbare Navigation basteln. Beispiele hierfür gibts im Netz in Hülle und Fülle.

Viele Grüße vom Chris

Hi coarsy,

ja die Idee hatte ich auch schon, da ich mir aber schon haufn arbeit gemacht hab um die Top - Navi anzupassen und damit im moment auch recht zufrieden bin ^^ dachte ich eventuell es gibt nen kleinen Oxid-Code um einfach die 2. bzw. 3. Ebene mit reinzuladen :wink:

Leider sind viele Stellen des Smartysystems + Oxid noch nen Buch mit sieben Siegeln… vielleicht hat ja einer ne kleine Denkhilfe für mich übrig, ansonsten wird mir wohl nix weiter übrig bleiben mit dem Tipp von dir.

Moin Moin,

ich würde auch gerne die zweite Subkategorie in der Topnavigation einbauen, habe es aber bis jetzt leider nicht geschafft.
Leider funktioniert coarsys Vorschlag auch nicht, da die Navigation nicht komplett aufgebaut wird, sondern (soweit ich das jetzt verstanden habe :slight_smile: ) abhängig von der Kategorie.
D.h. wenn ich eine Kategorie auswähle, wird dann anhand der gewählten Kategorie die Subcats gewählt.

Irgendwie stehe ich da auch auf dem Schlauch. In dem Header Template wird die $oxcmp_categories eingebunden. In dieser steht aber nur die Kategorien samt Subkategorien ersten grades … aber nicht die weiteren.

Sorry, wenn ich mich einfach hier in den Thread einbinde, aber es ist der neueste dieser Art, den ich gefunden habe. In den anderen wird leider auch nur gesagt, ja das sollte iwie gehen, aber keine Lösung.

Wäre super, wenn mir / uns da jemand auf die Sprünge helfen könnte.

Mfg
Spielverderber

Nabend,

schaut mal in die inc/category_tree.tpl rein, da gibt es folgenden Block:

[{defun name=“category_tree” tree=$tree act=$act class=$class testSubCat=’’}]

[{/defun}]

Das Ding wird dazwischen ab folgender Stelle interessant:

[{if $ocat->getSubCats() && $ocat->expanded}]

wenn ihr jetzt die Bedingung abändert in
[{if $ocat->getSubCats() }]
dann bekommt ihr zu jeder Kategorie unterkategorien, unabhöngig welches Level.

Grob gesagt arbeitet das Ding rekursiv alle Unterkategorien durch.

Es kann aber sein, dass man unter Grundeinstallungen > Performance den Punkt "Den kompletten Kategoriebaum für die Navigation laden (belastet die Performance, wenn viele Kategorien vorhanden sind) " aktivieren muss, hab ich aber jetzt nicht getestet.

Hi FibreFoX,

ich hab es grad mal durchexorziert… aber leider wieder ohne Erfolg :frowning:

Doch doch, bei mir hat es so geklappt, alle Ebenen sind ausgeklappt, wie von FibreFOx beschrieben.

[QUOTE=hhs-nation;46403]Doch doch, bei mir hat es so geklappt, alle Ebenen sind ausgeklappt, wie von FibreFOx beschrieben.[/QUOTE]

Super …danke für den Hinweis.
Jetzt habe ich das auch noch mal probiert, und es auch hinbekommen :slight_smile:

Mein Ansatz ist folgender:
In der _header.tpl habe ich folgendes stehen:

<div class="bar categories">
        
[{if $oxcmp_categories }]
[{include file="inc/category_tree_topNavi.tpl" tree=$oxcmp_categories act=$oxcmp_categories->getClickCat() class="menue horizontal" id="mn.categories" level="1"}]
[{/if}]
<div class="clear"></div>
        </div>

Dann habe ich von der inc/category_tree.tpl eine kopie gemacht und diese inc/category_tree_topNavi.tpl genannt.

Die category_tree_topNavi.tpl habe ich dann folgendermaßen geändert:


[{if $tree || $oView->getContentCategory() }]
[{assign var="oContentCat" value=$oView->getContentCategory() }]
[{defun name="category_tree_topNav" tree=$tree act=$act class=$class level=$level }]
[{assign var="iCatCnt" value="1"}]
[{strip}]
    <ul [{if $class}]class="[{$class}]"[{/if}] [{if $id}]id="[{$id}]"[{/if}]>
    [{foreach from=$tree item=ocat key=catkey name=$test_catName}]
        [{if $ocat->getIsVisible() }]
	        [{if $level ==2}]
	        	<div class="subCat">
	        [{else}]
	        	<li>
	        [{/if}]
	        	[{if $level==1}]
					<a id="root[{$iCatCnt}]" href="[{$ocat->getLink()}]" [{if $ocat->expanded}]class="exp"[{/if}]>[{$ocat->oxcategories__oxtitle->value}] </a>
					[{assign var="class" value="menue vertical dropdown subCatContainer" }]
				[{else}]
					<a  href="[{$ocat->getLink()}]" [{if $ocat->expanded}]class="exp"[{/if}]>[{$ocat->oxcategories__oxtitle->value}] </a>
					[{assign var="class" value="" }]
				[{/if}]
	            [{if $ocat->getSubCats() && $level < 3 }]
	                [{fun name="category_tree_topNav" id="" tree=$ocat->getSubCats() act=$act class=$class level=$level+1 }]
	            [{/if}]
	            
	        [{if $level ==2}]
	        	</div>
	        [{else}]
	        	</li>
	        [{/if}]
	        
        [{/if}]
        [{assign var="iCatCnt" value=$iCatCnt+1 }]
    [{/foreach}]
    </ul>
[{/strip}]

[{/defun}]

[{/if}]

Habe da etliches rausgeschmissen und so funktioniert das bei mir auch bis level 3 runter.
Kann man erhöhen, wenn man

 [{if $ocat->getSubCats() && $level < 3 }]

entsprechend verändert.
Für level 2 kategorien habe ich bei mir ein div eingebaut, weil ich die Punkte gerne nebeneinander gefloated haben wollte.

Vielleicht hilfts ja jemandem.

Ich habe jedenfalls lange hier gesucht und nix gefunden.
Wichtig ist aber auch die Einstellung im Adminbereich.

Mfg
Spielverderber

Vorneweg schon mal Danke für den guten Ansatz!
Ich habe jetzt jedoch noch ein Positionierungs-Problem und komme nicht auf eine “saubere Lösung”.
Alle Untekategorien werden angezeigt wie sie sollen - jedoch verschiebt sich die Anzeige je nach “gehoverter” TopKategorie immer weiter nach Rechts. Die SubKats sollen jedoch immer ganz Links in einem Flyout an fester Position beginnen (sonst reicht der Platz nicht).
Muss ich die Navigation (ul,li) teilen oder gibt es eine Möglichkeit im vorhandenen Beispiel die Subcats ohne Abhängigkeit zum Topelements zu positionieren.

[{if $tree || $oView->getContentCategory() }]
[{assign var="oContentCat" value=$oView->getContentCategory() }]
[{defun name="category_tree_topNav" tree=$tree act=$act class=$class level=$level }]
[{assign var="iCatCnt" value="1"}]
[{strip}]
    <ul [{if $class}]class="[{$class}]"[{/if}] [{if $id}]id="[{$id}]"[{/if}]>
    [{foreach from=$tree item=ocat key=catkey name=$test_catName}]
        [{if $ocat->getIsVisible() }]
	        [{if $level ==2}]<br />
	        	
				<div class="subCat"style="position:relative;float:left;padding-left:5px;margin-left:5px;margin-top:0px;min-width:80px;">
	      
			
			
			[{else}]
	        	<li>
	        [{/if}]
	        	[{if $level==1}]
					<a id="root[{$iCatCnt}]"  href="[{$ocat->getLink()}]" [{if $ocat->expanded}]class="exp"[{/if}]>[{$ocat->oxcategories__oxtitle->value}] </a>
					[{if $ocat->expanded}] <img src="[{$oViewConf->getImageUrl()}]navipfeil.gif" alt="navipfeil" style="position:relative;left:40%;top:-9px;z-index:1001;height:15px;">[{/if}]
					[{assign var="class" value="menue vertical dropdown subCatContainer" }]
				[{else}]
					<a href="[{$ocat->getLink()}]" [{if $ocat->expanded}]class="exp"[{/if}]>[{$ocat->oxcategories__oxtitle->value}]</a>
					[{assign var="class" value="" }]
				[{/if}]
	            [{if $ocat->getSubCats() && $level < 4 }]
	                [{fun name="category_tree_topNav" id="" tree=$ocat->getSubCats() act=$act class=$class level=$level+1 }]
	            [{/if}]
	            
	        [{if $level ==2}]
	  </div>   <div class="subCat" style="margin-top:-15px;">  </div>
	        [{else}]
	        	</li>
	        [{/if}]
	        
        [{/if}]
        [{assign var="iCatCnt" value=$iCatCnt+1 }]
    [{/foreach}]
    </ul>
[{/strip}]

[{/defun}]

[{/if}]

Wäre sehr dankbar für einen Tip.

Liebe Oxid Gemeinde,

Ich möchte auch gerne die Unterkategorien in Top Navigation erweitern. Allerdings möchte ich dies in der Ver. 4.5.5 Azure machen.

Ich suche in der topcategories.tpl aber leider vegeblich…

Grüße

Block8

Hallo ihr Lieben,

kann man die Funktion (also eine weitere Unterkategorie im Menü anzeigen lassen) auch in Version 4.7.X einbauen?

Die Datei habe ich hier gepostet, leider klappt die Abänderung nach obigem Vorbild bei mir nicht. Hat jemand eine zündende Idee? Vielen Dank im Vorraus.


[{if $oxcmp_categories }]
[{assign var="categories" value=$oxcmp_categories->getClickRoot() }]
[{assign var="act" value=$oxcmp_categories->getClickCat() }]
[{if $categories }]
[{assign var="deepLevel" value=$oView->getDeepLevel()}]
<div class="categoryBox">
    <ul class="tree" id="tree">
    [{defun name="tree" categories=$categories}]
        [{assign var="deepLevel" value=$deepLevel+1}]
        [{assign var="oContentCat" value=$oView->getContentCategory() }]
        [{foreach from=$categories item=_cat}]
            [{if $_cat->getIsVisible() }]
                [{* CMS category *}]
                [{if $_cat->getContentCats() && $deepLevel > 1 }]
                    [{foreach from=$_cat->getContentCats() item=_oCont}]
                    <li class="[{if $oContentCat && $oContentCat->getId()==$_oCont->getId() }] active [{else}] end [{/if}]" >
                        <a href="[{$_oCont->getLink()}]"><i></i>[{ $_oCont->oxcontents__oxtitle->value }]</a>
                    </li>
                    [{/foreach}]
                [{/if }]
                [{* subcategories *}]
                <li class="[{if !$oContentCat && $act && $act->getId()==$_cat->getId() }]active[{elseif $_cat->expanded}]exp[{/if}][{if !$_cat->hasVisibleSubCats}] end[{/if}]">
                    <a href="[{$_cat->getLink()}]"><i><span></span></i>[{$_cat->oxcategories__oxtitle->value}] [{ if $oView->showCategoryArticlesCount() && ($_cat->getNrOfArticles() > 0) }] ([{$_cat->getNrOfArticles()}])[{/if}]</a>
                    [{if $_cat->getSubCats() && $_cat->expanded}]
                        <ul>[{fun name="tree" categories=$_cat->getSubCats() }]</ul>
                    [{/if}]
                </li>
            [{/if}]
        [{/foreach}]
    [{/defun}]
    </ul>
    [{if $oView->showTags() }]
         [{oxid_include_widget cl="oxwTagCloud" nocookie=1 noscript=1 }]
    [{/if}]
</div>
[{/if}]
[{/if}]

Ich habe eine Lösung gefunden:

Diese hat geholfen, ihr müsst aber in den Grundeinstellungen unter Performance den Haken setzen noch :wink:

Hallo

Ich habe das Problem das ich diese Ordner alle nicht finde kann mir jemand weiterhelfen.
Ich verwende AZURE in der Version 4.8.1

Hätte nämlich auch gerne die 3te ebene im Menü angezeigt.

Falls jemand einen Link braucht bitte melden dann poste ich diesen

lg