www.bimminger.at

Tipps / Internet / Typo3

Typo3

TYPO3: Datetime als label von eigener Extension im Backend


Bei einer meiner Extensions wollte ich als Label für die Datensatzanzeige ein Datetime-Feld verwenden. Allerdings wurde mir hier nur der Unix-Timestamp angezeigt. Das ist zwar grundsätzlich nicht falsch aber schon irgendwie unlesbar in der Admin. Darum habe ich ein paar Kleinigkeiten in den vom Kickstarter schnell erstellten Skripten geändert.

ext_tables.php

Zuerst einmal im Plugin-Verzeichnis typo3conf/ext/meineextension die Datei ext_tables.php verändern:

 array (
                'title'     => 'LLL:EXT:puls4/locallang_db.xml:tx_puls4_tvprogramm',
                'label'     => 'von',
                'label_alt' => 'titel',    //diese Zeile kommt hinzu
                'tstamp'    => 'tstamp',
                'crdate'    => 'crdate',
                'cruser_id' => 'cruser_id',
                'default_sortby' => "ORDER BY von DESC",
                'delete' => 'deleted',
                'enablecolumns' => array (
                        'disabled' => 'hidden',
                ),
                'dynamicConfigFile' => t3lib_extMgm::extPath($_EXTKEY).'tca.php',
                'iconfile'          => t3lib_extMgm::extRelPath($_EXTKEY).'icon_tx_puls4_tvprogramm.gif',
        ),
        "feInterface" => array (
                "fe_admin_fieldList" => "hidden, datum, von, titel, text, typ",
        )
);

//Ab jetzt eine eigene Datei für die Spezielle Klasse zum Aufbereiten des Labels:
require_once(t3lib_extMgm::extPath($_EXTKEY).'class.LabelVonClass.php');

// nur fuer TYPO3 v 4.1 oder hoeher
if (t3lib_div::int_from_ver(TYPO3_version) >= 4001000) {
        $TCA["tx_meineextension"]["ctrl"]["label_userFunc"] = "user_LabelVonClass->getUserLabel";
}
?>

class.LabelVonClass.php

So jetzt die Zusätzliche Klasse im gleichen Verzeichnis wie ex_tables.php mit der Veränderung des Labels mit folgendem Inhalt anlegen:


Damit wird jetzt das Feld von in ein lesbares Format (TT.MM.JJJJ HH:mm) gebracht und gemeinsam mit dem Feld titel ausgegeben. Um auf den titel zugreifen zu können wurde in ext_tables.php extra die Zeile 'label_alt' => 'titel', hinzugefügt.

Abschluss im Backend


Dann noch im Backend auf "Cache in typo3conf/ löschen" klicken. Und ab jetzt wird im Listing der Datensätze nicht mehr nur der Timestamp aus dem Feld "Von" angezeigt sondern Datum mit Uhrzeit aus von und der Titel aus dem Feld titel.


Label mit Zugriff auf eine verknüpfte Tabelle

Auch ein guter Hinweis: Label aus einer anderen Datenbanktabelle lesen nach dem gleichen Prinzip.