TYPO3 inline关联tt_content时Mask自定义字段TCA标签缺失如何解决
我们在部分内容元素开发中使用了Mask扩展,该扩展的核心功能是在tt_content表中新增动态CTypes和额外字段。后续我们开发的自定义扩展的实体需要关联某一个Mask模块实例,关联功能本身运行正常,唯一问题是inline元素的自定义标签无法正常显示。如果将同类型Mask模块作为普通页面内容添加,标签可以正常展示。
相关代码
自定义扩展的领域模型代码
/** * Returns the intro * * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\MASK\Mask\Domain\Model\Content> $intro */ public function getIntro() { return $this->intro; }
TCA配置代码
'intro' => [ 'exclude' => 0, 'label' => 'Intro zentriert', 'config' => [ 'type' => 'inline', 'foreign_table' => 'tt_content', 'foreign_field' => 'tx_zeppelinregions_content_elements', 'foreign_label' => 'tx_mask_teasergalleryheadline', 'foreign_table_field' => 'tx_zeppelinregions_content_elements_type', 'maxitems' => 1, 'foreign_match_fields' => [ 'ctype' => 'mask_introzentriert', ], 'overrideChildTca' => [ 'columns' => [ 'CType' => [ 'config' => [ 'default' => 'mask_introzentriert', 'readOnly' => 1, ], ], ], ], ] ],
问题表现
inline元素中标签缺失情况(注:tt_content默认字段的标签可正常显示):
同类型元素作为普通页面内容添加时标签正常展示:
解决方案
该问题是因为TYPO3在inline子记录的渲染场景下,不会自动加载对应CType的Mask自定义字段TCA和标签配置,按以下步骤调整即可修复:
- 确认你的自定义扩展已声明对Mask扩展的依赖,打开扩展根目录下的
ext_emconf.php,添加依赖配置,保证Mask的TCA生成逻辑优先执行:
$EM_CONF[$_EXTKEY] = [ // 其余原有配置保持不变 'constraints' => [ 'depends' => [ 'mask' => '8.0.0-0.0.0', // 替换为你实际使用的兼容Mask版本号 ], ], ];
- 修改现有TCA中inline字段的
overrideChildTca配置,补充对应CType的显示字段声明,把Mask生成的自定义字段加入渲染列表:
'overrideChildTca' => [ 'columns' => [ 'CType' => [ 'config' => [ 'default' => 'mask_introzentriert', 'readOnly' => 1, ], ], ], // 新增以下types配置,指定该CType的显示字段 'types' => [ 'mask_introzentriert' => [ 'showitem' => ' --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general, CType, tx_mask_teasergalleryheadline, --palette--;;headers, bodytext, --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, hidden, ', ], ], ],
如果不清楚对应内容元素的完整showitem配置,可以直接进入Mask后台模块,找到该内容元素的配置项,复制系统生成的showitem值即可。
3. 清理TYPO3全部系统缓存,重新进入后台页面即可看到自定义字段标签正常显示。
内容的提问来源于stack exchange,提问作者LukasKroess
相关产品推荐
相关产品推荐

