Typo3 FAL (file abstract layer) Tabelle sys_file_reference um eigenes Feld erweitern

Samstag, 13. Juni 2015

Möchte man ein eigenes Feld zu der Tabelle sys_file_reference hinzufügen, macht man dazu am Besten eine kleine Extension. Die entscheidenden Stellen sind:

Datei: ext_tables.sql

CREATE TABLE sys_file_reference (
   gallerysize varchar(15) DEFAULT '' NOT NULL
);

Datei: /Configuration/Overrides/sys_file_reference.php

<?php
 
if (!defined('TYPO3_MODE')) {
   die ('Access denied.');
}
 
 
$temporaryColumns = array (
   'gallerysize' => array (
      'exclude' => 0,
      'label' => 'Bildgröße (in Gallerien)',
      'config' => array (
         'type' => 'select',
         'items' => array (
            array('', ''),
            array('mittel', '10'),
            array('gross', '20'),
         ),
         'size' => 1,
         'maxitems' => 1,
      )
   ),
);
 
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
   'sys_file_reference',
   $temporaryColumns
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
   'sys_file_reference',
   'gallerysize',
   '',
   'before:title'
);
 
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
   'sys_file_reference', 'imageoverlayPalette', 'gallerysize', 'before:crop'
);

Datei: Typoscript setup.txt

config.tx_extbase.persistence.classes{
   TYPO3\CMS\Extbase\Domain\Model\FileReference {
      subclasses {
         0 = Nng\Nnhansi\Domain\Model\FileReference
      }
   }
   Nng\Nnhansi\Domain\Model\FileReference {
      mapping {
         tableName = sys_file_reference
      }
   }
}

Datei: Classes/Domain/Model/FileReference.php

<?php
<?php
 
namespace Nng\Nnhansi\Domain\Model;
 
 
class FileReference extends \TYPO3\CMS\Core\Resource\FileReference {
 
    /**
    * @var string
     */
    protected $gallerysize = '';
 
 
   /**
    * Returns the gallerysize
    *
    * @return integer $gallerysize
    */
   public function getGallerysize() {
      return $this->gallerysize;
   }
 
   /**
    * Sets the gallerysize
    *
    * @param string $gallerysize
    * @return void
    */
   public function setGallerysize($gallerysize) {
      $this->gallerysize = $gallerysize;
   }
 
 
}

Datei: Fluid Template

 
{file.referenceProperties.gallerysize}