Bei einem in die Jahre gekommenen Projekt stand ich vor Kurzem vor der Herausforderung, von tt_news
zu news
zu migrieren und danach die ehemals für tt_news
eingestellte Cooluri Konfiguration anzupassen.
Die entscheidende Stelle in der alten Cooluri Konfiguration für tt_news
lautete so:
<uriparts> <part> <parameter>tx_ttnews[tt_news]</parameter> <lookindb> <!-- <to>SELECT title FROM tt_news WHERE uid=$1</to> --> <to> SELECT CONCAT(uid,'-',title) FROM tt_news WHERE uid=$1 </to> <!-- if you have news items in different languages in one folder, use this sql --> <!-- to>SELECT title FROM tt_news WHERE (uid=$1 or l18n_parent=$1) AND sys_language_uid={L=0}</to --> <t3conv>1</t3conv> </lookindb> </part> ... </uriparts> |
Ich wollte die id und den Titel der News in der URL, da einige News identische Titel haben. Das Ergebnis sah so aus:
https:/www.domain.com/aktuelles/123-newstitel
.
Genauso sollte es nach der Migration zu news
aussehen.
Und so gehts:
Zunächst die Anpassung in den uriparts
:
<uriparts> <part> <parameter>tx_news_pi1[news]</parameter> <lookindb> <to> SELECT CONCAT(uid,'-',title) FROM tx_news_domain_model_news WHERE uid=$1 </to> <t3conv>1</t3conv> </lookindb> </part> ... </uriparts> |
Dann stehen da aber noch der controller
und der action
Parameter in der URL:
https:/www.domain.com/aktuelles/123-newstitel/%5Bcontroller%5D=News&tx_news_pi1%5Baction%5D=detail
.
Die naheliegende Idee, beide Parameter über die predefinedparts
zu eliminieren, funktionierte nur zum Teil:
<predefinedparts> <part> <parameter>tx_news_pi1[controller]</parameter> </part> <part> <parameter>tx_news_pi1[action]</parameter> </part> ... <predefinedparts> |
Ergebnis:
https:/www.domain.com/aktuelles/123-newstitel/News/detail
.
Wie man die Werte News/detail
über cooluri aus der URL entfernen kann, habe ich nicht ermitteln können. Statt dessen hilft hier ein Blick in die Dokumentation der news Extension: Removing controller and action arguments from URL:
plugin.tx_news { settings { link { skipControllerAndAction = 1 } } } |
Das geht für den Fall, dass es eine eigene Detailseite für die Anzeige der News gibt.