Die Tage musste ich eine etwas größere Kategoriestruktur in “tt_news” erstellen. Dabei habe ich bemerkt, dass das “CATMENU” nicht ganz so Flexibel ist.
Irgendwie hatte ich zwischen jedem “Wrap” der Unterkategorien noch einen “li-Tag” der Oberkategorie.
Nach kurzem, jedoch erfolglosen, Suchen und Downphase von typo3.org hatte ich mich hingesetzt und mir ein eigenes Kategoriemenü gebastelt.
Das hatte den Vorteil, dass ich das ganze problemlos in meine eigentliche Library der Subnavigation einbauen konnte.
Umgesetzt habe ich das ganze mit dem einfachen TYPO-Script cObj “CONTENT”. Natürlich könnte man das ganze auch mit einer “TYPO3-Userfunction” in PHP lösen, aber wo bleibt denn da der Spaß?!
Außerdem steige ich auf diesem Weg immer tiefer in die Möglichkeiten von TYPO-Script ein.
Um mal kurz zu erklären, wie ich vorgegangen bin:
Ich habe ein “CONTENT”-Objekt erstellt und damit auf die “tt_news” Kategorie Tabelle zugegriffen.
Dort habe ich mit “pidInList” mein “dataStorage” abgefragt und mit “where” habe ich noch gesagt, dass nur zeilen ausgegeben werden, in denen “parent_category=0 AND deleted=0″ ist.
Nun konnte ich mit “renderObj” die ausgegebenen Zeilen zu einem netten Menü verarbeiten.
Aktive Kategorien habe ich dann einfach per “stdWrap”-Funktion “override”, “if” und “data = GPvar:tx_ttnews|cat” abgefragt. Auf diesem Weg hab ich dann auch gleich das nächste “CONTENT”-Objekt eröffnet um die unteren Kategorien abzufragen.
Nachdem das erledigt war und ich den ersten Testlauf machte wurden mir die Unterkategorien auch ordentlich ausgegeben. Nach einem ersten Klick auf eine der Unterkategorien kam aber der erste Dämpfer.
In dem Fall ist “data = GPvar:tx_ttnews|cat” natürlich unbrauchbar um die Oberkategorie zu referenzieren.
Die passende Lösung kam mir aber ziemlich schnell in den Kopf geschossen. Einfach per “Plugin-TLO” eine neue “pi_var” für “tt_news” setzen. Die ist nötig, damit ich auch innerhalb einer News die aktiven Kategorien habe (Stichwort: keepPiVars und Zugriff auf den “morelink” von “tt_news” hat man ja leider nicht so ohne weiteres).
Diese habe ich dann per “LOAD_REGISTER” festgesetzt, damit ich später in den weiteren Unterkategorien weiterhin Zugriff darauf habe.
Ich habe das Menü auf 2 Ebenen beschränkt, aber es sollte mit ein paar anpassungen kein Problem darstellen, dass ganze zu erweitern.
Ich bin jetzt ehrlich gesagt zu Faul um die ganze library hier zu posten, darum habe ich das ganze mal in eine Datei geschrieben die ich einfach verlinke. – Hier anschauen!
Achja, ich möchte noch hinzufügen, dass der (oder das) Script nicht einfach kopiert werden soll. Vielmehr sollte das ganze als Denkanstoss oder Hilfestellung zum selber machen dienen. *Kopieren kann nämlich jeder!
*
Übrigens hat mir das Buch von “Patrick Lobacher”: "TypoScript – kurz und gut" sehr dabei geholfen. Das gute Stück kostet gerade mal 12,99 € und ist vor allem sehr gut (in Deutsch) erklärt.
10 Kommentare
Neuen Kommentar schreiben1. Walter | 30. September 2008 | 11:18
Hallo Marcel,
ich habe mir deinen Beitrag genau durchgelesen und versucht diesen in einer etwas anderen Form zu nutzen.
Ich bastle mir ein Kategoriemenü, welches anschließend in das Hauptmenü an eine bestimmte Stelle gepackt wird. Nun habe ich aber das Problem, das der generierte Link nur sporadisch funktioniert, da mir glaube ich, der Hash-Wert (wie beim originalen AMENU von tt_news) fehlt.
Kannst Du mir vielleicht sagen, wie ich den hier dazu bekomme?
#########TS-Code############
temp.newsMenuLinkParams = COA
temp.newsMenuLinkParams {
10 = TEXT
10.field = uid
10.wrap = &tx_ttnews[cat]=|
}
temp.newsMenu = CONTENT
temp.newsMenu {
table = tt_news_cat
select {
// Speicherort der News
pidInList = 250
orderBy = tstamp DESC
begin = 0
max = 3
selectField = uid,tstamp,title
}
renderObj = TEXT
renderObj {
wrap = |
// tt_news DB Feld das als Linktext benutzt werden soll
field = title
// Page-ID mit dem gewünschten Single View
typolink.parameter = 325
typolink.additionalParams.cObject < temp.newsMenuLinkParams
}
}
2. gumfi | 06. Oktober 2008 | 16:53
Sorry für die späte Antwort. Irgendwie bekomm ich keine Mails mehr bei Kommentaren… o.O
Versuch mal in deinen typolink eine der beiden optionen:
useCacheHash = 1
no_cache = 1
Ansonsten lass dir vom Link mal die URL ausgeben (returnLast = url) und bau den A-Tag selbst zusammen.
Was genau meinst du denn mit sporadisch?
Ich tüftel aber nochmal rum und melde mich wenn ich vielleicht noch nen sinnvollen Lösungsansatz finde.
3. Josh | 13. Februar 2009 | 15:01
Funktioniert das auch mit einem Templa-Voila Objektpfad wie z.B. “lib.subnav” ?
Habe es ausprobiert kriege es einfach nicht zum laufen….
Danke im Voraus
So sieht mein Menu jetzt aus, würde es gerne aber mit den tt_news Kategorieren laden…:
### Subnav
lib.subnav = HMENU
lib.subnav.entryLevel = 1
lib.subnav.1 = TMENU
lib.subnav.1 {
wrap = |
noBlur = 1
expAll = 0
NO.linkWrap = |
IFSUB= 1
IFSUB.allWrap = |
ACT = 1
ACT.allWrap = |
ACTIFSUB = 1
ACTIFSUB.allWrap = |
}
lib.subnav.2 = TMENU
lib.subnav.2 {
wrap = |
noBlur = 1
expAll = 0
NO.linkWrap = |
ACT = 1
ACT.allWrap = |
Alles Gute
Greez
4. gumfi | 13. Februar 2009 | 16:56
Ich hab mein gesamtes Script doch verlinkt.
Habe selbst auch “lib.subNav” genutzt, um das Kategoriemenü als Subnavigation zu tarnen.
Schau mal hier:
http://gumfi.de/wp-content/uploads/2008/09/ttnewscatmenuts.txt
Schau dir die TXT Datei an und les dir den Beitrag nochmal durch. Dann sollte das eigentlich kein Problem sein.
5. SEO | 31. August 2010 | 23:45
Hallo,
bei mir funktioniert das Menu super, obwohl ich das mitgelieferte auch gut finde und es für meine Zwecke völlig ausreicht.
6. Tobi | 24. November 2010 | 15:06
Hi gumfi,
coole Sache das Ganze. Tut super. krieg nur keine news angezeigt, trotz Zuweisung der Kategorien. Muss ichd as TS dazu erweitern oder reichen die Pluginzuweisungen.
Grüße
7. blog | 20. Mai 2011 | 11:14
please provide a english version of this how to article
8. Dell Inspiron 910 akku | 18. August 2011 | 08:00
Ansonsten lass dir vom Link mal die URL ausgeben (returnLast = url) und bau den A-Tag selbst zusammen.
9. SWolf | 05. September 2011 | 16:42
Hey das geht ja super!
Aber sag mal, hast du dazu noch eine halbwegs vernünftige RealURL-Konfiguration?
10. SWolf | 05. September 2011 | 18:02
Okay… eine andere RealURL-Konfiguration ist unnötig.
Offenbar macht die Zeile
“parameter = 77 #hier kommt z.B. die “catSelectorPid” hin”
Probleme wenn man den Kommentar stehen lässt. Ohne Comment läuft mit useCacheHash = 1 alles blendend! Habe sogar ein GMENU draus bauen können.