You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TYPO3 8.7.12:如何通过TypoScript常量控制内容显示隐藏?

解决TYPO3 8.7.12中根据常量控制内容显示的问题

针对你遇到的这个问题,我结合TYPO3 8.7的特性给你几个可行的解决思路:


1. 修正条件判断的语法与类型匹配

你之前的写法失效,核心原因是TYPO3中布尔类型的常量实际存储为字符串"1"或"0",而非数值类型,同时旧的globalVar语法在8.7中虽然兼容,但globalString更适合字符串值的判断。试试这个写法:

[globalString = plugin.mycustompage.top_header.privateNumberShow = 1]
    lib.contactInfo.20 = TEXT
    lib.contactInfo.20.value = {$plugin.mycustompage.top_header.privatePhoneNumber}
[else]
    // 清空内容
    lib.contactInfo.20 >
[global]

这个逻辑会在privateNumberShow为"1"(即勾选状态)时显示手机号,否则移除该内容块。


2. 检查常量是否正确加载

有时候问题出在常量没有被模板正确引入:

  • 确保你的模板Constants部分已经包含了constants.ts的引用:
    <INCLUDE_TYPOSCRIPT: source="FILE:EXT:你的扩展名/Configuration/TypoScript/constants.ts">
    
  • 同时在Setup部分也要确保能访问到这些常量,或者直接在Setup中引入对应的配置文件。

3. 使用TypoScript的if属性直接控制(无需条件语句)

如果你不想用条件块,也可以直接给TEXT对象添加if判断,更简洁:

lib.contactInfo.20 = TEXT
lib.contactInfo.20.value = {$plugin.mycustompage.top_header.privatePhoneNumber}
// 仅当privateNumberShow为"1"时显示内容
lib.contactInfo.20.if {
    value = 1
    equals = {$plugin.mycustompage.top_header.privateNumberShow}
}
// 条件不满足时清空内容
lib.contactInfo.20.ifEmpty >

额外提示

在TYPO3 8.7中,布尔类型的常量定义后,后台勾选时会存储为字符串"1",未勾选为"0",所以所有判断都要基于字符串值,不要用数值对比(比如= 0这种写法会不匹配)。

内容的提问来源于stack exchange,提问作者Puzo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:44:04