Kategorien Top Navigation Spaltenweise

Hi zusammen,

hier mal ein kleines Snippet (Basic Template), mit dem man die Topkategorien Spaltenweise ab 5 Kategorien darstellen lassen kann. Das JavaScript muss man sich natürlich noch extra basteln. Nur mal so als Anregung… Fürs Azure Theme kann man selbstverständlich ähnlich vorgehen.

_header.tpl


                [{if $iCatCnt <= $oView->getTopNavigationCatCnt()}]
                <li>
                    <a id="root[{$iCatCnt}]" href="[{$ocat->getLink()}]" [{if $ocat->expanded}]class="exp"[{/if}]>[{$ocat->oxcategories__oxtitle->value}] [{*if $ocat->getNrOfArticles() > 0}] ([{$ocat->getNrOfArticles()}])[{/if*}] </a>
                    [{if $ocat->getSubCats()}]
                    [{strip}]

                    [{assign var="subcount" value=0}]
                    [{assign var="count" value=0}]
                    
                    [{foreach from=$ocat->getSubCats() item=osubcat key=subcatkey name=subcounting}]
                      [{assign var="subcount" value=$subcount+1 }]
                    [{/foreach}]

                    <div class="menue vertical dropdown">
                    [{foreach from=$ocat->getSubCats() item=osubcat key=subcatkey name=SubCat}]
                                                            
                      [{if $smarty.foreach.SubCat.index%5 == 0}]
                         <div class="col">
                      [{/if}]  
        
                        [{if $osubcat->getContentCats()}]
                            [{foreach from=$osubcat->getContentCats() item=osubcont key=subcontkey name=subcont}]
                              <a id="test_Top_root[{ $iCatCnt }]_Cms_[{$smarty.foreach.SubCat.iteration}]_[{$smarty.foreach.subcont.iteration}]" href="[{$osubcont->getLink()}]">[{$osubcont->oxcontents__oxtitle->value}] </a>
                            [{/foreach}]
                        [{/if}]
                        [{if $osubcat->getIsVisible() }]
                            <a id="test_Top_root[{ $iCatCnt }]_SubCat_[{$smarty.foreach.SubCat.iteration}]" href="[{$osubcat->getLink()}]">[{$osubcat->oxcategories__oxtitle->value}] [{*if $osubcat->getNrOfArticles() > 0}] ([{$osubcat->getNrOfArticles()}])[{/if*}] </a>
                        [{/if}]
  
                      [{if $smarty.foreach.SubCat.index%5 == 4 || $smarty.foreach.SubCat.index == $subcount - 1}]
                        </div>
                      [{/if}] 
                                                   
                      [{assign var="count" value=$count+1 }]

                    [{/foreach}]
                    </div>
                    [{/strip}]
                    [{/if}]
                </li>
                [{/if}]

So, jetzt stehe ich hier gerade noch vor nem dickeren Brocken, komme auch nach stundenlangem Rumprobieren nicht drauf. Zugrunde liegt oberes Beispiel, dort möchte ich noch jeweils das erste und letzte div class=“col” mit einem first und last kennzeichnen.

Folgendes funktioniert leider nicht:


[{foreach from=$ocat->getSubCats() item=osubcat key=subcatkey name=SubCat}]
[{if $smarty.foreach.SubCat.index%5 == 0}]
<div class="col[{if $smarty.foreach.SubCat.first}] first[{/if}][{if $smarty.foreach.SubCat.last}] last[{/if}]">
[{/if}]  

Keine Ahnung, was ich falsch mache…

Also, first wird erkannt, nur beim LAST stellt er sich irgendwie quer. Hmmmm…

Nru eine Idee, aber ist Last nicht die letzte Subcat die es gibt und nicht die 5te die du haben willst? Evtll über einen weiteren Counter zu lösen.

zähl doch immer bis 4 und 4 ist last dann wieder mit 0 beginnen :wink:

Sodalla Jungs, jetzt gerade ein Bierchen getrunken und schwupps hats geklappt :slight_smile:

So tuts:


                    [{assign var="subcount" value=0}]
                    [{assign var="count" value=0}]
                    
                    [{foreach from=$ocat->getSubCats() item=osubcat key=subcatkey name=subcounting}]
                      [{assign var="subcount" value=$subcount+1 }]
                    [{/foreach}]

                    <div class="menue vertical dropdown">
                    [{foreach from=$ocat->getSubCats() item=osubcat key=subcatkey name=SubCat}]
                                    
                    [{if $smarty.foreach.SubCat.index%5 == 0}]
                    [{assign var="count" value=$count+1 }]                
                      <div class="col[{if $smarty.foreach.SubCat.first}] first[{/if}][{if $count == $subcount%5 &&  $smarty.foreach.SubCat.first == false}] last[{/if}]"> 
                    [{/if}]


Danke nochmals für Eure Hilfestellung und nen schönen Abend!