TYPO3 добавляет метаданные файла к внутреннему элементу TCA IRRE

Я хотел бы добавить дополнительные метаданные (например, авторские права) к изображению в tt_content (стандартное поле IRRE в TYPO3 8.7).

Я установил расширение "filemetadata", чтобы получить эти дополнительные поля. Если я открою sys_file_reference, у меня будет доступ к полям. Теперь я хочу показать поле авторских прав в поле tt_content IRRE «изображение», которое в настоящее время показывает стандартные поля «заголовок, описание, ссылка».

Я попытался переопределить TCA (myExtension / Configuration / TCA / Override / tt_content.php):

'image' => [
    'label' => 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.images',
    'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('image', [
        'appearance' => [
            'createNewRelationLinkTitle' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:images.addFileReference'
        ],
        // custom configuration for displaying fields in the overlay/reference table
        // to use the imageoverlayPalette instead of the basicoverlayPalette
        'overrideChildTca' => [
            'types' => [
                '0' => [
                    'showitem' => 'copyright,
                            --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
                            --palette--;;filePalette'
                ],
                \TYPO3\CMS\Core\Resource\File::FILETYPE_TEXT => [
                    'showitem' => '
                            --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
                            --palette--;;filePalette'
                ],
                \TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => [
                    'showitem' => '
                            --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
                            copyright,--palette--;;filePalette'
                ],
                \TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => [
                    'showitem' => '
                            --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.audioOverlayPalette;audioOverlayPalette,
                            --palette--;;filePalette'
                ],
                \TYPO3\CMS\Core\Resource\File::FILETYPE_VIDEO => [
                    'showitem' => '
                            --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.videoOverlayPalette;videoOverlayPalette,
                            --palette--;;filePalette'
                ],
                \TYPO3\CMS\Core\Resource\File::FILETYPE_APPLICATION => [
                    'showitem' => '
                            --palette--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
                            --palette--;;filePalette'
                ]
            ],
        ],
    ], $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'])
],

и вот так в localconf myExtension:

$GLOBALS['TCA']['sys_file_reference']['types'] =[
        '0' => array('showitem' => 'uid_local,uid_foreign,tablenames,fieldname,title,description,copyright'),
];

но поле авторских прав не появится. Пожалуйста помоги.


person Jürgen Pfusterschmied    schedule 20.10.2017    source источник


Ответы (2)


$GLOBALS['TCA']['sys_file_reference']['ctrl']['types']

должно быть

$GLOBALS['TCA']['sys_file_reference']['types']

Не уверен, есть ли другие проблемы.

person Christian Kuhn    schedule 20.10.2017
comment
Последний шаг переопределить ресурсы (FileReference) в tt_content: EXT: myext / Configuration / TCA / Overrides / tt_content.php: 'assets' => ['label' => 'LLL: EXT: frontend / Resources / Private / Language / Database .xlf: tt_content.asset_references ',' config '=> \ TYPO3 \ CMS \ Core \ Utility \ ExtensionManagementUtility :: getFileFieldTCAConfig (' assets ', [' appearance '=> [' createNewRelationLinkTitle '=>' LLL: EXT: frontend / Resources / Private / Language / Database.xlf: tt_content.asset_references.addFileReference '], // настраиваемая конфигурация для отображения полей в наложенной / справочной таблице' overrideChildTca '=> [' types '=> [' 0 '=> [' showitem '=>' --palette -; LLL: EXT: lang / locallang_tca.xlf: sys_file_reference.imageoverlayPalette; metaPalette, --palette - ;; imageoverlayPalette, --palette - ;; filePalette '], \ TYPO3 \ CMS \ Core \ Resource \ Fil e :: FILETYPE_TEXT => ['showitem' => '--palette -; LLL: EXT: lang / locallang_tca.xlf: sys_file_reference.imageoverlayPalette; metaPalette, --palette - ;; imageoverlayPalette, --palette--; ; filePalette '], \ TYPO3 \ CMS \ Core \ Resource \ File :: FILETYPE_IMAGE => [' showitem '=>' --palette -; LLL: EXT: lang / locallang_tca.xlf: sys_file_reference.imageoverlayPalette; метапалитра, - -palette - ;; imageoverlayPalette, --palette - ;; filePalette '], \ TYPO3 \ CMS \ Core \ Resource \ File :: FILETYPE_AUDIO => [' showitem '=>' --palette -; LLL: EXT : lang / locallang_tca.xlf: sys_file_reference.imageoverlayPalette; metaPalette, --palette - ;; imageoverlayPalette, --palette - ;; filePalette '], \ TYPO3 \ CMS \ Core \ Re source \ File :: FILETYPE_VIDEO => ['showitem' => '--palette -; LLL: EXT: lang / locallang_tca.xlf: sys_file_reference.imageoverlayPalette; metaPalette, --palette - ;; imageoverlayPalette, --palette- - ;; filePalette '], \ TYPO3 \ CMS \ Core \ Resource \ File :: FILETYPE_APPLICATION => [' showitem '=>' --palette -; LLL: EXT: lang / locallang_tca.xlf: sys_file_reference.imageoverlayPalette; newsPalette , --palette - ;; imageoverlayPalette, --palette - ;; filePalette ']],],], $ GLOBALS [' TYPO3_CONF_VARS '] [' SYS '] [' mediafile_ext '])], - person Jürgen Pfusterschmied; 20.10.2017

Нашел грязное решение. Основная проблема в том, что sys_file_metadata не имеет отношения к sys_file_reference!

Я исправил свою проблему:

  1. Вы правы, у меня была опечатка ... Я применил изменение в своем первоначальном вопросе. НО это не решает мою проблему. Я думаю, что эта проблема связана с палитрами TCA. Дальнейшие предложения?

EXT: myext / Configuration / TCA / Overrides / sys_file_reference.php:

$metaDataSysFileReferenceColumns = [
'metadata' => array (
    'exclude' => 1,
    'label' => 'Metadata',
    'config' => array (
        'type' => 'user',
        'userFunc' => \VENDOR\MyExt\UserFunction\ProviderField::class . '->getMetaData',
    )

)]; \ TYPO3 \ CMS \ Core \ Utility \ ExtensionManagementUtility :: addTCAcolumns ('sys_file_reference', $ metaDataSysFileReferenceColumns); \ TYPO3 \ CMS \ Core \ Utility \ ExtensionManagementUtility :: addFieldsToPalette ('sys_file_reference', 'metaPalette', 'метаданные');

  1. Пользовательская функция ProviderField-> getMetaData () публичная функция getMetaData (array $ parameters, $ parentObject) {

        $uid = $parameters['row']['uid_local'][0]['uid'];
    
        $sys_language_uid = 0;
        if (!empty($parameters['row']['sys_language_uid'])) {
            $sys_language_uid = $parameters['row']['sys_language_uid'][0];
        }
    
        $queryBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Database\ConnectionPool::class)
            ->getQueryBuilderForTable('sys_file_metadata');
        $recordInDatabase = $queryBuilder
            ->select('*')
            ->from('sys_file_metadata')
            ->where(
                $queryBuilder->expr()->eq(
                    'file',
                    $queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)
                ),
                $queryBuilder->expr()->eq(
                    'sys_language_uid',
                    $queryBuilder->createNamedParameter($sys_language_uid, \PDO::PARAM_INT)
                )
            )
            ->setMaxResults(1)
            ->execute()
            ->fetch();
    
    $html = array();
    $html[] = '
        <div class="row">
            <div class="form-group t3js-formengine-validation-marker t3js-formengine-palette-field col-sm-6">
                <label class="t3js-formengine-label">
                    Creator
                </label>
                <div class="formengine-field-item t3js-formengine-field-item">
                    <div class="form-control-wrap" style="max-width: 480px">
                        <div class="form-wizards-wrap">
                            <div class="form-wizards-element">
                                <div class="form-control-clearable">
                                    <input type="text" id="formengine-input-'.uniqid().'"
                                            class="form-control t3js-clearable hasDefaultValue"
                                            data-formengine-validation-rules="[{&quot;type&quot;:&quot;trim&quot;}]"
                                            data-formengine-input-params="{&quot;field&quot;:&quot;data[sys_file_metadata]['.$recordInDatabase['uid'].'][creator]&quot;,&quot;evalList&quot;:&quot;trim&quot;,&quot;is_in&quot;:&quot;&quot;}"
                                            data-formengine-input-name="data[sys_file_metadata]['.$recordInDatabase['uid'].'][creator]"
                                            data-formengine-input-initialized="true">
                                    <button type="button" class="close" tabindex="-1" aria-hidden="true" style="display: none;">
                                        <span class="t3js-icon icon icon-size-small icon-state-default icon-actions-close" data-identifier="actions-close">
                                            <span class="icon-markup">
                                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
                                                    <path d="M11.9 5.5L9.4 8l2.5 2.5c.2.2.2.5 0 .7l-.7.7c-.2.2-.5.2-.7 0L8 9.4l-2.5 2.5c-.2.2-.5.2-.7 0l-.7-.7c-.2-.2-.2-.5 0-.7L6.6 8 4.1 5.5c-.2-.2-.2-.5 0-.7l.7-.7c.2-.2.5-.2.7 0L8 6.6l2.5-2.5c.2-.2.5-.2.7 0l.7.7c.2.2.2.5 0 .7z" class="icon-color"></path>
                                                </svg>
                                            </span>
                                        </span>
                                    </button>
                                </div>
                                <input type="hidden" name="data[sys_file_metadata]['.$recordInDatabase['uid'].'][creator]" value="'.$recordInDatabase['creator'].'">
                            </div>
                            <div class="form-wizards-items-aside">
                                <div class="btn-group"></div>
                            </div>
                            <div class="form-wizards-items-bottom"></div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="form-group t3js-formengine-validation-marker t3js-formengine-palette-field col-sm-6">
                <label class="t3js-formengine-label">
                    Source
                </label>
                <div class="formengine-field-item t3js-formengine-field-item">
                    <div class="form-control-wrap" style="max-width: 480px">
                        <div class="form-wizards-wrap">
                            <div class="form-wizards-element">
                                <div class="form-control-clearable">
                                    <input type="text" id="formengine-input-'.uniqid().'"
                                            class="form-control t3js-clearable hasDefaultValue"
                                            data-formengine-validation-rules="[{&quot;type&quot;:&quot;trim&quot;}]"
                                            data-formengine-input-params="{&quot;field&quot;:&quot;data[sys_file_metadata]['.$recordInDatabase['uid'].'][source]&quot;,&quot;evalList&quot;:&quot;trim&quot;,&quot;is_in&quot;:&quot;&quot;}"
                                            data-formengine-input-name="data[sys_file_metadata]['.$recordInDatabase['uid'].'][source]"
                                            data-formengine-input-initialized="true">
                                    <button type="button" class="close" tabindex="-1" aria-hidden="true" style="display: none;">
                                        <span class="t3js-icon icon icon-size-small icon-state-default icon-actions-close" data-identifier="actions-close">
                                            <span class="icon-markup">
                                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
                                                    <path d="M11.9 5.5L9.4 8l2.5 2.5c.2.2.2.5 0 .7l-.7.7c-.2.2-.5.2-.7 0L8 9.4l-2.5 2.5c-.2.2-.5.2-.7 0l-.7-.7c-.2-.2-.2-.5 0-.7L6.6 8 4.1 5.5c-.2-.2-.2-.5 0-.7l.7-.7c.2-.2.5-.2.7 0L8 6.6l2.5-2.5c.2-.2.5-.2.7 0l.7.7c.2.2.2.5 0 .7z" class="icon-color"></path>
                                                </svg>
                                            </span>
                                        </span>
                                    </button>
                                </div>
                                <input type="hidden" name="data[sys_file_metadata]['.$recordInDatabase['uid'].'][source]" value="'.$recordInDatabase['source'].'">
                            </div>
                            <div class="form-wizards-items-aside">
                                <div class="btn-group"></div>
                            </div>
                            <div class="form-wizards-items-bottom"></div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="form-group t3js-formengine-validation-marker t3js-formengine-palette-field col-sm-6">
                <label class="t3js-formengine-label">
                    Copyright
                </label>
                <div class="formengine-field-item t3js-formengine-field-item">
                    <div class="form-control-wrap" style="max-width: 480px">
                        <div class="form-wizards-wrap">
                            <div class="form-wizards-element">
                                <div class="form-control-clearable">
                                    <input type="text" id="formengine-input-'.uniqid().'"
                                            class="form-control t3js-clearable hasDefaultValue"
                                            data-formengine-validation-rules="[{&quot;type&quot;:&quot;trim&quot;}]"
                                            data-formengine-input-params="{&quot;field&quot;:&quot;data[sys_file_metadata]['.$recordInDatabase['uid'].'][copyright]&quot;,&quot;evalList&quot;:&quot;trim&quot;,&quot;is_in&quot;:&quot;&quot;}"
                                            data-formengine-input-name="data[sys_file_metadata]['.$recordInDatabase['uid'].'][copyright]"
                                            data-formengine-input-initialized="true">
                                    <button type="button" class="close" tabindex="-1" aria-hidden="true" style="display: none;">
                                        <span class="t3js-icon icon icon-size-small icon-state-default icon-actions-close" data-identifier="actions-close">
                                            <span class="icon-markup">
                                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
                                                    <path d="M11.9 5.5L9.4 8l2.5 2.5c.2.2.2.5 0 .7l-.7.7c-.2.2-.5.2-.7 0L8 9.4l-2.5 2.5c-.2.2-.5.2-.7 0l-.7-.7c-.2-.2-.2-.5 0-.7L6.6 8 4.1 5.5c-.2-.2-.2-.5 0-.7l.7-.7c.2-.2.5-.2.7 0L8 6.6l2.5-2.5c.2-.2.5-.2.7 0l.7.7c.2.2.2.5 0 .7z" class="icon-color"></path>
                                                </svg>
                                            </span>
                                        </span>
                                    </button>
                                </div>
                                <input type="hidden" name="data[sys_file_metadata]['.$recordInDatabase['uid'].'][copyright]" value="'.$recordInDatabase['copyright'].'">
                            </div>
                            <div class="form-wizards-items-aside">
                                <div class="btn-group"></div>
                            </div>
                            <div class="form-wizards-items-bottom"></div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="form-group t3js-formengine-validation-marker t3js-formengine-palette-field col-sm-6">
                <label class="t3js-formengine-label">
                    Publisher
                </label>
                <div class="formengine-field-item t3js-formengine-field-item">
                    <div class="form-control-wrap" style="max-width: 480px">
                        <div class="form-wizards-wrap">
                            <div class="form-wizards-element">
                                <div class="form-control-clearable">
                                    <input type="text" id="formengine-input-'.uniqid().'"
                                            class="form-control t3js-clearable hasDefaultValue"
                                            data-formengine-validation-rules="[{&quot;type&quot;:&quot;trim&quot;}]"
                                            data-formengine-input-params="{&quot;field&quot;:&quot;data[sys_file_metadata]['.$recordInDatabase['uid'].'][publisher]&quot;,&quot;evalList&quot;:&quot;trim&quot;,&quot;is_in&quot;:&quot;&quot;}"
                                            data-formengine-input-name="data[sys_file_metadata]['.$recordInDatabase['uid'].'][publisher]"
                                            data-formengine-input-initialized="true">
                                    <button type="button" class="close" tabindex="-1" aria-hidden="true" style="display: none;">
                                        <span class="t3js-icon icon icon-size-small icon-state-default icon-actions-close" data-identifier="actions-close">
                                            <span class="icon-markup">
                                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
                                                    <path d="M11.9 5.5L9.4 8l2.5 2.5c.2.2.2.5 0 .7l-.7.7c-.2.2-.5.2-.7 0L8 9.4l-2.5 2.5c-.2.2-.5.2-.7 0l-.7-.7c-.2-.2-.2-.5 0-.7L6.6 8 4.1 5.5c-.2-.2-.2-.5 0-.7l.7-.7c.2-.2.5-.2.7 0L8 6.6l2.5-2.5c.2-.2.5-.2.7 0l.7.7c.2.2.2.5 0 .7z" class="icon-color"></path>
                                                </svg>
                                            </span>
                                        </span>
                                    </button>
                                </div>
                                <input type="hidden" name="data[sys_file_metadata]['.$recordInDatabase['uid'].'][publisher]" value="'.$recordInDatabase['publisher'].'">
                            </div>
                            <div class="form-wizards-items-aside">
                                <div class="btn-group"></div>
                            </div>
                            <div class="form-wizards-items-bottom"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>';
    return implode(LF, $html);
    

    }

  2. Вуаля, каждый медиа-элемент в tt_content будет показывать дополнительную информацию о метаданных при свертывании IRRE. Я знаю, это действительно грязно ...

New UserFunc в TCA sys_file_reference na dset a new palette

person Jürgen Pfusterschmied    schedule 03.11.2017