如何为TYPO3的站点配置-站点语言添加自定义字段?
解决TYPO3站点语言配置添加自定义字段的问题
正确实现代码
替换你原来的代码为以下内容,核心是使用site_language作为types的键,而非数字索引:
// 注册自定义字段 $GLOBALS['SiteConfiguration']['site_language']['columns']['testing'] = [ 'label' => 'LLL:EXT:gf_sitepackage/Resources/Private/Language/locallang.xlf:testing', 'config' => [ 'type' => 'input', 'eval' => 'required', 'default' => 'testing', ], ]; // 将字段添加到表单显示 if (isset($GLOBALS['SiteConfiguration']['site_language']['types']['site_language']['showitem'])) { $GLOBALS['SiteConfiguration']['site_language']['types']['site_language']['showitem'] = str_replace( 'websiteTitle,', 'websiteTitle, testing, ', $GLOBALS['SiteConfiguration']['site_language']['types']['site_language']['showitem'] ); }
错误原因说明
你之前使用数字0或1作为types索引是错误的:
- 主站点配置(
site)的TCA类型用数字0标识默认类型 - 但站点语言(
site_language)的TCA类型键是字符串site_language,而非数字索引,所以之前的代码要么触发未定义索引警告,要么修改了不存在的类型导致字段不显示
后续步骤
- 保存代码后,清除TYPO3所有缓存(包括配置缓存)
- 进入后台站点管理,编辑对应语言,即可看到新增的
testing字段
如何获取字段值
在前端或后端代码中,可以通过SiteLanguage对象获取该值:
// 假设你已经获取到SiteLanguage对象$siteLanguage $testingValue = $siteLanguage->get('testing');
内容的提问来源于stack exchange,提问作者ntiedt
相关产品推荐
相关产品推荐

