Schlagwort-Archive: DAM

Extension auf FAL umstellen

TYPO3 CMS ab Version 6.x setzt auf FAL (File Abstraction Layer) zur Dateireferenzierung. Dies hat einige Vorteile, z.B. kann eine Datei mehrmals verknüpft werden, ohne dass Kopien erstellt werden müssten, wie es vorher der Fall war.

Im Umkehrschluss heißt das allerdings, dass der Dateizugriff im PHP-Quellcode der TYPO3-Erweiterungen angepasst werden muss, wenn bspw. Bilder dargestellt werden. Hier ein kurzes Beispiel zur Umstellung.

In einer Extension in TYPO3 CMS 4.7 zur Darstellung als Template-Marker sah es noch so aus:

# $this->cObj->data => vollstaendiger darszustellender Datensatz
$tmp = explode(',', $this->cObj->data['image']);
if (count($tmp)>0){
  foreach ($tmp as $key=>$value){
    $markerArray['###MY_IMAGE###'] = $this->cObj->IMG_RESOURCE( array( 'file'=>'uploads/pics/' . $value, 'file.'=>array( 'width'=>'199m', 'height'=>'165' )) );
    $this->cObj->substituteMarkerArrayCached($subparts['template_alt_image'], $markerArray);
  }
}

Nach der Umstellung auf TYPO3 CMS 6.2 sieht obiger Code dann so aus:

if (intval($this->cObj->data['image'])>0){ # $this->cObj->data['image'] enthaelt nun die Anzahl der referenzierten Dateien
  $fileRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\FileRepository');
  $fileObjects = $fileRepository->findByRelation('tt_content', 'image', $this->cObj->data['uid']);
  foreach ($fileObjects as $key=>$value){
    $markerArray['###MY_IMAGE###'] = $this->cObj->IMG_RESOURCE( array(
'file.'=>array('treatAsReference'=>1, 'width'=>'199m', 'height'=>'165', ),
'file' => $value->getOriginalFile()->getProperties()['uid'],
'params'=>'',
'altText'=>'',
) );
  $this->cObj->substituteMarkerArrayCached($subparts['template_alt_image'], $markerArray);
  }
}

Eine sehr hilfreiche Dokumentationen dazu ist das TYPO3Wiki.