将插件设置为新 CType 的问题

Problem with setting a Plugin as a new CType

为了充分利用 TCA 的 showitem 配置插件的后端形式,我将其定义为新的 CType,而不是新的 list_type list CType.

我通过使用 addPlugin 注册它而不是官方扩展指南中概述的默认方法,使用 registerPlugin 来完成此操作。在 ext_tables.php:

        TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPlugin(
            [
                // Label.
                'LLL:EXT:my_ext/Resources/Private/Language/locallang.xlf:pi1.name',
                // Plugin key.
                'myext_pi1',
                // Icon.
                'pi1'],
            'CType',
            'my_ext'
        );

然后我就可以使用,在Configuration/TCA/Overrides/tt_content.php:

 $GLOBALS['TCA']['tt_content']['types']['myext_pi1'] = [
    'showitem' => " ... "]

根据需要配置它的后端表单显示。 但是现在,在从后端成功添加到页面上的插件后,当我尝试从前端查看它时,出现错误:

ERROR: Content Element with uid "284" and type "myext_pi1" has no rendering definition!

它没有像往常一样:使用 ExtensionUtility::configurePlugin(在 ext_localconf.php 中)加载分配给 ext_localconf.php 中插件的控制器操作。

有人知道我该怎么做才能让它发挥作用吗?

这种情况下的要点是,该元素不仅“表现得好像它是自定义内容元素”,而且它实际上是一个自定义内容元素。

因此您必须至少通过

提供基本配置
tt_content.myext_pi1

如果您正确注册了插件,只需将插件配置复制到 tt_content 条目

就足够了
tt_content.myext_pi1 < plugin.myext_pi1