2017-10-20 160 views
0

我想向tt_content(TYPO3 8.7中的標準IRRE字段)中的圖像添加額外的元數據(例如版權)。TYPO3將文件元數據添加到後端TCA IRRE元素

我插入「filemetadata」擴展名來獲得這些額外的字段。如果我打開一個sys_file_reference,我可以訪問這些字段。現在我想將版權字段顯示到tt_content IRRE「image」字段,該字段當前顯示標題字段「標題,說明,鏈接」。

我試圖重寫TCA(myExtension /配置/ TCA /覆蓋/ 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']) 
], 

像這樣在myExtension的localconf:

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

但版權字段不會出現。 請幫忙。

回答

0

我發現一個骯髒的解決方案。 主要的問題是,sys_file_metadata與sys_file_reference無關!

我固定我的問題:

  1. 新UserFunc在TCA sys_file_reference吶DSET一個新的調色板

EXT:myext /配置/ TCA /覆蓋/ 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','metadata');

  • Userfunction ProviderField->的getMetaData() 公共函數的getMetaData(數組$參數,$ 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); 
    

    }

  • 最後步驟覆蓋tt_content中的資產(FileReference): EXT:myext/Configuration/TCA/Overrides/tt_content.php: 'assets'=> ['''label'=''LLL:EXT:frontend/Resources/Priv ate/Language/Database.xlf:tt_content.asset_references', 'config'=> \ TYPO3 \ CMS \ Core \ Utility \ ExtensionManagementUtility :: getFileFieldTCAConfig('assets',''''=> [ 'createNewRelationLinkTitle'= >'LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.asset_references。addFileReference ' ],用於在疊加/參考表 顯示字段 //定製配置 'overrideChildTca'=> [ '類型'=> [ '0'=> [ 'showitem'=>' - 調色板 - ; LLL:EXT:朗/ locallang_tca.xlf:sys_file_reference.imageoverlayPalette; metaPalette, --palette - ;; imageoverlayPalette, --palette - ;; filePalette」 ], \ TYPO3 \ CMS \核心\ Resource \ File :: FILETYPE_TEXT => [ 'showitem'=>' --palette - ; LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette; metaPalette, --palette - ;; imag eoverlayPalette, --palette - ;; filePalette ' ], \ TYPO3 \ CMS \核心\資源\文件:: FILETYPE_IMAGE => [ 'showitem'=>' --palette - ; LLL:EXT:朗/ locallang_tca.xlf:sys_file_reference.imageoverlayPalette; metaPalette, --palette - ;; imageoverlayPalette, --palette - ;; filePalette」 ], \ TYPO3 \ CMS \核心\資源\文件:: FILETYPE_AUDIO = > [ 'showitem'=>' --palette - ; LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette; metaPalette, --palette - ;; imageoverlayPalette, --palette-- ;; filePalette' ], \ TYPO3 \ CMS \ Core \ Resource \ File :: FILETYPE_VIDEO => [ 'showitem'=>' --palette - ; LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette; metaPalette, --palette - ;; imageoverlayPalette, --palette - ;; filePalette ' ], \ TYPO3 \ CMS \核心\資源\文件:: FILETYPE_APPLICATION => [ 'showitem'=>' - 調色板 - ; LLL:EXT:朗/ locallang_tca.xlf:sys_file_reference.imageoverlayPalette; newsPalette, --palette - ;; imageoverlayPalette, --palette - ;; filePalette」 ] ], ], ],$ GLOBALS [ 'TYPO3_CONF_VARS'] [ 'SYS'] [ 'mediafile_ext']) ],

  • 瞧,每個媒體元素在tt_content將顯示在塌陷IRRE的附加元數據的相關信息。我知道,這真的很髒......

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

    應該

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

    不確定,如果有進一步的問題。

    +0

    你說得對,我有一個錯字...我在最初的問題中應用了這個改變。但這並不能解決我的問題。我認爲這個問題與TCA調色板有關。更多建議? – user3350606