Typo3-Tutorial: Kategorie-Filter für tt_news bauen

Heute beginne ich eine kleine Artikelreihe, in der ich zeigen will, wie man einen Suchfilter für tt_news bauen kann. Solch ein Formular ist speziell für große Seiten interessant, die ihre Nachrichten in hierarchischen Kategorien ablegen. Ziel ist das Entwickeln eines Filters, der ungefähr so aussehen wird:

tt_news Kategorie-Filter

tt_news Kategorie-Filter

In Typo3 haben wir die drei Oberkategorien “Thema”, “Medientyp” und “Autor”. Alle Unterkategorien sollen jeweils einzeln in einer Liste oder Ausklappbox dargestellt werden. Dies ist mit der bereits vorhandenen CATMENU-Ansicht nicht zu realisieren.

Anzeige der gefilterten Nachrichten

Ja, richtig gelesen, wir fangen quasi von hinten an :-) … das Formular werden wir erst in den folgenden Artikeln zusammenbauen. Heute geht es zunächst darum wie wir das Ergebnis des Filters anzeigen können.

Das Ergebnis wird eine GET-Variable (erzeugt vom Formular), welche die Kategorie-UID’s enthält, also so etwas wie “?categories=45,12,90“. Wir wollen uns möglichst viel Arbeit ersparen, daher nutzen wir zur Anzeige einfach das normale News-Plugin mit der LIST-Ansicht. Da wir die Kategorien kombinieren wollen, wählen wir als Kategoriemodus “Zeige alle Beiträge aus ausgewählten Kategorien (UND)”.

Normalerweise werden die anzuzeigenden Kategorien im Plugin fest eingestellt. Alternativ gibt es auch die Möglichkeit diese per Typoscript festzulegen und da man von Typoscript aus auf GET-Variablen zugreifen kann, ist unsere Lösung schon mit einer einzigen Zeile abgetan:

plugin.tt_news.categorySelection.data = GPvar : categories

Dank der data-Eigenschaft können wir die Kategorie-Selektion aus der GET-Variable “categories” auslesen. Der Aufruf der Suchergebnisse würde nun also z.B. so aussehen: http://www.yourdomain.de/index.php?id=1000&categories=45,12,90

Wer das ganze jetzt mehrmals hintereinander testet, wird feststellen, dass sich die Seite nach dem ersten Aufruf nicht mehr verändert. Dem Cache sei dank! So nützlich er auch ist, so stört er doch an dieser Stelle. Daher müssen wir noch eine weitere GET-Variable an die URL anhängen, die Typo3 signalisiert, dass nicht gecached werden soll: http://www.yourdomain.de/index.php?id=1000&categories=45,12,90&no_cache=1

Und fertig ist die Anzeige der Ergebnisse … demnächst gehts weiter