Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set Upload Folder when using FAL in TCA

Is it possible when using FAL, to set the upload destination folder directly in the TCA column? My configuration looks like this at the moment:

'images_outdoor' => Array (
        'exclude' => 1,
        'label' => 'Outdoor: ',
        'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('images_outdoor', Array (
            'appearance' => Array (
                'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
            ),
            'minitems' => 1,
            'maxitems' => 6,
        ), $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']),
    ),

I have such columns in different TCAs and want their images to be saved in different folders. So a standard folder setting doesn't work here.

like image 479
Smarty_Coder Avatar asked Nov 10 '22 21:11

Smarty_Coder


1 Answers

I know this one is old but here is a answer.

There are no supported way for TYPO3 6.2, but in the new TYPO3 7.6 LTS it should be possible to register a hook in your ext_localconf.php file, add this:

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauthgroup.php']['getDefaultUploadFolder'][] = 'VendorName\ExtensionName\Hooks\BackendUserAuthentication->getDefaultUploadFolder'

Create the file Classes/Hooks/BackendUserAuthentication.php and write something like this:

<?php
namespace VendorName\ExtensionName\Hooks;

classe BackendUserAuthentication {
    public function getDefaultUploadFolder(Array $params, \TYPO3\CMS\Core\Authentication\BackendUserAuthentication $backendUserAuthentication) {
        // Do what you wants here and return a object of \TYPO3\CMS\Core\Resource\Folder
    }
}

The params array will contain this:

$_params = array(
    'uploadFolder' => $uploadFolder, // The current \TYPO3\CMS\Core\Resource\Folder object, properly 1:/user_upload/
    'pid' => $pid, // Page id
    'table' => $table, // The table name
    'field' => $field, // The field name
);

Now use the table and field name to change the upload folder - good look :)

like image 56
Lasse Avatar answered Jan 04 '23 01:01

Lasse