TYPO3 linkhandler
Ab TYPO3 8.7 LTS in core. Getestet mit 8.7 und 9.5
Die Quellen (englisch)
FEATURE SPOTLIGHT: LINKHANDLER
von Daniel Goerz, Blog "use TYPO3"
Changelog 8.6 - Feature: #79626 - Integrate record link handler
Changelog 7.6 - Feature: #66369 - Added LinkBrowser APIs
Die Quellen (deutsch)
clickstorm Blog, ausführlicher Beitrag über Linkhandler ab TYPO3 8
In den Kommentaren unter dem Beitrag sind viele aktuelle Hinweise.
BUG beachten
Eventuell ist ein Bug, der die Entwickler seit längerer Zeit beschäftigt, auch in TYPO3 9.5LTS noch nicht ganz gefixt.
TypolinkViewhelper with linkhandler ignores class attribute: Bug #80896
Linkhandler remove all attributes set in the link wizard and the template: Bug #81620
Der Aufbau von TS scheint wichtig. In den Bugreports stehen mehr Details.
Page TSconfig mit Beispiel für tx_news
TCEMAIN {
linkHandler {
// beliebiger Name, muss aber genauso in TS angegeben werden
aktuelles {
handler = TYPO3\CMS\Recordlist\LinkHandler\RecordLinkHandler
label = Aktuelles
configuration {
table = tx_news_domain_model_news
hidePageTree = 1
// Systemordner mit News-Datensätzen für Aktuelles
storagePid = 475
}
scanAfter = page
}
termine {
handler = TYPO3\CMS\Recordlist\LinkHandler\RecordLinkHandler
label = Termine
configuration {
table = tx_news_domain_model_news
hidePageTree = 1
// Systemordner mit News-Datensätzen für Termine
storagePid = 735
// Alternativ: Teile des Seitenbaums einblenden
// pageTreeMountPoints = 123,456
}
scanAfter = page
// Position des TABs bestimmen
displayAfter = aktuelles
}
}
}
TS setup mit Beispiel für tx_news
config.recordLinks {
# beliebiger Name, muss aber auch im Page TSconfig gleich sein
aktuelles {
typolink {
// News-Detailseite für Aktuelles. Wenn es nur eine Detailseite gibt,
// wird von tx_news Konfiguration übernommen. Sonst anpassen.
parameter = {$plugin.tx_news.settings.defaultDetailPid}
additionalParams.data = field:uid
additionalParams.wrap = &tx_news_pi1[controller]=News&tx_news_pi1[action]=detail&tx_news_pi1[news]=|
useCacheHash = 1
// Die nächsten fünf Zeilen stammen von clickstorm blog. Hinweise dort.
ATagParams.data = parameters:allParams
target.data = parameters:target
title.data = parameters:title
extTarget = _blank
extTarget.override.data = parameters:target
}
//Do not force link generation when the record is hidden
forceLink = 0
}
// alles von aktuelles übernehmen und dann anpassen
termine < .aktuelles
termine {
typolink {
// News-Detailseite für Termine
parameter = {$myConstants.newsDetailPid}
}
}
}