внутренний макет и перетаскивание для пользовательских элементов содержимого, содержащих дочерние элементы tt_content | TYPO3 11

Я создал настраиваемый элемент содержимого в ядре TYPO3 11, в котором есть поле типа inline для дополнительных дочерних элементов tt_content. Интерфейс пока работает отлично, но вид на бэкэнд вызывает у меня головную боль.

Создавая дочерние элементы в родительском элементе, им назначается colPos 0, и они появляются в этом столбце моего внутреннего макета.

Чего я бы хотел добиться, так это иметь макет серверной части внутри моего Box и возможность свободно перетаскивать и опускать элементы tt_content, как это выглядит:

Документы, за которыми я следил, не соответствовали моему желанию, и я хочу решить эту проблему без каких-либо расширений.

Вот мои TCA и SQL.

      $col = [
    'content_relation' => [
        'exclude' => true,
        'label' => 'content',
        'config' => [
            'type' => 'inline',
            'allowed' => 'tt_content',
            'foreign_table' => 'tt_content',
            'foreign_field' => 'content_relation',
            'foreign_sortby' => 'sorting',
            'minitems' => 0,
            'maxitems' => 99,
            'appearance' => [
                'collapseAll' => true,
                'expandSingle' => true,
                'levelLinksPosition' => 'bottom',
                'useSortable' => true,
                'showPossibleLocalizationRecords' => true,
                'showRemovedLocalizationRecords' => true,
                'showAllLocalizationLink' => true,
                'showSynchronizationLink' => true,
                'enabledControls' => [
                    'info' => TRUE,
                    'new' => TRUE,
                    'dragdrop' => TRUE,
                    'sort' => TRUE,
                    'hide' => TRUE,
                    'delete' => TRUE,
                    'localize' => TRUE,
                ],
            ],
        ],
    ],
];

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tt_content', 'content_relation');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content', $col);

$GLOBALS['TCA']['tt_content']['types']['dg_template_box'] = [
    'showitem' => '
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
            --palette--;;general,
                header;Internal title (not displayed),
                content_relation;Elemente,
        ',
];

-

      CREATE TABLE tt_content (
    content_relation int(11) unsigned DEFAULT '0',
);

1 ответ

Я предполагаю, что вам нужно будет изменить свое поле. Предполагая, что отображаются элементы содержимого из таблицы 0. При создании нового content_relationзапись будет (логично) отображаться внутри вашего обычного ( Inhalt) backend-layout, так как он представляет записи с colPosчто равно 0.

Самый простой способ заключается в том, что вы должны использовать b13/containerпакет/расширение. Вы можете просто создать новый пользовательский «коробочный» контейнер со всей вашей пользовательской конфигурацией TCA, и самое приятное то, что расширение позаботится о дочерних элементах. tt_contentзаписывает себя. :)

Примеры использования b13/containerрасширение посмотри здесь b13/container-example.

Другие вопросы по тегам