Label für Elemente in der Listenansicht anpassen

In TYPO3 kann man in der TCA Konfiguration der eigenen Extension festlegen, welches Feld im Standardfall als Label für die Elemente benutzt wird. Es ist eigentlich ganz einfach: Man erstellt eine Datei mit der Klasse, die das Label erzeugt:

require_once(PATH_t3lib.'class.t3lib_befunc.php');
 
class user_TimeslotLabelClass {
 
	function getUserLabel($params, &$pObj) {
		$course = $params['row']['course'];
		$mylabel = $params['row']['time_start'];
 
		if ($course) {
			$item = t3lib_BEfunc::getRecord('tx_nptimetable_course', $course);
			$mylabel.= ', '.$item['title'];
		}
		$params['title'] = $mylabel;
	}
}

Dann muss man in der TCA-Datei die Datei mit der Klasse inkludieren und aufrufen:

$TCA['tx_nptimetable_timeslot'] = array (
	'ctrl' => array (
		'title'     => 'LLL:EXT:np_timetable/Resources/Private/Language/locallang_db.xml:tx_nptimetable_timeslot',		
		'label'     => 'time_start',
		'label_alt'	=> 'course,time_end',
		'label_userFunc' => "user_TimeslotLabelClass->getUserLabel",
...

Die Anleitung gibt es auf der Seite von Stefan Meissner.

Damit es wirklich funktioniert, muss man allerdings ein paar Kleinigkeiten beachten: Die Felder, die man der Funktion verwenden möchte, müssen zur Verfügung stehen, und das passiert erst dann, wenn sie als label oder label_alt angegeben sind. In dem Code-Schnipsel von mir habe ich das Feld course als label_alt angegeben, und das obwohl das Label danach mit einer Funktion gesetzt wird. Ansonsten steht es in $params nicht zur Verfügung.

Kommentare sind geschlossen.