Es gibt mehrere Punkte zum Einhaken.
typolink Nachverarbeitung
Sie können in der typolink Nachverarbeitung haken Sie die typolink selbst zu modifizieren, bevor sie gerendert wird.
Dazu Sie zuerst Ihre eigene Klasse in ext_tables/ext_localconf registrieren:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['typoLink_PostProc'][] = 'Vendor\\Name\\Service\\TypoLinkProcessingService->postProcessTypoLink';
Dann in Ihrer TypoLinkProcessingService
Klasse (mit Ihrem Namen der Wahl, natürlich), können Sie es in Ihrer eigenen behandeln würden Methode. Zur Veranschaulichung, in diesem Beispiel, ändere ich eine URL, wenn es sich um einen Link zu einem Youtube-Video handelt, um "verwandte Videos" am Ende zu deaktivieren und die Farbe der Steuerelemente im YouTube-Player zu ändern.
public function postProcessTypoLink(&$parameters, ContentObjectRenderer &$parentObject)
{
if (isset($parameters['finalTagParts']['url'])) {
$urlParts = parse_url($parameters['finalTagParts']['url']);
if (stristr($urlParts['host'], 'youtube.com') !== false && stristr($urlParts['path'], 'watch') !== false) {
$parameters['finalTag'] = str_replace(
'"' . htmlspecialchars($parameters['finalTagParts']['url']) . '"',
'"' . htmlspecialchars($parameters['finalTagParts']['url'] . '&rel=0&color=ffffff') . '"',
$parameters['finalTag']
);
}
}
}
typolink UserFunc
Eine weitere Option ist userFunc
zu nutzen und Links anpassen.
Dazu konfigurieren Sie Ihre Linkhandler-Konfiguration (PageTS), um userFunc
innerhalb typolink
bereitzustellen. Fügen Sie TypoScript nach Bedarf hinzu, um die konfigurierten Daten später abzurufen.
config.recordLinks {
tx_myest {
typolink {
userFunc = Vendor\Name\UserFunc\TypolinkUserFunc->parseLinkHandlerTypolink
userFunc {
newsUid = TEXT
newsUid.data = field:uid
newsClass = TEXT
newsClass.data = parameters:class
defaultDetailPid = 53
}
}
}
}
In Ihrem parseLinkHandlerTypolink
Methode können Sie Eigenschaften Zugriff konfiguriert und angepasst werden je nach Bedarf:
class TypolinkUserFunc
{
/**
* @var \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer
* @inject
*/
public $cObj;
/**
* Add a method description here
*
* @param array $content
* @param array $configuration
* @return string
*/
public function parseNewsLinkHandlerTypolink(array $content, array $configuration)
{
if (!$configuration['newsUid']) {
return;
}
$params = $this->cObj->cObjGetSingle($configuration['newsClass'], $configuration['newsClass.']);
$newsUid = (int)$this->cObj->cObjGetSingle($configuration['newsUid'], $configuration['newsUid.']);
// ... your code goes here ...
$url = $this->cObj->typolink('', $typolink);
return '<a href="' . $url . '" ' . $attributes . '>';
}
}
Alternativ kann dieser Haken, der in 8.6 können Sie auch eingeführt wurde, helfen: https://docs.typo3.org/typo3cms/extensions/core/Changelog/8.6/Feature-79121-ImplementHookInTypolinkForModificationOfPageParams.html