Я хочу расширить некоторые элементы содержимого TYPO3 полем для ввода пользовательского класса CSS. Поэтому я подумал, что поле pi_flexform - это то место, куда нужно пойти, поскольку оно дает гибкость, позволяющую добавлять дополнительные значения позже. (Нет, я не хочу создавать Layout-Options для всех классов CSS)
В перезаписи TCA для - скажем, например, «texpic» - я добавил следующую структуру:
$GLOBALS['TCA']['tt_content']['types']['textpic'] = array_replace_recursive(
$GLOBALS['TCA']['tt_content']['types']['textpic'], [
'columns' => [
'pi_flexform' => [
'l10n_display' => 'hideDiff',
'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:pi_flexform',
'config' => [
'type' => 'flex',
'ds_pointerField' => 'list_type,CType',
'ds' => [
'default' => '
<T3DataStructure>
<ROOT>
<type>array</type>
<el>
<customClass>
<TCEforms type="array">
<label>My custom CSS classes</label>
<config type="array">
<type>input</type>
<eval>trim</eval>
</config>
</TCEforms>
</customClass>
</el>
</ROOT>
</T3DataStructure>
'
],
'search' => [
'andWhere' => '{#CType}=\'list\''
]
]
]
],
'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.header;header_minimal,
pi_flexform,
[...]
']
);
Поле pi_flexform отображается в бэкэнде, но моя конфигурация XML сверху не оценивается. Он показывает Plugin Options [pi_flexform] The Title:
, что является демонстрационным значением из файла typo3\sysext\frontend\Configuration\TCA\tt_content.php
. Так что, похоже, мой код не полностью перезаписан, работает только раздел «showitem». В чем может быть проблема здесь?
РЕДАКТИРОВАТЬ 1:
Вскоре после того, как я опубликовал вопрос, я обнаружил свою ошибку: определение столбцов должно идти прямо в раздел tt_content:
$GLOBALS['TCA']['tt_content']['columns']['pi_flexform'] = [...]
К сожалению, это означает, что это повлияет на ВСЕ элементы tt_content, за исключением того, что другие плагины перезапишут это снова. Таким образом, остается вопрос: существует ли простой способ расширения стандартных элементов содержимого без написания собственного расширения или добавления полей базы данных?