Level der Kategorie für Subnavigation auslesen/ermitteln

Hallo liebe Forengemeinde,

ich versuche derzeit eine Subnavigation zu modifizieren. Hierfür benötige ich die Angabe des aktuellen Levels der entsprechenden Kategoriebezeichnung (im Menü) - hier ein Beispiel:

  • Startseite
  • Produkte
    – Produkt 1
    — Details
    — Informationen
    – Produkt 2
    – Produkt 3
  • Leistungen

Die Punkte “Startseite”, “Produkte” und “Leistungen” entsprechen der obersten Ebene/des obersten Levels, also bspw. Level 1. Der Punkt “Produkt 1” ist Level 2. Der Punkt “Details” ist Level 3.

Wie kann ich nun diese Angabe auslesen/ermitteln lassen?

Ich habe bereits versucht (nachdem ich durch die Forensuche darauf gestoßen bin), mittels der Angabe “level=$level” in der Zeile

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

der Datei category_tree.tpl den Parameter “$level” zu initialisieren, um dann mit der mittels

[{if $level==2}]

zu prüfen, ob es sich um das zweite Level handelt. Allerdings funktioniert dies nicht.

Hat jemand eine Idee, wie ich mir das Level der entsprechenden Kategorie ausgeben lassen kann?

Hi und guten Morgen,

was möchtest Du denn mit der Ausgabe des Levels denn erreichen?

Beste Grüße vom Chris

Hallo Chris,

ich möchte einfach bei Level == 2 eine andere CSS-Klasse (für die <li></li> Tags) einbinden.

Viele Grüße,
Inkafupo.

Hi Inka,

wieso machst Du das dann nicht einfach direkt über CSS-Selektoren?
Sprich, Du hangelst Dich durch die einzelnen Levels durch.
Quasi dann so:


ul.tree li ul li {
background: #555555;
font-size: 12px;
font-weight: bold;
}


Dafür brauchst Du keinen Extra Level im Code auszugeben.

Viele Grüße vom Chris

Hallo Chris,

danke für deine Idee. Leider klappt die Umsetzung in diesem Fall nicht (ansonsten bräuchte ich den Level nicht, das stimmt).

Das Problem ist wie folgt: Meine category_tree.tpl baut die Subnavigation so auf:

<li>Startseite</li>
<li>Produkte</li>
<li>Produkt 1</li>

Es ist also keine weitere <ul></ul>-Unterteilung vorhanden, sodass es über das reine CSS-Handling nicht funktioniert. Um so etwas zu erreichen, müsste man entweder die category_tree.tpl so anpassen, dass für jede Unterkategorie eine neue <ul></ul>-Umgebung dargestellt wird oder man liest das Level aus, um es dann wie folgt zu machen:

<li>Startseite</li>
<li class=“ebene1”>Produkte</li>
<li class=“ebene2”>Produkte 1</li>.

Oder hast du eine andere Idee?

Viele Grüße,
Inkafupo.

Hi Inka,

das ist schon sehr merkwürdig. Du sprichst schon von der linksseitigen Category
Navigation. Also bei mir sind da definitiv weitere UL’s vorhanden, auf die man zugreifen kann.
Alles Andere wäre HTML technisch nicht so der Hit.

Bei mir sieht das HTML folgendermaßen aus:


<ul class="tree"><li><a class="root exp has " href="#" id="test_BoxLeft_Cat_c21c2d4f5a1ed54ed792915a5886f70b_1">Strümpfe </a>
<ul><li><a class="last act " href="#" id="test_BoxLeft_Cat_c21c2d4f5a1ed54ed792915a5886f70b_sub1">Halterlose Strümpfe  (7)</a></li>
<li><a class="last " href="#" id="test_BoxLeft_Cat_c21c2d4f5a1ed54ed792915a5886f70b_sub2">Strapsstrümpfe  (1)</a></li>
<li><a class="last " href="#" id="test_BoxLeft_Cat_c21c2d4f5a1ed54ed792915a5886f70b_sub3">Alltagsstrümpfe </a></li>
</ul>
</li></ul>

Also hat man hier ne eindeutige hierarchische Struktur,
auf die man nach Belieben zugreifen kann.

Viele Grüße vom Chris

Hab jetzt mal noch weitere SubSub Kategorien angelegt und ich muss
feststellen, dass auch hier ein weiteres unter UL gerendert wird…

Viele Grüße vom Chris

Hallo Chris,

bei der Standard-Datei (category_tree.tpl) werden die entsprechenden <ul></ul>-Umgebungen erzeugt, das ist richtig. Nun benutze ich aber eine abgewandelte Variante, damit z.B. in der Seitennavigation nicht die Kategorien erster Ebene angezeigt werden, sondern eben nur die Unterkategorien etc.

Der Code meiner category_tree.tpl sieht wie folgt aus:


[{if $tree || $oView->getContentCategory() }]
[{assign var="oContentCat" value=$oView->getContentCategory() }]
[{defun name="category_tree" tree=$tree act=$act class=$class testSubCat=''}]
[{strip}]
    
    [{assign var="iCatCnt" value="1"}]
    [{foreach from=$tree item=ocat key=catkey name=$test_catName}]
        [{if ( !$ocat->isTopCategory() || !$oView->showTopCatNavigation() ) && $ocat->getContentCats() }]
            [{foreach from=$ocat->getContentCats() item=ocont key=contkey name=cont}]
            
           		[{if $ocat->isTopCategory()}]
    				
    			[{else}]
    				<li>
            		<a href="[{$ocont->getLink()}]">[{ $ocont->oxcontents__oxtitle->value }]</a>
            		</li>
            	[{/if}]
            
            [{/foreach}]
        [{/if}]
        [{if $ocat->getIsVisible() }]
        
            	[{if $ocat->isTopCategory()}]
    				
    			[{else}]
    				
    				[{if $ocat->expanded}]
    				
	    				<li class="activ">
	            			<a href="[{$ocat->getLink()}]">[{ $ocat->oxcategories__oxtitle->value }]</a>
	            		</li>
            		
            		[{else}]
            		            			            		
            			<li>
            				<a href="[{$ocat->getLink()}]">[{ $ocat->oxcategories__oxtitle->value }]</a>
            			</li> 
    				
            		[{/if}]
            		
            	[{/if}]
            	
            [{if $ocat->getSubCats() && $ocat->expanded}]
                [{fun name="category_tree" tree=$ocat->getSubCats() act=$act class="" testSubCat=$ocat->oxcategories__oxid->value }]
            [{/if}]
        
        [{/if}]
        [{assign var="iCatCnt" value=$iCatCnt+1 }]
    [{foreachelse}]
        [{if $oContentCat }]            
            <li><a id="test_BoxLeft_Cms_0" class="root act" href="[{$oContentCat->getLink()}]">[{ $oContentCat->oxcontents__oxtitle->value }]</a></li>
        [{/if}]
    [{/foreach}]
   
[{/strip}]
[{/defun}]
[{/if}]

Hi nochmal,

habs eben mal so getestet und scheint zu funktionieren.
Werde ich wohl bei mir auch einbauen, ist irgendwie schöner…


[{if $tree || $oView->getContentCategory() }]
[{assign var="oContentCat" value=$oView->getContentCategory() }]
[{defun name="category_tree" tree=$tree act=$act class=$class testSubCat=''}]
[{strip}]
  <ul [{if $class}]class="[{$class}]"[{/if}]>   
    [{assign var="iCatCnt" value="1"}]
    [{foreach from=$tree item=ocat key=catkey name=$test_catName}]
        [{if ( !$ocat->isTopCategory() || !$oView->showTopCatNavigation() ) && $ocat->getContentCats() }]
            [{foreach from=$ocat->getContentCats() item=ocont key=contkey name=cont}]
            
                   [{if $ocat->isTopCategory()}]
                    
                [{else}]
                    <li>
                    <a href="[{$ocont->getLink()}]">[{ $ocont->oxcontents__oxtitle->value }]</a>
                    </li>
                [{/if}]
            
            [{/foreach}]
        [{/if}]
        [{if $ocat->getIsVisible() }]
        
                [{if $ocat->isTopCategory()}]
                    
                [{else}]
                    
                    [{if $ocat->expanded}]
                    
                        <li class="activ">
                            <a href="[{$ocat->getLink()}]">[{ $ocat->oxcategories__oxtitle->value }]</a>
                        </li>
                    
                    [{else}]
                                                                
                        <li>
                            <a href="[{$ocat->getLink()}]">[{ $ocat->oxcategories__oxtitle->value }]</a>
                        </li> 
                    
                    [{/if}]
                    
                [{/if}]
                
            [{if $ocat->getSubCats() && $ocat->expanded}]
                [{fun name="category_tree" tree=$ocat->getSubCats() act=$act class="" testSubCat=$ocat->oxcategories__oxid->value }]
            [{/if}]
        
        [{/if}]
        [{assign var="iCatCnt" value=$iCatCnt+1 }]
    [{foreachelse}]
        [{if $oContentCat }]            
            <li><a id="test_BoxLeft_Cms_0" class="root act" href="[{$oContentCat->getLink()}]">[{ $oContentCat->oxcontents__oxtitle->value }]</a></li>
        [{/if}]
    [{/foreach}]
   </ul>
[{/strip}]
[{/defun}]
[{/if}]  

Viele Greetz vom Chris

Hallo!

Ich wollte einen zweiten neuen Kategoriebaum aufbauen und habe versucht, den oben stehenden Code auszuführen. Ich habe das Problem, dass sich die zwei Navigationen irgendwie miteinander nicht vertragen. Egal was ich in die zweite Navi reinschreibe, ich hab dazu xx nach einem <li> geschrieben, bleibt diese davon unberührt. Erst wenn ich die erste Navi komplett lösche, werden mir meine xx ausgegeben.

Hat das irgendwie was mit dem defun was zu tun? Oder welche Variable wird hier überhaupt belegt.

Ich hoffe mir kann jemand helfen. Bin schon am verzweifeln