TYPO3 Media-Emelent собственное поле - PullRequest
0 голосов
/ 27 апреля 2020

возможно ли расширить тип носителя в моем расширении typo3? Полями по умолчанию являются альтернатива, заголовок, описание. Как я могу добавить собственное поле?

$GLOBALS['TCA']['tt_content']['types']['my_slider'] = [
        'showitem'         => '
                --palette--;' . $frontendLanguageFilePrefix . 'palette.general;general,
                --palette--;' . $languageFilePrefix . 'tt_content.palette.mediaAdjustments;mediaAdjustments,
                pi_flexform,
            --div--;' . $customLanguageFilePrefix . 'tca.tab.sliderElements,
                 assets
        ',
        'columnsOverrides' => [
            'media' => [
                'label'  => $languageFilePrefix . 'tt_content.media_references',
                'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('media', [
                    'appearance'    => [
                        'createNewRelationLinkTitle' => $languageFilePrefix . 'tt_content.media_references.addFileReference'
                    ],
                    // custom configuration for displaying fields in the overlay/reference table
                    // behaves the same as the image field.
                    'foreign_types' => $GLOBALS['TCA']['tt_content']['columns']['image']['config']['foreign_types']

                ], $GLOBALS['TYPO3_CONF_VARS']['SYS']['mediafile_ext'])
            ]
        ]
    ];

1 Ответ

0 голосов
/ 27 апреля 2020

если вы проанализируете структуру данных вашей базы данных TYPO3, вы обнаружите: эти поля (title и alternative) - это не поля в таблице sys_file, а в sys_file_metadata (и в sys_file_reference для их перезаписи) при определенном c использовании)

Обладая этими знаниями, вы можете добавить свои поля в эти таблицы и дать им правильный рендеринг и поведение.


Добавление полей в sys_file_metadata сделает их доступными для каждого файла в качестве значений по умолчанию, если поле используется где-либо.
Если вы хотите, чтобы эти поля появлялись только при специальном использовании, вам нужно установить поля только для таблицы sys_file_reference, которая используется только для отношений между файл и его использование. И вам нужно установить условия для отображения полей, только если ваши элементы контента используют файл. Это условие может быть немного сложным. если вы используете отдельные таблицы, условие может быть использовано при использовании этой foreign_table, если вы используете tt_content записей, вам также необходимо включить CType записи в условие. Возможно, вам понадобится userfunc.
Или у вас есть уникальное имя поля?

...