[b]Problem:[/b]
Über die Extension linkhandler können auch Redakteure ganz einfach interne Links auf tt_news Detailansichten setzen - und natürlich auch auf andere Detailansichten (tt_address, wt_directory, etc...).
Jedoch kann es sein, dass verschiedene News auf verschiedenen Seiten angezeigt werden sollen - eben je nach News Kategorie.
[b]Idee:[/b]
Linkhandler macht es einem wirklich nicht schwer über Typoscript dementsprechend einzugreifen und den Ablauf zu ändern: Also muss eine kleine userFunc her. Interessant ist auch, dass die tt_news Kategorien bereits ein Feld "Single PID" (Single-Anzeige (Newsdetails) für Nachrichten dieser Kategorie) beinhalten (war mir bis vor kurzem unbekannt) - das kann gleich hierfür benutzt werden.
[b]Umsetzung:[/b]
Beispiel TS:
[TS]includeLibs.linkhandler_helper = fileadmin/user_linkhandler_helper.php
# TS for linkhandler
plugin.tx_linkhandler {
tt_news {
forceLink = 1
#parameter = 15
parameter.stdWrap.cObject = USER
parameter.stdWrap.cObject {
userFunc = user_linkhandler_helper->main
userFunc {
# tt_news uid
uid = TEXT
uid.field = uid
# Default pid if no pid given
pid = TEXT
pid.value = 13
}
}
additionalParams = &tx_ttnews[tt_news]={field:uid}
additionalParams.insertData = 1
useCacheHash = 1
}
}
[/TS]
Dann noch eine kleine userFunc direkt mit Namen "user_linkhandler_helper.php" in fileadmin ablegen:
<?php // This class could manipulate the target pid of the linkhandler class user_linkhandler_helper { // Main function linkhandler pid change $this->conf = $conf['userFunc.']; // ts configuration $uid = $this->cObj->cObjGetSingle($this->conf['uid'], $this->conf['uid.']); // get tt_news uid $pid = $this->cObj->cObjGetSingle($this->conf['pid'], $this->conf['pid.']); // get default pid $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery ( 'tt_news_cat.single_pid', 'tt_news LEFT JOIN tt_news_cat_mm ON (tt_news.uid = tt_news_cat_mm.uid_local) LEFT JOIN tt_news_cat ON (tt_news_cat_mm.uid_foreign = tt_news_cat.uid)', '', 'tt_news_cat_mm.sorting', 1 ); if ($res) $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res); } else { // no cat given or no single pid given } } } ?>
Danach kann man die Single PID einfach über die Newskategorie setzen:
[img]http://www.design-and-style.de/temp/typo3/tt_news_cat_single_pid.jpg[/img]
[b]Abschließend:[/b]
Über TS kann man eine alternative PID eintragen, falls eine Kategorie keinen Single PID Eintrag beinhaltet.
Cheers, Alex
in2code.de - Wir leben TYPO3
- Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
- Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/