TYPO3 10.4:如何向内容元素的外观选项卡添加另一个下拉字段?
TYPO3 10.4: How can you add another dropdown field to the appearance tab of an content element?
我想在外观选项卡中添加更多下拉字段以编辑内容元素。
我怎样才能做到这一点?
我尝试为 pageT 添加更多布局,但这不起作用。在互联网上也找不到更多相关信息。
您不能通过后端执行此操作。您将需要扩展 TCA(例如,在您的网站包扩展中)。
在您的分机中:
- 在
ext_tables.sql
中添加字段
- 在
Configuration/TCA/Overrides/tt_content.php
中扩展 TCA:
- 向列添加新字段
- 将新字段添加到可见字段
- 将新字段添加到适当的 palette
提示:您可以在 TYPO3 后端 Configuration | Globals['TCA']
中查看 tt_content 的活动 TCA 配置
如果您想将新字段放在现有字段之后,例如space_before_class
,检查它在哪个调色板中 ('frames
') 并将其放入其中。
示例:
ext_tables.sql:
CREATE TABLE tt_content(
my_new_field TINYINT(1) UNSIGNED DEFAULT '0' NOT NULL
);
Configuration/TCA/Overrides/tt_content.php
$fields = [
// new field
'my_new_field' => [
// title of the field
// alternatively, just use a string, but putting the string in
// language file eases translations
'label' => 'LLL:EXT:myextension/Resources/Private/Language/locallang.xlf:tt_content.my_new_field.title',
'config' => [
// type: select
'type' => 'select',
'renderType' => 'selectSingle',
'default' => 0,
'items' => [
[
// again, better to use language label LLL here
'description',
// value
0
],
[
// another option
'description 2',
// value
1
],
],
],
],
// ...
];
// Add new fields to table:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content', $fields);
// Add new field to palette 'frames'
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
'tt_content',
'frames',
'my_new_field',
'before:frame_class'
);
资源:
- 延长 TCA:https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/HowTo/ExtendingTca/Examples/Index.html
- TCA:列字段类型:https://docs.typo3.org/m/typo3/reference-tca/main/en-us/ColumnsConfig/Index.html
- select 类型:https://docs.typo3.org/m/typo3/reference-tca/main/en-us/ColumnsConfig/Type/Select/Index.html
- 对于其余选项,请参阅 TCA 参考:https://docs.typo3.org/m/typo3/reference-tca/main/en-us/Index.html
如果您可以接受给定字段的更多选项,您可以在 BE 中完成它而无需编程/扩展 TCA(Sybille 的回答)。
使用一些 page/user TSConfig 可以扩展现有字段的给定 select 选项列表,例如:
TCEFORM.tt_content.layout.addItems {
20 = additional layout 1|nyt layout 1|neues Layout 1|...
25 = additional layout 2|nyt layout 2|neues Layout 2|...
}
TCEFORM.tt_content.frame_class.addItems {
50 = frame-class-50
55 = frame-class-55
}
当然这需要在 CE 渲染中进行处理。
根据 TYPO3 版本和活动渲染,有不同的地方来处理这个问题。
如果没有 FLUID 渲染,它需要在打字稿中进行一些编辑,使用 FLUID,您需要覆盖处理字段(此处:layout
和 frame_class
)的适当文件(layout/template/partial)。
我想在外观选项卡中添加更多下拉字段以编辑内容元素。
我怎样才能做到这一点?
我尝试为 pageT 添加更多布局,但这不起作用。在互联网上也找不到更多相关信息。
您不能通过后端执行此操作。您将需要扩展 TCA(例如,在您的网站包扩展中)。
在您的分机中:
- 在
ext_tables.sql
中添加字段
- 在
Configuration/TCA/Overrides/tt_content.php
中扩展 TCA:
- 向列添加新字段
- 将新字段添加到可见字段
- 将新字段添加到适当的 palette
提示:您可以在 TYPO3 后端 Configuration | Globals['TCA']
如果您想将新字段放在现有字段之后,例如space_before_class
,检查它在哪个调色板中 ('frames
') 并将其放入其中。
示例:
ext_tables.sql:
CREATE TABLE tt_content(
my_new_field TINYINT(1) UNSIGNED DEFAULT '0' NOT NULL
);
Configuration/TCA/Overrides/tt_content.php
$fields = [
// new field
'my_new_field' => [
// title of the field
// alternatively, just use a string, but putting the string in
// language file eases translations
'label' => 'LLL:EXT:myextension/Resources/Private/Language/locallang.xlf:tt_content.my_new_field.title',
'config' => [
// type: select
'type' => 'select',
'renderType' => 'selectSingle',
'default' => 0,
'items' => [
[
// again, better to use language label LLL here
'description',
// value
0
],
[
// another option
'description 2',
// value
1
],
],
],
],
// ...
];
// Add new fields to table:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content', $fields);
// Add new field to palette 'frames'
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
'tt_content',
'frames',
'my_new_field',
'before:frame_class'
);
资源:
- 延长 TCA:https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/HowTo/ExtendingTca/Examples/Index.html
- TCA:列字段类型:https://docs.typo3.org/m/typo3/reference-tca/main/en-us/ColumnsConfig/Index.html
- select 类型:https://docs.typo3.org/m/typo3/reference-tca/main/en-us/ColumnsConfig/Type/Select/Index.html
- 对于其余选项,请参阅 TCA 参考:https://docs.typo3.org/m/typo3/reference-tca/main/en-us/Index.html
如果您可以接受给定字段的更多选项,您可以在 BE 中完成它而无需编程/扩展 TCA(Sybille 的回答)。
使用一些 page/user TSConfig 可以扩展现有字段的给定 select 选项列表,例如:
TCEFORM.tt_content.layout.addItems {
20 = additional layout 1|nyt layout 1|neues Layout 1|...
25 = additional layout 2|nyt layout 2|neues Layout 2|...
}
TCEFORM.tt_content.frame_class.addItems {
50 = frame-class-50
55 = frame-class-55
}
当然这需要在 CE 渲染中进行处理。
根据 TYPO3 版本和活动渲染,有不同的地方来处理这个问题。
如果没有 FLUID 渲染,它需要在打字稿中进行一些编辑,使用 FLUID,您需要覆盖处理字段(此处:layout
和 frame_class
)的适当文件(layout/template/partial)。