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

如何为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,而非数字索引,所以之前的代码要么触发未定义索引警告,要么修改了不存在的类型导致字段不显示

后续步骤

  1. 保存代码后,清除TYPO3所有缓存(包括配置缓存)
  2. 进入后台站点管理,编辑对应语言,即可看到新增的testing字段

如何获取字段值

在前端或后端代码中,可以通过SiteLanguage对象获取该值:

// 假设你已经获取到SiteLanguage对象$siteLanguage
$testingValue = $siteLanguage->get('testing');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:27:32