TYPO3: Einsatz von Generic Markers in tt_news

Heute mal ein kurzer Beitrag zu einem Thema, welches zwar schon tausendmal in Foren durchgekaut wurde, aber ich trotzdem auch hier nochmal posten möchte, da sich zukünftige Artikel auf diesen beziehen werden.

Die Rede ist von den sogenannten Generic Markers für tt_news. Mit dieser Funktion von tt_news lassen sich in den Templates für News neue Felder hinzufügen und mit Typoscript befüllen. Dies ist eine sehr nützliche Funktion, da man bei vielen Projekten mit den gelieferten Feldern in tt_news einfach nicht auskommt oder man einfach mal spezielle Inhalte ausgeben muss.

Der Einsatz von „Genericmarkers“ ist schnell und einfach. In diesem Beispiel möchten wir den Datensätzen von tt_news ein neues Feld hinzufügen und dieses später im Frontend ausgeben.
Dazu erstellen wir zunächst eine neue Extension. Diese könnte sowohl mit dem kickstarter als auch mit dem extension_builder erstellt werden. Die Extension selbst soll uns zunächst ein neues Feld in der tt_news Tabelle erstellen – dies gelingt uns mit dem folgenden Eintrag in die ext_tables.sql unserer neuen Extension:

CREATE TABLE tt_news (
    meinNeuesFeld text
);

Achtet darauf, dass ich anschließend ein Datenbankupdate durchführt, damit das Feld auch wirklich erzeugt wird.

Als nächsten wechseln wir zur ext_tables.php unserer Extension und konfigurieren dort unser neues Feld für tt_news und fügen dies dem TCA von tt_news hinzu:

$tempColumns = array(
    'meinNeuesFeld' => array(        
        'exclude' => 0,        
        'label' => 'Beschreibung meines neuen Feldes',        
        'config' => array(
            'type' => 'text',
            'cols' => '30',    
            'rows' => '3',
        )
    ),
);

t3lib_div::loadTCA('tt_news');
t3lib_extMgm::addTCAcolumns('tt_news',$tempColumns,1);
t3lib_extMgm::addToAllTCAtypes('tt_news','--div--;Neuer Reiter, meinNeuesFeld');

Wenn wir nun die Caches leeren, sollten wir beim Erstellen bzw. Bearbeiten eines News-Datensatzes unser neues Feld haben und können dieses befüllen.

Nun können wir in das Template von tt_news Wechseln und dort einen Generic Marker platzieren. Dabei muss der Name des Markers unbedingt mit Generic anfangen und komplett groß geschrieben sein.

###GENERIC_MEINNEUESFELD###

Zu guter Letzt können wir ins Typoscript gehen und dort unseren Generic Marker konfigurieren. Hierfür bietet tt_news extra einen Typoscript-Abschnitt (plugin.tt_news.genericmarkers), der es uns sehr leicht macht, Marker nachzurüsten.

plugin.tt_news.genericmarkers.meinneuesfeld = TEXT
plugin.tt_news.genericmarkers.meinneuesfeld {
     field = meinNeuesFeld
}

Hier müsst ihr das GENERIC aus dem Template nicht mehr mitschreiben. Natürlich könnt ihr euren Generic Marker mit jedem beliebigen Typoscript Objekt füllen und auch komplexe Datenbankabfragen darin durchführen. In unserem Fall wollten wir aber nur ein neues Feld aus dem Backend ausgeben lassen.

Viel Spaß damit!

8 Kommentare

  • Pingback: TYPO3: Bilder in tt_news Beiträgen zählen und Anzahl ausgeben | Web Dev Blog

  • Vielen Dank!
    endlich ein verständliches Tutorial!

  • Hallo,

    danke für das Tutorial. unter TYPO3 6.2 scheinen diese Angaben nicht mehr zu funktionieren:

    t3lib_div::loadTCA(‚tt_news‘);
    t3lib_extMgm::addTCAcolumns(‚tt_news‘,$tempColumns,1);
    t3lib_extMgm::addToAllTCAtypes(‚tt_news‘,‘–div–;Neuer Reiter, meinNeuesFeld‘);

    Ich habe es mit

    \TYPO3\CMS\Core\Utility\GeneralUtility::loadTCA(‚tt_news‘);
    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(‚tt_news‘,$tempColumns,1);
    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(‚tt_news‘,‘–div–;Erweiterung, eventenddate‘);

    probiert, aber leider ohne Erfolg. Gibt es eine Lösung für 6.2.x?

  • Hallo Roland,

    beide deiner Schreibweisen sollten unter TYPO3 6.2.4 noch funktionieren. Hast Du mal alle Caches gelöscht – am besten über das Installtool?

  • Hi Roland,
    ich habe leider das gleiche Problem mit TYPO3 6.2.5 und tt_news 3.6.0. Die Felder werden in der Datenbank angelegt, aber nicht im Backend in tt_news angzeigt.
    Werder
    t3lib_div::loadTCA(‚tt_news‘);
    t3lib_extMgm::addTCAcolumns(‚tt_news‘,$tempColumns,1);
    t3lib_extMgm::addToAllTCAtypes(‚tt_news‘,’tx_ownfield_contact;;;;1-1-1, tx_ownfield_rtopics‘);
    noch
    \TYPO3\CMS\Core\Utility\GeneralUtility::loadTCA(‘tt_news’);
    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(‘tt_news’,$tempColumns,1);
    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(‚tt_news‘,’tx_ownfield_contact;;;;1-1-1, tx_ownfield_rtopics‘);
    bringen den gewünschten Erfolg.

    Habe den Speicher auch über das Installtool gelöscht. Bei einer alten TYPO3 4.5.27 funktioniert es wunderbar.

    Hast du noch eine Idee?
    Danke

  • Wie sieht denn euer Array $tempColumns aus?

  • Es funktioniert, wenn Ihr die Dependency zu tt_news in der eigenen Erweiterung eintragt:

    array (
    ‚depends‘ =>
    array (
    ‚tt_news‘ => ‚3.6.0 -‚,
    ),

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Highlighting von Codes ist mit den Tags  [ts], [php], [html], [javascript], [xml] oder [code] möglich.