npostnik.de

TYPO3: Bilder mit Flexform und FAL

Für eine einfache Extension sollte in den Plugin-Einstellungen im BE ein Bild ausgewählt werden können, das dann im FE ausgegeben wird. Da es nicht ganz so einfach war, wie ich dachte, hier die Beschreibung wie es geht.

Wenn man ein FAL-Bildfeld über TCA konfiguriert, ist es recht einfach, da es eine Funktion dafür gibt:

'youtube_preview_image' => array(
	'exclude' => 0,
	'label' => 'Vorschaubild',
	'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('preview_image', array('maxitems' => 1), $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'])
),

Um das Bild dann im Frontend auszugeben, reicht im Template folgendes:

<f:image src="{film.preview_image.url}" alt="{film.preview_image.alternative}" width="110" height="110" />

Fürs FlexForm gibt es so eine Funktion leider nicht, daher muss man das XML manuell schreiben oder hier rauskopieren: http://wiki.typo3.org/File_Abstraction_Layer#FlexForm. Folgende Zeilen sollten angepasst werden, damit das Beispiel funktioniert:

<settings.previewImage>
	<TCEforms>
		<label>Video Vorschaubild</label>
		<config>
				[...]
				<foreign_match_fields type="array">
					<fieldname>video_previewimage</fieldname>
				</foreign_match_fields>
				[...]
			</config>
	</TCEforms>
</settings.previewImage>

Da bei der Ausgabe der Mechanismus nicht greift, der normalerweise für eine Bildreferenz den entsprechenden Eintrag aus sys_file_reference zieht, muss man die Bildreferenz im Controller manuell auflösen:

public function showAction() {
	$cObj = $this->configurationManager->getContentObject();
	$uid = $cObj->data['uid'];
	$fileRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\FileRepository');
	$fileObjects = $fileRepository->findByRelation('tt_content', 'video_previewimage', $uid);
	$this->view->assign('images', $fileObjects);
}

Dann kann man das Bild im Fluid Template ausgeben (TYPO3 6.2):

<f:for each="{images}" as="image">
	<f:image image="{image}" alt="{image.alternative}" />
</f:for>

Und in TYPO3 6.1. funktioniert folgendes:

<f:for each="{images}" as="image">
	<f:image src="{image.uid}" alt="{image.alternative}" treatIdAsReference="1" />
</f:for>
Die mobile Version verlassen