
Как добавить собственное поле в таблицу sys_file_reference
В файл ext_tables.sql, в описание полей таблицы item добавляем
preview tinyint(4) DEFAULT '0' NOT NULL,
В TCA/Item.php описание для изображений выглядит так
'image' => array(
'exclude' => 1,
'label' => 'LLL:EXT:fy_reference/Resources/Private/Language/locallang_db.xlf:tx_fyreference_domain_model_reference.images',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('image', array(
'foreign_selector_fieldTcaOverride' => array(
'config' => array(
'appearance' => array(
'elementBrowserType' => 'file',
'elementBrowserAllowed' => 'gif,jpg,jpeg,tif,tiff,bmp,png'
)
)
),
'appearance' => array(
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference',
),
'minitems' => 0,
'maxitems' => 9999,
'foreign_types' => array(
'0' => array(
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette, showinpreview'
),
\TYPO3\CMS\Core\Resource\File::FILETYPE_IMAGE => array(
'showitem' => '
--palette--;LLL:EXT:lang/locallang_tca.xlf:sys_file_reference.imageoverlayPalette;imageoverlayPalette,
--palette--;;filePalette, showinpreview'
),
)
), $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']),
'files' => array(
'exclude' => 1,
'label' => 'Files',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('files', array(
'appearance' => array(
'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
),
), $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']),
),
),
Для Item модель выглядит так
/**
* Item
*/
class Item extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
// Some properties
/**
* image
*
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Devcompany\Tsmprojects\Domain\Model\FileReference>
* @cascade remove
*/
protected $image = NULL;
// Getter and Setter
}
Для file reference так. Обратите внимание, что класс FileReference должен расширять \TYPO3\CMS\Extbase\Domain\Model\FileReference
/**
* FileReference
*/
class FileReference extends \TYPO3\CMS\Extbase\Domain\Model\FileReference {
// Some properties
/**
* showinpreview
*
* @var boolean
*/
protected $showinpreview = FALSE;
// Getter and Setter
/**
* Returns the showinpreview
*
* @return boolean $showinpreview
*/
public function getShowinpreview() {
return $this->showinpreview;
}
/**
* Sets the showinpreview
*
* @param boolean $showinpreview
* @return void
*/
public function setShowinpreview($showinpreview) {
$this->showinpreview = $showinpreview;
}
/**
* Returns the boolean state of showinpreview
*
* @return boolean
*/
public function isShowinpreview() {
return $this->showinpreview;
}
}
В tyoscript'е указываем мапить наш класс к таблице sys_filke_reference
config.tx_extbase.persistence.classes {
Vendor\PluginName\Domain\Model\FileReference {
mapping {
tableName = sys_file_reference
}
}
}
И во fluid шаблоне указываем условия
<f:if condition="{image.showinpreview}">
<f:then>
<f:image src="{image.originalResource.publicUrl}" width="475c" height="317c" />
</f:then>
<f:else>
<!-- Здесь можем указать dummy картинку -->
</f:else>
</f:if>