如何在TYPO3的Constants中设置站点名称作为默认值?
在TYPO3 Constants中配置站点名称供Fluid模板使用
嘿,我来帮你理清这两种写法的正确用法和适用场景,让你能顺利在Fluid模板里拿到站点名称:
1. 推荐用法:GLOBAL:TYPO3_CONF_VARS|SYS|sitename
这种方式直接读取TYPO3全局配置里的站点名称,是最稳妥的方案,因为TYPO3_CONF_VARS[SYS][sitename]就是系统层面定义的站点名称。
你只需要在constants.ts里这么写:
# cat=plugin.tx_rmnavigation/01_NaviSettings/a; type=string; label=Testing Site Title testsitetitle = GLOBAL:TYPO3_CONF_VARS|SYS|sitename
然后必须在setup.ts里把这个常量映射到插件的settings中——这一步很容易被忽略:
plugin.tx_rmnavigation { settings { testsitetitle = {$plugin.tx_rmnavigation.testsitetitle} } }
做完这两步,清除TYPO3缓存后,你就能在Fluid模板里用{settings.testsitetitle}直接调用站点名称了。
2. 慎用:DB:sys_template|1|title
这种写法是直接从数据库的sys_template表中读取uid为1的模板的title字段,但这里有两个坑:
- 模板的uid不一定是1,不同环境(比如本地、测试、生产)的模板uid可能不一样,移植代码很容易出问题
- 模板的
title是模板自身的名称,和全局站点名称是两个完全不同的概念,除非你特意把模板title设成站点名,否则拿到的不是你要的内容
如果一定要用这种方式,得先确认sys_template表中存在uid为1的模板,并且同样需要在setup.ts里把常量赋值给插件settings,才能在Fluid中使用。
小提示
- 每次修改完TS配置后,一定要清除TYPO3的缓存,否则新配置不会生效
- 如果是多站点环境,
GLOBAL:TYPO3_CONF_VARS|SYS|sitename拿到的是全局站点名,要是每个站点需要独立名称,建议用站点配置或者通过TSFE对象获取当前站点的名称
内容的提问来源于stack exchange,提问作者Another_Coder
相关产品推荐
相关产品推荐

