Zum Hauptinhalt springen

TYPO3 linkhandler

Ab TYPO3 8.7 LTS in core. Getestet mit 8.7 und 9.5

Die Quellen (englisch)

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}
		}
	}
}