Hallo,
ich möchte per typoscript einen Paramter an einen externen Link in einem Text-Content-Element anhängen.
Z.B. im Textfeld steht der Link
<link www.test.de>Hier klicken</link>
An diesen Link möchte ich die aktuelle Sprache meiner Seite anhängen (z.B. ?lang=de)
Zusätzlich möchte ich noch eine per user_func
generierte Checksumme anhängen (z.B. &check=098f6bcd)
Ich habe mich zu tode gesucht und nichts gefunden.
Vielen Dank im Voraus.
Grüße
Stephan
Ich hatte ein ähnliches Problem mit Menüpunkten, die z.T. auf eine externe Website verweisen sollten und dabei ebenfalls den L-Parameter mit übergeben sollten. Hat mich viel Zeit gekostet - vielleicht hilft Dir meine Lösung weiter.
TS-Setup:
config.sys_language_uid = 0
[globalVar = GP:L=1]
config.sys_language_uid = 1
[global]
[globalVar = GP:L=2]
config.sys_language_uid = 2
[global]
...
includeLibs.myUserFunctions = fileadmin/templates/php/ts_user_functions.php
...
# TS des Menüs in dem die externen URLs definiert sind:
lib.mainMenu = HMENU
lib.mainMenu {
1 = GMENU
1 {
NO {
allStdWrap.postUserFunc.langUID < config.sys_language_uid
allStdWrap.postUserFunc = user_functions->user_addLangIdToExternalUrl
...
}
...
}
}
Die PHP-Function in der Datei ts_user_functions.php sieht so aus:
<?php
class user_functions{
function user_addLangIdToExternalUrl($content, $conf){
// get params from calling TS
$pLangUID = $conf['langUID']; // config.sys_language_uid
// if link type is "external url" replace link to redirecting page with external url and add language param
if($this->cObj->data['doktype']==3){
$content = preg_replace('/(<a[^>]*href=")[^"]*("[^>]*>)/i', '$1http://'.$this->cObj->data['url']."?L=$pLangUID".'$2', $content);
}
return $content;
}
}
?>
Sollte so auch für TMENU funktionieren. Nebeneffekt ist, dass das href-Attribut der so modifizierten Links direkt die externe Adresse enthält und nicht die interne Seitenadresse, die dann redirected wird.
Viel Erfolg.
Hier ist eine aktualisierte Version der obigen PHP-Function im File ts_user_functions.php. Diese Version berücksichtigt den URL-Type (http, https, ftp, mailto), der im Backend zusammen mit der URL-Eingabe gewählt werden kann:
<?php
class user_functions{
function user_addLangIdToExternalUrl($content, $conf){
// get params from calling TS
$pLangUID = $conf['langUID']; // config.sys_language_uid
// if link type is "external url" replace link to redirecting page with external url and add language param
if($this->cObj->data['doktype']==3){
$urlSchemes = array(0=>'', 1=>'http://', 2=>'ftp://', 3=>'mailto:', 4=>'https://');
$content = preg_replace('/(<a[^>]*href=")[^"]*("[^>]*>)/i', '$1'.$urlSchemes[$this->cObj->data['urltype']].$this->cObj->data['url']."?L=$pLangUID".'$2', $content);
}
return $content;
}
}
?>