TYPO3 Menu-Sortierung bei mehrsprachigen Webseiten

02.12.2008 - 15:19

Mit TYPO3 können Menus sortiert werden. Diese Funktionalität wird im TMENU mit alternativeSortingField bereit gestellt. Allerdings birgt dies einige Tücken.

Bei mehrsprachigen Seiten sortiert TYPO3 nach der Originalsprache des angegebenen Feldes, dessen Übersetzung wird jedoch nicht beachtet. Zudem ist es nicht möglich für die Sortierung mehrere Felder anzugeben. Beispielsweise möchte man den Navigationstitel anstelle des Seitentitels verwenden, dort wo dieser angegeben wurde.

Beispiel Sortierung mit alternativeSortingField

#unterstützt keine mehrsprachigkeit
lib.mainnavi= HMENU
lib.mainnavi.entryLevel = 0
lib.mainnavi.1 = TMENU
lib.mainnavi.1 {
    NO = 1
    NO {
        allWrap = <span>|</span>
    }
    CUR = 1
    CUR < .NO
    ACT = 1
    ACT < .CUR
    alternativeSortingField = title ASC
}

Lösung

Für die Webseite der Anwaltskanzlei Altenburger haben wir für beides eine Lösung gefunden.

Mit TypoScript kann eine Funkion angegeben werden die aufgerufen wird, nachdem das Menu übersetzt wurde. Damit kann man das Menu beliebig sortieren. Zu beachten ist, dass der Funktionsname mit "user_" anfangen muss. Die Funktion kann man in einer beliebigen PHP-Datei erstellen, die man z.B. aus der localconf.php included.

Typoscript Code

lib.subnavi = HMENU
lib.subnavi {
  NO = 1
    NO {
        allWrap = <span>|</span>
    }
    CUR = 1
    CUR < .NO
    CUR.allWrap =  <span>|</span>
    ACT = 1
    ACT < .CUR
 
     
    itemArrayProcFunc = user_sortMenu
  }
}

localconf.php

require_once ( PATH_site. "/fileadmin/templates/scripts/sortMenu.php");

/fileadmin/templates/scripts/sortMenu.php

<?php
  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
   
    $retstrcasecmp  ( utf8_decode( $page1[$page1SortField] ) , utf8_decode( $page2[$page2SortField] ) );   
    return $ret;
  }

  function user_sortMenu ($menuArr  )
  {
    usort($menuArr, "user_pageCmp");   
    return $menuArr;   
  }
?>

Kategorien

  • LOGLAN
  • Print
  • Releases
  • SEO
  • TYPO3

Month List

  • Januar – 2011
  • Oktober – 2010
  • September – 2010
  • Oktober – 2009
  • September – 2009
  • Mai – 2009
  • April – 2009
  • Februar – 2009
  • Januar – 2009
  • Dezember – 2008

Tags

TYPO3 typoscript menu multilingual sort sortieren navigation Release erweiterung bildkonzept loglan umzug SEO Suchmaschinenoptimierung Realurl seo_basics TYPO3-SEO to top totop automatische Spracherkennung Spracherkennung extension Kleintierpraxis Grosstierpraxis Corporate Identity statistik google analytics Print Offsetdruck Deckweiss Webseite Theater Neumarkt offene stelle tt_news online Plattform Commenting