TYPO3 中的内容元素类型和插件之间存在差异。
注册的插件不会在内容元素类型选择器中单独显示/可用。每个已注册的插件只能作为内容元素类型plugin( list) 的子选项使用。
我猜您希望添加自己的新内容元素,而不是插件类型的元素。然后,您可以查看 Benjamin Kott 的 EXT:bootstrap_package,其中包含此类用例的最佳实践。
例如下面的 TYPO3 8.7 和 9.5 的 TYPO3 TCA 配置
- 添加自定义内容元素
newcontentelement
- 分配一个
content-yourextensionkey-newcontentelement必须注册的图标标识符ext_localconf.php
- 并为后端的编辑器配置字段 (
showitem)
EXT:your_extension_key/Configuration/TCA/Overrides/tt_content.php
// Add 'newcontentelement' to tt_content.CType selector list
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
'tt_content',
'CType',
[
'New content element', # Use localization 'LLL:EXT:your_extension_key/Resources/Private/Language/Backend.xlf:content_element.newcontentelement',
'newcontentelement',
'content-yourextensionkey-newcontentelement'
],
'--div--',
'after'
);
// Assign Icon for tt_content.CType 'newcontentelement'
$GLOBALS['TCA']['tt_content']['ctrl']['typeicon_classes']['newcontentelement'] = 'content-yourextensionkey-newcontentelement';
// Configure content element type 'newcontentelement'
$GLOBALS['TCA']['tt_content']['types']['newcontentelement']['showitem'] = '
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,
--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,
--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;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--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
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,
';
您需要根据showitem您的要求采用数组,以便在后端为编辑器启用内容元素字段。
EXT:your_extension_key/Resources/Public/Icons在名为 fx下添加您自定义的内容元素图标mimetypes-x-content-newcontentelement.svg
EXT:your_extension_key/ext_localconf.php
// Register Icons
$iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
$iconRegistry->registerIcon(
'content-yourextensionkey-newcontentelement',
\TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
['source' => 'EXT:your_extension_key/Resources/Public/Icons/mimetypes-x-content-newcontentelement.svg']
);
您可能希望在创建新内容元素的向导中提供新的内容元素。将以下配置添加到您的页面配置 ( pageTSConfig):
mod.wizards {
newContentElement {
wizardItems {
special {
elements {
newcontentelement {
icon = EXT:your_extension_key/Resources/Public/Icons/mimetypes-x-content-newcontentelement.svg
title = LLL:EXT:your_extension_key/Resources/Private/Language/Backend.xlf:content_element.newcontentelement
description = LLL:EXT:your_extension_key/Resources/Private/Language/Backend.xlf:content_element.newcontentelement.description
tt_content_defValues {
CType = newcontentelement
}
}
}
show = *
}
}
}
}
mod.wizards.newContentElement.wizardItems.special.show := addToList(newcontentelement)