Документация https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/FlexForms/Index.html в настоящее время описывает только то, как добавить Flexforms в плагин.
Это очень похоже на элемент контента. Я ищу минимальный пример, но примеры, которые я нашел, отличаются, являются сложными или неполными.
Это то, что я до сих пор придумал:
плагин: (это пример из документации)
$pluginSignature = 'example_registration';
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
$pluginSignature,
'FILE:EXT:example/Configuration/FlexForms/Registration.xml'
);
элемент содержимого:
$ceType = 'accordion';
// ?????
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue(
'*',
'FILE:EXT:example/Configuration/FlexForms/Accordion.xml',
$ceType
);
Интуитивно понятно, что строка, отмеченная здесь вопросительными знаками, будет что-то похожее на ['types']['list']['subtypes_addlist']
, но определяя pi_flexform для ctype $ ceType вместо для ctype 'list' и подтипа $ pluginSignature:
// this does not work and 'types_add' does not exist!
$GLOBALS['TCA']['tt_content']['types']['ctype']['types_add'][$ceType] = 'pi_flexform';
Но вместо этого обычно встречается что-то вроде:
$GLOBALS['TCA']['tt_content']['types'][$cType]['showitem'] =
'--div-;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,--palette--;;general,--palette--;;headers,pi_flexform,--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,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';
Источник: https://varioous.at/blog/typo3-9-custom-content-elements/
Я считаю это едва читаемым. Часть этого выглядит просто раздутой, поскольку содержит полный путь к языковым файлам. Но я также не совсем уверен, что я могу опустить для минимального примера. Есть ли полезная служебная функция или лучшее объяснение того, как это сделать, и какие конкретные c части примера находятся под капотом?
На самом деле описание в справочнике TCA для showitem довольно хорошо, но оставляет некоторые вещи неясными.
Если я рассечу вышеприведенный пример и отделю запятые:
--div-;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
--palette--;;general,
--palette--;;headers,
pi_flexform,
--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,
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