Минимальный пример добавления Flexform к элементу контента - PullRequest
0 голосов
/ 09 апреля 2020

Документация 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
...