将插件设置为新 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
为了充分利用 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