Benutzerdefinierte Kategorie-Menüs - Faceted Movable Type
08.09.2005 | Movabletype | 2 Kommentare | Print

Eine strukturierte Weblog-Navigation ist eine wertvolle Orientierungshilfe. Alle bisher vorgestellten Lösungen für Movable Type waren nicht besonders benutzerfreundlich. Wie oft liegt sehr nah, man muss nur etwas anders an das Problem herangehen.
Die benutzerdefinierte Darstellung und Ausgabe der MT-(Sub)-Kategorien beschäftigt mich schon einige Zeit. Immer wieder stieß ich bei Recherchen zu dem Thema Faceted Movable Type über denselben Beitrag.
Ist die Modifikation der Kategorie-Namen aber die einzige Lösung?
Bekanntermaßen unterliegen die seit MT 3.x integrierten Subkategorien einigen Einschränkungen. Doppelte Kategorie-Namen sind nicht zugelassen. Es sind nur wenige Sortier-Funktionen möglich. (So man sich kein Perl-Modul schreibt!) Auch die ausgewählte Ausgabe der Kategorien wäre eine gute Option. Im Zuge des Redesign und der immer länger werdenden Kategorie-Liste habe ich für mein Weblog nach Alternativen gesucht.
Warum brauche ich unbedingt gleich eine neue Sortierung, wo doch die simple Strukturierung der Kategorien bereits mehr Überblick und Ordnung bringt?
Strukturierung durch einfache Gliederung
Gesagt, getan. Einfache existierende Bordmittel sollten ohne großen Eingriff in Templates oder Umbenennung der Kategorien oder gar URLs eine Lösung schaffen. Schwierigkeiten machte dabei die Struktur des Subkategorien-Templates, denn dies ruft sich rekursiv auf. Das MT-Original zum einfachen Vergleich:
<MTTopLevelCategories> <MTSubCatIsFirst><ul></MTSubCatIsFirst> <MTIfNonZero tag="MTCategoryCount"> <li><a href="<$MTCategoryArchiveLink$>" ~ title="<$MTCategoryDescription encode_html="1"$>"> <$MTCategoryLabel encode_html="1"$></a> <MTElse><li><$MTCategoryLabel encode_html="1"$></MTElse> </MTIfNonZero> <MTSubCatsRecurse max_depth="3"></li> <MTSubCatIsLast></ul></MTSubCatIsLast> </MTTopLevelCategories>
Die Verwendung des MT-Tags *
Für eine strukturierte Gliederung der Navigation muss lediglich die Ausgabe eines solchen Template-Codes geeignet eingeschränkt werden. Das Compare-Plugin von Kevin Shay:http://www.staggernation.com leistet hierfür hervorragende Dienste. Herzlichen Dank an dieser Stelle dafür!
Das Unterscheidungskriterium für die Ausgabe war in Form des bei mir nicht belegten *
<MTTopLevelCategories> <MTSubCatIsFirst><ul></MTSubCatIsFirst> <MTIfEqual a="[MTCategoryDescription]" b="Persönlich"> <MTIfNonZero tag="MTCategoryCount"> <li><a href="<$MTCategoryArchiveLink$>" ~ title="<$MTCategoryDescription encode_html="1"$>"> <$MTCategoryLabel encode_html="1"$></a> <MTElse><li><$MTCategoryLabel encode_html="1"$></MTElse> </MTIfNonZero> <MTSubCatsRecurse max_depth="3"></li> </MTIfEqual> <MTSubCatIsLast></ul></MTSubCatIsLast> </MTTopLevelCategories>
Und so funktioniert es!
Der interessierende Code-Teil der Routine wird einfach in eine bedingte Abfrage eingebaut. Zur besseren Übersicht sei hier der Ausgabe-Code weggelassen.
<MTTopLevelCategories> <MTSubCatIsFirst><ul></MTSubCatIsFirst> <MTIfEqual a="[MTCategoryDescription]" b="Persönlich" ~ b1="Kategorie2"> </MTIfEqual> <MTSubCatIsLast></ul></MTSubCatIsLast> </MTTopLevelCategories>
Dabei kann die Anweisung für die Ausgabe jedes einzelnen Bereiches auch flexibel durch Mehrfach-Angabe von Parametern (wie dargestellt) erweitert werden. Pro Navigationsblock wird dann ein Template-Baustein nötig. Da aber dieser Code nur einmal ausgeführt wird, reduziert sich die zusätzliche Belastung schnell auf ein erträgliches Maß. Ggf. wird dieses Template-Modul nur kompiliert, wenn es wirklich Veränderungen der Kategorien gibt.
Ausblick
Auf den flexiblen Einsatz dieser Lösung hier im Blog freue ich mich schon. Als Anregung und Inspiration für weitere neue Lösungen will ich diese aber dennoch hier vorstellen. Vielleicht regt Euch der Beitrag zu anderen ebenso sinnvollen Lösungen an.
Ich freue mich auf Eure Gedanken und Anregungen!
Quellen:
Wer mag, findet hier einige Quellen sowie weitere Anregungen und Beiträge: