Nur aktiven Kategorieast anzeigen

Hat jemand einen Ansatz wie man es auf einfache Weise erreichen kann, dass im Kategoriebaum jeweils nur der aktive Ast angezeigt wird.

Als Beispiel:
Es gibt die 2 Hauptkategorien: Obst und Gemüse
Unter Obst gibt es die Kategorien: Äpfel, Birnen und Pfirsiche
Unter Äpfel wiederum: Jonagold, Golden Delicous, Cripps Pink

Wählt man nun z. B. Äpfel, sollten im Kategoriebaum in der Sidebar nur die Kategorien Obst, Äpfel, Jonagold, Golden Delicious und Cripps Pink angezeigt werden, nicht aber auch die Kategorien Birnen und Pfirsiche.

Ich habe das Template categoriestree.tpl (Azure) untersucht. Der relevante Teil ist von Zeile 17 bis Zeile 24. Allerdings ist mir hier kein Ansatz gelungen mit if-Abfragen oder ähnlichem die gewünschte Ausgabe zu erzeugen. Das Problem ist wohl, dass die aktuelle Kategorie in der Schleife nicht weiß ob bei Ihren “Kindern” die aktive Kategorie dabei ist.

Würde mich freuen, wenn mir jemand auf die Sprünge helfen könnte.

Besten Dank!

Stefan Korn

Ich würde das in 2 Teilen machen: Einmal der Pfad zur aktuellen Kategorie (wie im Breadcrumb) und einmal die Unterkategorien der aktuellen Kategorie (wie die Icons in der Mitte). Weils das beides schon gibt, kann man sich da abschauen wie es gemacht wird.

Hallo zusammen
ich wollte in der linken Navigation auch nur den aktiven Kategorieast angezeigt bekommen und habe daran ziemlich lange rumgebastelt. Endlich habe ich nun eine Lösung gefunden. Vielleicht hilft dies jemandem weiter:

um beim Beispiel von oben zu bleiben, bei mir zeigt die linke Navigation nun an

Äpfel

  • Jonagold
    — Jonagold klein
    — Jonagold groß
  • Golden Delicous
  • Cripps Pink

Die Hauptkategorie (Obst), wollte ich nicht angezeigt haben. Es soll nur die aktive Unterkategorie mit ihren Unterkategorien angezeigt werden.

In der OXID PE 4.7.4 habe ich dazu in der categorytree.tpl (tpl/widget/sidebar) folgende Änderung vorgenommen:


[{if $oxcmp_categories }]
[{assign var="categories" value=$oxcmp_categories->getClickRoot() }]
[{assign var="act" value=$oxcmp_categories->getClickCat() }]
	[{if $categories }]

	[{foreach from=$categories item=_cat}]
 		[{if $_cat->getIsVisible() }]
 		[{foreach from=$_cat->getSubCats() item=osubcat1 key=subcatkey1 name=SubCat1}] 
 			[{if $osubcat1->expanded}] 
 			[{assign var="actSubCategory" value=$osubcat1 }]

				<div class="categoryBox">
				<ul class="tree" id="tree">
                [{* <!-- SubCat1 --> *}]
					<li class="actsubcat">[{$osubcat1->oxcategories__oxtitle->value}]</li>

					[{assign var="SubSubCategories" value=$actSubCategory->getSubCats() }]
					[{assign var="deepLevel" value=$oView->getDeepLevel()}]
					
                    [{if $SubSubCategories }]
                     [{* <!-- Unterkategorien von SubCat1 --> *}]
					    <ul class="tree" id="tree">
  						  [{defun name="tree" SubSubCategories=$SubSubCategories}]
     						   [{assign var="deepLevel" value=$deepLevel+1}]
      						   [{assign var="oContentCat" value=$oView->getContentCategory() }]
       								
                                     [{foreach from=$SubSubCategories item=_subcat}]
            						 [{if $_subcat->getIsVisible() }]
               						               						
                                     [{* subcategories *}]
					                <li class="[{if !$oContentCat && $act && $act->getId()==$_subcat->getId() }]active[{elseif $_subcat->expanded}]exp[{/if}][{if !$_subcat->hasVisibleSubCats}] end[{/if}]">
                    <a href="[{$_subcat->getLink()}]"><i><span></span></i>[{$_subcat->oxcategories__oxtitle->value}] [{ if $oView->showCategoryArticlesCount() && ($_subcat->getNrOfArticles() > 0) }] ([{$_subcat->getNrOfArticles()}])[{/if}]</a>
                    
                    					[{if $_subcat->getSubCats() && $_subcat->expanded}]
                        				<ul>[{fun name="tree" SubSubCategories=$_subcat->getSubCats() }]</ul>
                   						 [{/if}]
                					</li>
            						[{/if}]
        							[{/foreach}]
    						[{/defun}]
  						  </ul>

					[{/if}]


				</ul> 
 				</div>
 
 
 
			[{/if}]
 			[{/foreach}]
 

		[{/if}]
		[{/foreach}]


	[{/if}]
[{/if}]


Gruss
claudia