Dateien aus Datensätzen verwenden – Arbeiten mit FAL
Mit TYPO3 CMS 6.0 hat auch der File Abstraction Layer (FAL) Einzug erhalten. Damit ändert sich die Art, wie auf Dateien zugegriffen werden kann/muss, die in Datensätzen gespeichert bzw. mit Datensätzen verknüpft sind.
Bisher stand im entsprechenden Feld des Datensatzes eine komma-separierte Liste von Dateinamen, die dann zusammen mit dem aus dem TCA entnommenen Speicherpfad eine URL ergab.
Nun steht hier nur noch ein Integer, der die Anzahl der Verknüpfungen zu Dateien angibt. Diese Verknüpfungen zu den Dateien sind über die „mm-Tabelle“ sys_file_references definiert.
Soweit nur der kurze Einstieg und Unterschied, sodass klar wird, dass die alten Snippets nicht mehr funktionieren – sowohl mit PHP als auch mit TypoScript.
PHP
Mit PHP ist nun der Weg über die FAL-API zu gehen. Für das oft verweendete media-Feld aus den Seiteneigenschaften wäre der Zugriff z.B. wie folgt möglich:
/** @var TYPO3\CMS\Core\Resource\FileRepository $fileRepository */
$fileRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\FileRepository');
$fileObjects = $fileRepository->findByRelation('pages', 'media', $GLOBALS['TSFE']->id);
$files = array();
foreach ($fileObjects as $key => $value) {
$files[$key]['reference'] = $value->getReferenceProperties();
$files[$key]['original'] = $value->getOriginalFile()->getProperties();
}
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($files, '$files=');
TypoScript
Mit TypoScript sind die Snippets um eine kleine Zeile zu erweitern mit der treatIdAsReference-Eigenschaft:
lib.header = IMAGE
lib.header {
file {
import = uploads/media/
import.data = levelmedia:-1, slide
treatIdAsReference = 1
import.listNum = 0
}
}
Soweit einmal in Kürze die Unterschiede und Ansätze für weitere Recherchen…