Monatsarchiv April 2012

TCA oder Flexform – Link Wizard konfigurieren

In diesem Artikel bin ich kurz auf die Feldkonfiguration im TCA eingegangen. Den zuletzt erwähnten Link-Wizard kann man konfigurieren und zwar so, dass nur bestimmte Dateitypen ausgewählt werden können. In meinem Beispiel brauche ich ihn, um auf mp3-Dateien zu verlinken. Der Nachteil, wenn man ein Feld als ‚group‘ deklariert ist, dass das referenzierte File in den Uploads-Ordner kopiert wird. Beim Verlinken passiert es nicht.

Diese Konfiguration ermöglicht es, nur auf mp3-Dateien zu verlinken. Zu beachten ist, dass man die blindLinkOptions nur dann verwenden kann, wenn der Browse-Links-Mode auf wizard gestellt ist.

'file' => array(
	'exclude' => 0,
	'label' => 'LLL:EXT:myextension/locallang_db.xml:file',
	'config' => array(
		'type' => 'input',
		'size' => '48',
		'wizards' => Array(
			'_PADDING' => 2,
			'link' => Array(
				'type' => 'popup',
				'title' => 'Link',
				'icon' => 'link_popup.gif',
				'script' => 'browse_links.php?mode=wizard',
				'JSopenParams' => 'height=300,width=500,status=0,menubar=0,scrollbars=1',
				'params' => Array(
					'blindLinkOptions' => 'page,url,mail,spec,folder',
					'allowedExtensions' => 'mp3,ogg',
				)
			),
		),
		'eval' => 'required,nospace',
		'softref' => 'typolink'
	),
),

Will man auf eine beliebige Datei verlinken, ohne die Dateiendung zu bestimmen, kann man den Mode direkt auf ‚file‘ stellen, weiter Konfiguration ist dann nicht möglich.

'link' => Array(
	'type' => 'popup',
	'title' => 'Link',
	'icon' => 'link_popup.gif',
	'script' => 'browse_links.php?mode=file',
	'JSopenParams' => 'height=300,width=500,status=0,menubar=0,scrollbars=1',
),

Alles, was man im TCA als PHP angeben kann, kann man auch in XML-Form angeben, dann kann man es im Flexform oder in Data Structures von TemplaVoila verwenden.

<link type="array">
	<type>popup</type>
	<title>Link</title>
	<icon>link_popup.gif</icon>
	<script>browse_links.php?mode=wizard</script>
	<JSopenParams>height=300,width=500,status=0,menubar=0,scrollbars=1</JSopenParams>
	<params>
		<blindLinkOptions>page,url,mail,spec,folder</blindLinkOptions>
		<allowedExtensions>mp3</allowedExtensions>
	</params>
</link>

Geschrieben in TYPO3 | Kommentare deaktiviert für TCA oder Flexform – Link Wizard konfigurieren

TCA oder Flexform – Konfiguration der Eingabefelder

Wenn man eine Extension schreibt und dort Felder angibt, oder das bestehende TCA anpasst oder in einem Flexform Felder erstellt, mit der richtigen Konfiguration im TCA kann man sich das Leben einfach machen. Die Konfiguration, die man im TCA (also als PHP Array) angeben kann, kann man genauso in einem Flexform angeben, dann allerdings im Format XML. Diese Aufstellung ist nur ein kleiner Auszug aus der Liste aller Möglichkeiten.

Einfachstes Textfeld, da kann man fast alles eingeben, was man möchte, Hilfen gibt es keine.

'myfield' => array (		
	'exclude' => 1,		
	'label' => 'LLL:EXT:my_extension/locallang_db.xml:myfield',		
	'config' => array (
		'type' => 'input',	
		'size' => '30',
	)
)

Auswahlfeld (Select), aus einer Reihe von Optionen kann in diesem Fall eine gewählt werden. Unter ‚items‘ gibt man die auswählbaren Optionen an. An erster Stelle jeder Option steht das Label (kann aus Locallang kommen, muss aber nicht), an zweiter Stelle steht der Wert, der in die Datenbank geschrieben wird.

'myfield' => array (		
	'exclude' => 1,		
	'label' => 'LLL:EXT:myextension/locallang_db.xml:myfield',		
	'config' => array (
		'type' => 'select',
		'items' => array (
			array('', ''),
			array('LLL:EXT:myextension/locallang_db.xml:myfield.option1', 'option1'),
			array('LLL:EXT:myextension/locallang_db.xml:myfield.option2', 'option2'),
			array('LLL:EXT:myextension/locallang_db.xml:myfield.option3', 'option3'),
		),
		'size' => 1,	
		'maxitems' => 1,
	)
),

Wenn man ein Feld vom Typ group verwendet in Kombination mit internal_type ‚file‘ kann der Benutzer in dem Feld ein z.B. ein Bild auswählen. Von diesem Bild wird, falls show_thumbs gesetzt ist, eine Vorschau angezeigt. Problem ist – das Bild (oder die Datei anderen Typs) wird in den Ordner uploads kopiert. Wenn man also nachträglich das Bild erneut in fileadmin hochlädt, wirkt sich diese Änderung nicht aus, da ja die Kopie in uploads referenziert wird. Der Vorteil ist, dass die Redakteure nicht aus Versehen das Bild löschen können, um sich dann zu wundern, warum es denn weg ist.

'myfield' => array (		
	'exclude' => 1,		
	'label' => 'LLL:EXT:myextension/locallang_db.xml:myfield',		
	'config' => array (
		'type' => 'group',
		'internal_type' => 'file',
		'allowed' => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],	
		'max_size' => $GLOBALS['TYPO3_CONF_VARS']['BE']['maxFileSize'],	
		'uploadfolder' => 'uploads/myextension',
		'show_thumbs' => 1,	
		'size' => 1,	
		'minitems' => 0,
		'maxitems' => 1,
	)
),

Was tun, wenn man diesen Kopiermechanismus umgehen möchte. Vielleicht möchte man ein Bild (oder eine andere Datei) auswählbar machen, sie soll aber tatsächlich nur referenziert werden (und nicht kopiert). Mein Trick ist, statt ‚group‘ ein Input-Feld in Kombination mit dem Link-Wizard zu verwenden.

'myfield' => array (
	'exclude' => 1,        
	'label' => 'LLL:EXT:myextension/locallang_db.xml:myfield',        
	'config' => array (
		'type'     => 'input',
		'size'     => '15',
		'max'      => '255',
		'checkbox' => '',
		'eval'     => 'trim',
		'wizards'  => array(
			'_PADDING' => 2,
			'link'     => array(
				'type'         => 'popup',
				'title'        => 'Link',
				'icon'         => 'link_popup.gif',
				'script'       => 'browse_links.php?mode=wizard',
				'JSopenParams' => 'height=300,width=500,status=0,menubar=0,scrollbars=1',
			)
		)
	)
)

Geschrieben in TYPO3 | Kommentare deaktiviert für TCA oder Flexform – Konfiguration der Eingabefelder

Navigation mit Bild und einem Datawrap

TYPO3 ist geil und beängstigend zugleich:

Es wird eine Navigation erzeugt, bei der jedes Element mit einem li umgeben ist. Das div darin hat eine Klasse, die über die Seiteneingenschaften zugewiesen werden kann. Darin ist ein Bild, das ebenfalls über die Seiteneingenschaften gesetzt werden kann. Darunter wird der Locallang-Wert ausgegeben, der aus einem Feld aus Seiteneingenschaften stammt. Und zum Schluss dann der Titel der Seite.

1 = TMENU
1 {
	expAll = 1
	wrap = <ul>|</ul>
	NO = 1
	NO {
		field = title
		wrapItemAndSub = <li>|</li>
		stdWrap.dataWrap = <div class="{field:myclass}">|</div>
		stdWrap.cObject = COA
		stdWrap.cObject {
			10 = IMAGE
			10.file.import.dataWrap = uploads/myextension/{field:myimage}
			10.wrap = <div class="image">|</div>
			20 = TEXT
			20.dataWrap = LLL:EXT:myextension/locallang_db.xml:pages.mytype.{field:mytype}
			20.wrap3 = {|}
			20.insertData = 1
			30 = TEXT
			30.field = title
			30.wrap = <span class="text">|</span>
		}
	}
}

Geschrieben in TYPO3 | Kommentare deaktiviert für Navigation mit Bild und einem Datawrap