Zum Inhalt springen

BE-Labels bei eigenen Inhaltselementen anpassen

Erstellt am 22. Januar 2008 · 1 Antwort · letzte Antwort am 14. Februar 2008

Tags: TCA, Inhaltselemente, Frage

eintrachtemil ·

Servus zusammen,
ich habe ein eigenes Inhaltselement auf Basis von tt_content (im Kickstarter tt_content um eigene Felder erweitert und unter FE-Plugins "Add as a totally new Content Element type" + "Apply a set of extended fields" aktiviert) angelegt.

Das klappt alles, nur werden in der Backend-Seiten und -Listen-Ansicht standardmäßig nur die Überschrift (title-Feld) angezeigt. Ich möchte aber gerne, weitere Felder als Label für diesen neuen Inhaltstyp anzeigen lassen, da sonst die Bearbeitung und Übersicht im Backend sehr darunter leidet.

Das Hinzufügen der Extra-Felder in der ext_tables.php erfolgte per Kickstarter folgendermaßen

$TCA['tt_content']['types'][$_EXTKEY.'_pi1']['showitem'] = '...'

Daher habe ich mal versucht die Labels wie folgt zu ändern:

$TCA['tt_content']['types'][$_EXTKEY.'_pi1']['config']['altLabel'] = 'tx_xyz_field1, x_xyz_field2';
$TCA['tt_content']['types'][$_EXTKEY.'_pi1']['config']['label_alt_force'] = 1;

Das geht aber nicht, und irgendwie finde ich in der Doku auch keinen richtigen Anhaltspunkt. Man kann ja über die Architektur von Typo3 streiten, aber eine saubere Trennung von Inhalt und Layout wäre (in diesem Fall) wirklich mal eine Bereicherung!

Kann mir trotzdem jemand helfen?

eintrachtemil ·

Habe das ganze jetzt selber herausgefunden. Für die Darstellung in der Listenansicht gibt es folgenden TCA-Eintrag:

t3lib_div::loadTCA('tt_content');
#Alternatives Label, wenn Feld "header" leer ist
$TCA['tt_content']['ctrl']["label_alt"] = 'tx_feld1,tx_feld2,tx_feld3';
#label_alt immer zusätzlich anzeigen, auch wenn Feld "header" gefüllt ist
$TCA['tt_content']['ctrl']["label_alt_force"] = 1

Diese verändert aber nur die Anzeige in der Listenansicht, die Seitenansicht ist davon unsinnigerweise nicht betroffen. Dafür muss die Klasse "tx_cms_layout"

     $TYPO3_CONF_VARS['BE']['XCLASS']['ext/cms/layout/class.tx_cms_layout.php'] = t3lib_extMgm::extPath('deine_extension').'xclass/class.ux_tx_cms_layout.php';

angepasst werden.

Und zwar die Funktion "tt_content_drawItem":

function tt_content_drawItem($row, $isRTE=FALSE)    {
...    
  // Make content:
  $infoArr=Array();
  switch($row['CType'])    {
    case 'neuerinhaltstyp_p1' :
       $out.= '<b>'.$this->linkEditContent($this->renderText($row['header']),$row).'</b><br />';
     //Als Beispiel:
     $out.= '$row['tx_feld1'].'<br/>';
     $out.= '$row['tx_feld2'].'<br/>';
     $out.= '$row['tx_feld3'].'<br/>';
     break;
...