我想为用户在RTE中输入的所有链接添加参数。
我最初的想法是这样做:
lib.parseFunc_RTE.tags.link {
typolink.parameter.append = TEXT
typolink.parameter.append.value = ?flavor=lemon
}
例如:
http://domain.com/mypage.php
变为
http://domain.com/mypage.php?flavor=lemon
这听起来很棒 - 只要链接不已经有查询字符串! 在这种情况下,我显然在URL中有两个问号
例如:
http://domain.com/prefs.php?id=1234&unit=moon&qty=300
变为
http://domain.com/prefs.php?id=1234&unit=moon&qty=300?flavor=lemon
有没有办法用正确的语法添加我的参数,具体取决于URL是否已经有查询字符串?谢谢!
答案 0 :(得分:2)
那将是解决方案:
lib.parseFunc_RTE.tags.link {
typolink.additionalParams = &flavor=lemon
}
请注意,它必须以&,typo3开头,然后生成有效链接。如果相应配置,链接中的参数也将使用realURL进行解析。
编辑:以上解决方案仅适用于文档https://docs.typo3.org/typo3cms/TyposcriptReference/Functions/Typolink/Index.html
中所述的内部链接我看到的唯一适用于所有链接的解决方案是使用userFunc
lib.parseFunc_RTE.tags.link {
typolink.userFunc = user_addAdditionalParams
}
然后你需要创建一个php脚本并在你的TS中加入:
includeLibs.rteScript = path/to/yourScript.php
请记住,includeLibs已经过时,所以如果你使用TYPO3 8.x(可能是7.3+),你需要创建一个只包含几个文件的自定义扩展
<?php
function user_addAdditionalParams($finalTagParts) {
// modify the url in $finalTagParts['url']
// $finalTagParts['TYPE'] is an indication of link-kind: mailto, url, file, page, you can use it to check if you need to append the new params
switch ($finalTagParts['TYPE']) {
case 'url':
case 'file':
$parts = explode('#', $finalTagParts['url']);
$finalTagParts['url'] = $parts[0]
. (strpos($parts[0], '?') === false ? '?' : '&')
. 'newParam=test&newParam=test2'
. ($parts[1] ? '#' . $parts[1] : '');
break;
}
return '<a href="' . $finalTagParts['url'] . '"' .
$finalTagParts['targetParams'] .
$finalTagParts['aTagParams'] . '>'
}
PS:我还没有测试过实际的php代码,所以它可能会有一些错误。如果您遇到麻烦,请尝试调试$finalTagParts
变量
答案 1 :(得分:1)
测试是否“?”字符已经在URL中并附加“?”或“&amp;”,然后附加你的键值对。有一个CASE object available in the TypoScript Reference,你可以根据自己的目的修改一个例子。
答案 2 :(得分:1)
对于任何有兴趣的人,这里有一个使用Typoscript的app.js
功能为我工作的解决方案。希望这会有所帮助。
replacement