能否在TYPO3条件中比较两个TypoScript函数?求语法方案
TYPO3条件语句中比较TypoScript函数的可行方案
一、正确的条件语法
可以直接在TYPO3条件语句中比较这两个函数的返回值,但需改用严格类型比较运算符===,避免因类型隐式转换或字符串细节差异导致判断失效。修正后的代码如下:
[site("base").getHost() === request.getRequestHostOnly()] page.headerData.850193 = COA page.headerData.850193 { 10 = TEXT 10.wrap ( <script> !function(f,b,e,v,n,t,s) // 你的Facebook像素代码 </script> ) } [global]
原写法失效原因
你之前使用==进行比较,该运算符会进行隐式类型转换,若两个函数返回值存在细微差异(如大小写、隐形空格或端口隐含处理不同),就会导致判断不匹配。===会同时检查值和类型,判断更精准。
二、替代解决方案
如果上述条件仍不符合需求,可尝试以下更灵活的方案:
直接枚举允许的主机:若站点主机固定,直接指定主机列表,避免函数调用的潜在问题:
[request.getRequestHostOnly() === "your-domain.com" || request.getRequestHostOnly() === "www.your-domain.com"] // Facebook像素加载代码 [global]使用站点自定义配置:在站点配置的「站点设置」中添加
allowedHosts = your-domain.com,www.your-domain.com,再通过TypoScript读取配置判断:[request.getRequestHostOnly() in site("base").configuration.allowedHosts] // Facebook像素加载代码 [global]后端逻辑控制:若需要更复杂的判断(如排除特定路径、验证请求来源),可开发简单扩展,通过控制器或Hook来控制像素加载,灵活性更高。
内容的提问来源于stack exchange,提问作者Joey Bouten
相关产品推荐
相关产品推荐

