在 TYPO3 插件中创建新内容 cType 时使用 FlexForm

Using FlexForm when creating new content cType in TYPO3 plugins

我正在向我的 TYPO3 添加新的内容类型,我想使用 FlexForms 来定义每个内容类型选项表单。

我遵循了这个例子:https://docs.typo3.org/typo3cms/extensions/fluid_styled_content/latest/AddingYourOwnContentElements/

并修改它以使用此示例中的 FlexForms:https://wiki.typo3.org/Extension_Development,_using_Flexforms

但我相信我不太了解Configuration/TCA/Overrrides/tt_contant.php中的设置:

// Adds content new content elements
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPlugin(
    [
        'LLL:EXT:lu_content/Resources/Private/Language/locallang.xlf:contacts.title',
        'lu_content__contacts',
        \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('lu_content').'Resources/Public/Icons/Contacts.svg',
    ],
    'CType',
    'lu_content'
);

$GLOBALS['TCA']['tt_content']['types']['lu_content__contacts']['showitem']                       = 'CType;;;1-1-1,pi_flexform;;;1-1-1';
$GLOBALS['TCA']['tt_content']['columns']['pi_flexform']['config']['ds'][',lu_content__contacts'] = 'FILE:EXT:lu_content/Configuration/FlexForms/Contacts.xml';

表单有效,但看起来像这样:

如何让表单 not 属于插件选项?

以及如何使 title/header 用于列表视图? 目前我在内容列表中保存后得到 [notitle]。

提前致谢。

PS:我目前正在 TYPO3 v7 上开发,但支持 v8。

选项卡的文本以及任何选项卡和字段的排列是为

中的通用插件定义的
$GLOBALS['TCA']['tt_content']['types']['list']

如果您定义了自己的 CType,您很可能希望定义自己的字段、调色板和类型,隐藏标准字段并可能替换默认标签。 tt_content 的整个配置非常复杂,因为它用于所有不同的内容元素,可以在下面的后端看到 System -> Configuration -> GLOBALS[TCA]:

最简单的选择是替换 $GLOBALS['TCA']['tt_content']['types']['list'] 中选项卡的标签。
之前/默认:

--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,--palette--;;general,--palette--;;headers,--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.plugin,list_type;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:list_type_formlabel,pages;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:pages.ALT.list_formlabel,recursive,--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,--palette--;;frames,--palette--;;appearanceLinks,--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,--palette--;;language,--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,--palette--;;hidden,--palette--;;access,--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,--div--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_category.tabs.category,categories,--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,rowDescription,--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended

后/位置填写自己的标签:(寻找###YOUR_LABEL###):

--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,--palette--;;general,--palette--;;headers,--div--;###YOUR_LABEL###,list_type;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:list_type_formlabel,pages;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:pages.ALT.list_formlabel,recursive,--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,--palette--;;frames,--palette--;;appearanceLinks,--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,--palette--;;language,--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,--palette--;;hidden,--palette--;;access,--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,--div--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_category.tabs.category,categories,--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,rowDescription,--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended

更困难的方法是在 $GLOBALS['TCA']['tt_content']['types'].

中定义自己的类型

Here you find The documentation about TCA.

对于您的情况,以下章节特别有趣:

但是,如果您想更改标签或单个字段的其他配置,则必须参考有关 columns 的章节/配置。
在区域 ctrl 中,您仍然可以定义一些通用选项,例如排序字段或复制整个元素时的行为,请查看该章节以了解所有选项。此外,所需的默认标签和值字段配置为

$GLOBALS['TCA']['tt_content']['ctrl']['label']

也可以将两个或多个字段合并为默认显示:

$GLOBALS['TCA']['tt_content']['ctrl']['label'] = 'header';
$GLOBALS['TCA']['tt_content']['ctrl']['label_alt'] = 'subheader';

您可能仍想添加选项

$GLOBALS['TCA']['tt_content']['ctrl']['label_alt_force'] = 1;

配置插件的表单可能需要相当长的时间才能理解所有选项,但通常有很多选项可以根据许多需求对其进行个性化设置。甚至可以定义用户函数来处理和显示现有选项未涵盖的表单中的自己的选项。