Zum Inhalt springen

Sortieren eines bestimmten Untermenüs

Erstellt am 19. Februar 2010 · 3 Antworten · letzte Antwort am 22. Februar 2010

Tags: Frage

Chi ·

Hallo,

Ich hab eine Navi zusammengebastelt, die in etwa so aussieht:

Navi 1
  ein Test
  auch ein Test
  noch ein Test
Navi 2
  CDE
  ABC
    Subsubnavi1
    Subsubnavi2
  DEF
Navi 3
  Navi 3a
  Navi 3b
  Navi 3c

an sich kein Problem, ich erstelle diese Navi so:

marks.NAVI_OBEN = HMENU
marks.NAVI_OBEN {
    ### Erste Ebene ###
    1 = TMENU	
    1 {
      wrap = <ul class="menu">|</ul>
      expAll = 1
      
      NO.wrapItemAndSub = <li>|</li>
      ACT < .NO
      ACT = 1
      ACT.ATagParams = class="active"
    }
### Zweite, dritte und vierte Ebene (Kopieren von erster Ebene) ###
    2 < .1
    3 < .1
}

Nun hab ich aber das Problem, dass ich die Unternavigation von Navi 2 (und nur diese!) alphabetisch sortieren soll. Ich hab recherchiert und alternativeSortingField = title gefunden, allerdings schaff ichs nicht weiter, als die Ebene 2 Navi komplett nach Titel sortieren zu lassen, und zwar so:

page.10.marks.NAVI_OBEN.2 = TMENU
page.10.marks.NAVI_OBEN.2{
      wrap = <ul class="menu">|</ul>
      expAll = 1
      alternativeSortingField = title 
      NO.wrapItemAndSub = <li>|</li>
      ACT < .NO
      ACT = 1
      ACT.ATagParams = class="active"
}

Wie aber sorge ich dafür, dass nur die eine Subnavigation von Navi2 alphabetisch sortiert wird?

Bin für jeden Hinweis dankbar.

igorshmigor ·

Ich habe hierfür leider auch keine Lösung.
Aber aus reiner Neugierde: Warum werden die Seiten nicht einfach im Backend manuell alphabetisch sortiert, wenn sie ohnehin in dieser Reihenfolge erscheinen sollen?

Chi ·
igorshmigor schrieb

Ich habe hierfür leider auch keine Lösung.
Aber aus reiner Neugierde: Warum werden die Seiten nicht einfach im Backend manuell alphabetisch sortiert, wenn sie ohnehin in dieser Reihenfolge erscheinen sollen?

die Seite is zweisprachig und der Kunde wünscht, dass die Reihenfolge dieses Untermenüs genau dann anders sortiert wird, wenn eine bestimmte Sprache eingestellt ist.... #angry#

Chi ·

Yeah, ich habs rausgefunden!

includeLibs.reversemenu = fileadmin/templates/scripts/sortMenu.php 
page.10.marks.NAVI_OBEN.2.itemArrayProcFunc = user_sortMenu

Mit page.10.marks.NAVI_OBEN.2.itemArrayProcFunc definiere ich mein eigenes sort Script. Und das steht in meiner sortMenu.php, die sieht - derzeit noch etwas behelfsmäßig - so aus:

  function user_pageCmp ($page1, $page2)
  {

    /* wenn Navigationstitel leer ist Titel verwenden */
    $page1SortField = trim($page1["nav_title"]) == "" ? "title" : "nav_title";
    $page2SortField = trim($page2["nav_title"]) == "" ? "title" : "nav_title";
   
    // uf8_decode, da strcasecmp kein uft8 unterstütz beim sortieren
   
    $ret =  strcasecmp  ( utf8_decode( $page1[$page1SortField] ) , utf8_decode( $page2[$page2SortField] ) );   
    return $ret;
  }

  function user_sortMenu ($menuArr  )
  {
    if($menuArr[0]["pid"] == 21 && $GLOBALS["L"] == 3)  
      usort($menuArr, "user_pageCmp"); //nach Titel sortieren 
    else
      ksort($menuArr); //normal sortieren 
    return $menuArr;   
  }

Mein Navigationspunkt, dessen Unternavigationspunkte anders sortiert werden sollen, hat die PID 21, daher frage ich ab: if($menuArr[0]["pid"] == 21 ...

Ob meine Abfrage nach der Sprache so wirklich da stehn kann, wird sich noch erweisen, mal sehn. Soweit funktionierts mal.