TYPO3 8.7.12中扩展tt_content字段无显示问题求助
我之前在TYPO3 8.7版本折腾tt_content字段扩展的时候,也碰到过一模一样的问题——数据库里字段明明已经加上了,但后端内容元素里就是看不到。结合我踩过的坑,给你梳理几个最值得优先排查的点:
检查TCA配置的正确性与加载路径
首先确保你的TCA覆盖文件放在Configuration/TCA/Overrides/tt_content.php这个标准路径下,TYPO3 8.7会自动扫描这个目录加载扩展配置。然后要确认你正确调用了两个核心方法:先通过addTCAcolumns()定义字段,再用addToAllTCAtypes()把字段添加到内容元素的显示模板里。举个标准的代码示例:// 定义新字段的TCA配置 $newFields = [ 'custom_field' => [ 'exclude' => 1, 'label' => '自定义字段', // 可以先不用语言标签测试 'config' => [ 'type' => 'input', 'size' => 40, 'eval' => 'trim' ] ] ]; \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content', $newFields); // 将字段添加到所有内容元素的显示区域(这里指定在bodytext之后) \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes( 'tt_content', 'custom_field', '', // 空字符串表示所有内容元素类型 'after:bodytext' );注意两个方法的调用顺序不能搞反,必须先加字段再配置显示位置。
强制清空所有系统缓存
TYPO3的TCA配置会被缓存起来,哪怕你改了配置文件,没清缓存的话后端还是读旧的配置。一定要去后端「维护」模块,点击「清空全部缓存」——别只清页面缓存,要把配置缓存也清掉,有时候甚至需要手动删除typo3temp/var/cache目录下的缓存文件(服务器权限允许的话)。检查字段的权限与exclude属性
如果你的字段exclude设为1,那当前登录的后端用户组必须有「显示排除字段」的权限才能看到它。你可以先临时把exclude改成0测试,如果字段能显示了,再去用户组的权限设置里,找到对应字段开启访问权限;或者在列表模块里右键内容元素,选择「显示全部字段」,看看能不能找到你的字段——如果能看到,就是权限配置的问题。验证语言文件(如果用了LLL标签)
如果你给字段用了LLL语言标签,比如'label' => 'LLL:EXT:your_ext/Resources/Private/Language/locallang_db.xlf:tt_content.custom_field',要确认语言文件的路径和键名完全正确。可以先把label改成纯文本(比如上面示例里的「自定义字段」),如果字段能显示,就说明是语言文件加载的问题,检查文件路径、编码或者键名拼写。确认内容元素类型的覆盖范围
如果你不是要给所有内容元素加字段,而是特定类型,要确认addToAllTCAtypes的第三个参数(内容元素类型标识)是否正确。比如只给文本元素加的话,应该填'text'而不是空字符串。如果是空字符串但某些自定义内容元素还是看不到字段,可能需要手动把这些自定义类型的标识加到参数里,用逗号分隔。
内容的提问来源于stack exchange,提问作者Pavenstaedter

