2016-10-31 5 views
0

Я работаю над расширением списка файлов и хочу знать, могу ли я устанавливать дополнительные метаданные только для определенных типов файлов, таких как pdf или для всех файлов в определенной подпапке.Можно ли отображать пользовательские sys_file_metadata только для определенных типов файлов или для файлов внутри определенной подпапки в TYPO3?

До сих пор я продлил sys_file_metadata со следующей установкой:

ext_tables.sql

CREATE TABLE sys_file_metadata (
    tags int(11) unsigned DEFAULT '0' NOT NULL, 
    type int(11) unsigned DEFAULT '0' 
); 

CREATE TABLE sys_file_metadata_tags_mm (
    uid_local int(11) unsigned DEFAULT '0' NOT NULL, 
    uid_foreign int(11) unsigned DEFAULT '0' NOT NULL, 
    sorting int(11) unsigned DEFAULT '0' NOT NULL, 
    sorting_foreign int(11) unsigned DEFAULT '0' NOT NULL, 

    KEY uid_local (uid_local), 
    KEY uid_foreign (uid_foreign) 
); 

sys_file_metadata.php

<?php 
defined('TYPO3_MODE') || die(); 

$l1 = 'LLL:EXT:file_portal/Resources/Private/Language/locallang_db.xlf:'; 

$additionalColumns = [ 
    'tags' => [ 
     'exclude' => 1, 
     'label' => $l1 . 'tx_fileportal_domain_model_file.tags', 
     'config' => [ 
      'type' => 'select', 
      'renderType' => 'selectMultipleSideBySide', 
      'foreign_table' => 'tx_fileportal_domain_model_tag', 
      'MM' => 'tx_fileportal_fileallocation_tag_mm', 
      'size' => 10, 
      'autoSizeMax' => 30, 
      'maxitems' => 9999, 
      'multiple' => 0, 
      'wizards' => [ 
       '_PADDING' => 1, 
       '_VERTICAL' => 1, 
       'edit' => [ 
        'module' => [ 
         'name' => 'wizard_edit', 
        ], 
        'type' => 'popup', 
        'title' => 'Edit', 
        'icon' => 'edit2.gif', 
        'popup_onlyOpenIfSelected' => 1, 
        'JSopenParams' => 'height=350,width=580,status=0,menubar=0,scrollbars=1', 
       ], 
       'add' => [ 
        'module' => [ 
         'name' => 'wizard_add', 
        ], 
        'type' => 'script', 
        'title' => 'Create new', 
        'icon' => 'add.gif', 
        'params' => [ 
         'table' => 'tx_fileportal_domain_model_tag', 
         'pid' => '###CURRENT_PID###', 
         'setValue' => 'prepend' 
        ], 
       ], 
      ], 
     ], 
    ], 
    'type' => [ 
     'exclude' => 1, 
     'label' => $l1 . 'tx_fileportal_domain_model_file.type', 
     'config' => [ 
      'type' => 'select', 
      'renderType' => 'selectSingle', 
      'foreign_table' => 'tx_fileportal_domain_model_filetype', 
      'minitems' => 0, 
      'maxitems' => 1, 
      'items' => [ 
       ['Bitte wählen', 0] 
      ], 
      'appearance' => [ 
       'collapseAll' => 0, 
       'levelLinksPosition' => 'top', 
       'showSynchronizationLink' => 1, 
       'showPossibleLocalizationRecords' => 1, 
       'showAllLocalizationLink' => 1 
      ] 
     ] 
    ] 
]; 

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('sys_file_metadata', $additionalColumns); 
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('sys_file_metadata', 'tags, type'); 

return $GLOBALS['TCA']['sys_file_metadata']; 

Это работает прекрасно, и я может добавить некоторые пользовательские теги и пользовательский более специфичный тип для моих файлов, но теперь эти параметры доступны для всех моих файлов. Есть ли способ отображать эти параметры только для определенных типов файлов или для файлов в определенной подпапке, возможно, с условиями отображения?

ответ

0

Вы можете сделать это с помощью displayCond в TCA. Проверьте documentation.

Если вы хотите зависеть от какого-либо поля, это поле должно быть добавлено к опции requestUpdate в секции ctrl в TCA таблицы. Проверьте documentation

Теперь, если значение этого поля изменено, вас попросят перезагрузить форму, поскольку поля могут измениться.

+0

Ок, я добавил некоторые условия показа сейчас и это выглядит гораздо лучше, но как я могу добавить «requestUpdate "список метаданных файла tca? – Fox

0

Я не знаю, как добавить «requestUpdate» в TCA sys_file_metadata, потому что ExtensionManagementUtility не содержит ничего подобного или я ошибаюсь? условия отображения работает до сих пор для меня, и вот мой пример с условиями для полноты картины:

<?php 
defined('TYPO3_MODE') || die(); 

$l1 = 'LLL:EXT:file_portal/Resources/Private/Language/locallang_db.xlf:'; 

$additionalColumns = [ 
    'downloadable' => [ 
     'exclude' => 1, 
     'label' => $l1. 'tx_fileportal_domain_model_file.downloadable', 
     'config' => [ 
      'type' => 'select', 
      'renderType' => 'selectSingle', 
      'items' => [ 
       ['No', 0], 
       ['Yes', 1], 
      ], 
      'minitems' => 0, 
      'maxitems' => 1 
     ] 
    ], 
    'tags' => [ 
     'displayCond' => 'FIELD:downloadable:>:0', 
     'exclude' => 1, 
     'label' => $l1 . 'tx_fileportal_domain_model_file.tags', 
     'config' => [ 
      'type' => 'select', 
      'renderType' => 'selectMultipleSideBySide', 
      'foreign_table' => 'tx_fileportal_domain_model_tag', 
      'MM' => 'sys_file_metadata_tag_mm', 
      'size' => 10, 
      'autoSizeMax' => 30, 
      'maxitems' => 9999, 
      'multiple' => 0, 
      'wizards' => [ 
       '_PADDING' => 1, 
       '_VERTICAL' => 1, 
       'edit' => [ 
        'module' => [ 
         'name' => 'wizard_edit', 
        ], 
        'type' => 'popup', 
        'title' => 'Edit', 
        'icon' => 'edit2.gif', 
        'popup_onlyOpenIfSelected' => 1, 
        'JSopenParams' => 'height=350,width=580,status=0,menubar=0,scrollbars=1', 
       ], 
       'add' => [ 
        'module' => [ 
         'name' => 'wizard_add', 
        ], 
        'type' => 'script', 
        'title' => 'Create new', 
        'icon' => 'add.gif', 
        'params' => [ 
         'table' => 'tx_fileportal_domain_model_tag', 
         'pid' => '###CURRENT_PID###', 
         'setValue' => 'prepend' 
        ], 
       ], 
      ], 
     ], 
    ], 
    'type' => [ 
     'displayCond' => 'FIELD:downloadable:>:0', 
     'exclude' => 1, 
     'label' => $l1 . 'tx_fileportal_domain_model_file.type', 
     'config' => [ 
      'type' => 'select', 
      'renderType' => 'selectSingle', 
      'foreign_table' => 'tx_fileportal_domain_model_filetype', 
      'minitems' => 0, 
      'maxitems' => 1, 
      'items' => [ 
       ['Choose', 0] 
      ], 
      'appearance' => [ 
       'collapseAll' => 0, 
       'levelLinksPosition' => 'top', 
       'showSynchronizationLink' => 1, 
       'showPossibleLocalizationRecords' => 1, 
       'showAllLocalizationLink' => 1 
      ] 
     ] 
    ], 
]; 

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('sys_file_metadata', $additionalColumns); 
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
    'sys_file_metadata', 'downloadable, tags, type' 
); 

return $GLOBALS['TCA']['sys_file_metadata'];