2017-10-20 7 views
0

をバックエンドにfilemetadataを追加します。TYPO3は、私がtt_contentの画像(TYPO3 8.7で標準IRREフィールド)に追加のメタデータ(例えば著作権)を追加したいTCA IRRE要素

私は、これらの追加のフィールドを取得するには、「filemetadata」の拡張子をintalled。 sys_file_referenceを開くと、フィールドにアクセスできます。今、標準のフィールド "title、description、link"を表示しているtt_content IRRE "image"フィールドに著作権フィールドを表示します。

私はTCA(myExtension /構成/ TCA /上書き/ tt_content.php)をオーバーライドしようとした:myExtensionのlocalconfで

'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']) 
], 

と、次のように:

$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に関連していないことです。

私は私の問題修正:MYEXT /構成/ TCA /オーバーライド/ sys_file_reference.php:新しいパレット

EXTをDSETナTCAのsys_file_referenceに

  1. 新USERFUNCを

    $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');

  2. 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); 
    

    }

  3. 最終ステップtt_contentのアセット(FileReference)をオーバーライドしてください: EXT:myext/Configuration/TCA/Override/tt_content.php: 'assets' => [ 'label' => 'LLL:EXT:frontend/Resources/Priv \ '01' '' '' '' '' => \ 'TYPO3 \ CMS \ Core \ Utility \ ExtensionManagementUtility :: getFileFieldTCAConfig' '資産'、[ '外観' => [ 'createNewRelationLinkTitle' = > 'LLL:EXT:frontend/Resources/Private/Language/Database.xlf:tt_content.asset_references。addFileReference ' ]、オーバーレイ/参照テーブル のフィールドを表示するため //カスタム設定 'overrideChildTca'=> [ 'タイプ'=> [ '0'=> [ 'showitem'=>' - パレット - ; LLL:EXT:LANG/locallang_tca.xlf:sys_file_reference.imageoverlayPalette; metaPalette、 --palette - ;; imageoverlayPalette、 --palette - ;; TYPO3 \ CMS \コア\ filePalette」 ]、 \ Resource \ File :: FILETYPE_TEXT => [ 'showitem' => ' - パレット - ; LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette; metaPalette、 --palette - ;; imag eoverlayPalette、 --palette - ;; filePalette ' ]、 TYPO3 \ CMS \コア\リソース\ファイル\ :: FILETYPE_IMAGE => [ 'showitem'=>' --palette - ; LLL:EXT: TYPO3 \ CMS \コア\リソース\ファイル\ ;; filePalette」 ]、 :: FILETYPE_AUDIO = - metaPalette、 --palette - ;; imageoverlayPalette、 --palette; sys_file_reference.imageoverlayPalette:LANG/locallang_tca.xlf > [ 'showitem' => ' - パレット - ; LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette; metaPalette、 --palette - ;; imageoverlayPalette、 --palette-- ;; filePalette ' ]、 ¥TYPO3¥CMS¥Core¥Resource¥File :: FILETYPE_VIDEO => [ 'showitem' => ' - パレート - LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette; metaPalette、 --palette - ;; imageoverlayPalette、 --palette - ;; filePalette ' ]、 TYPO3 \ CMS \コア\リソース\ファイル\ :: FILETYPE_APPLICATION => [ 'showitem'=>' - パレット - ; LLL:EXT:langの/ 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

関連する問題