+ All Categories
Home > Technology > TYPO3 TCA benutzerfreundlich einrichten

TYPO3 TCA benutzerfreundlich einrichten

Date post: 19-May-2015
Category:
Upload: peter-schuhmann
View: 5,889 times
Download: 4 times
Share this document with a friend
Description:
Vortrag zum Thema TYPO3 TCA vom TYPO3 Camp München
10
Peter Schuhmann, Dynamic Lines GmbH TCA TYPO3 Configuration Array benutzerfreundlich einrichten
Transcript
Page 1: TYPO3 TCA benutzerfreundlich einrichten

Peter Schuhmann, Dynamic Lines GmbH

TCATYPO3 Configuration Arraybenutzerfreundlich einrichten

Page 2: TYPO3 TCA benutzerfreundlich einrichten

Peter Schuhmann, Dynamic Lines GmbH

zusätzliches Label immer anzeigen

'label' => 'lastname','label_alt' => 'firstname','label_alt_force' => TRUE,

Ergebnis

ext_tables.php

Page 3: TYPO3 TCA benutzerfreundlich einrichten

Peter Schuhmann, Dynamic Lines GmbH

Tabs verwenden

'dividers2tabs' => TRUE,

Ergebnis

ext_tables.php

'types' => array('0' => array('showitem' => 'hidden;;1;;1-1-1, ctype , lastname, ,--div--;Address,address, street, zip, city')

),

tca.php

Ein Tab wird mit „--div--;<tabname>,“ deklariert. Für <tabname> kann auch auf Locallang zugegriffen werden. Wird der erste Tab nicht manuell festgelegt, wird dieser als „General“ festgelegt.

Page 4: TYPO3 TCA benutzerfreundlich einrichten

Peter Schuhmann, Dynamic Lines GmbH

Hidden Fields

Beispiel

Das TCA bietet kein direktes Feld, welches als Hidden Field deklariert werden kann. Da im TCA unter types festgelegten Felder die Sichtbarkeit der Felder steuert, kann man das Feld, welches nicht angezeigt werden soll einfach aus der Typ-Deklaration entfernen. Mittels Hook kann das Feld dann nach wie vor beschrieben werden.

Ein Hidden Field kann beispielsweise genutzt werden um eine eigene Darstellung im Listen-Modul zu ermöglichen. Dieses Feld kann dann als Label für die Tabelle genutzt werden um Redakteuren den Zugriff zu vereinfachen. Beispielsweise kann so neben dem Vor- und Nachnamen auch der Firmenname mit ausgegeben werden.

Page 5: TYPO3 TCA benutzerfreundlich einrichten

Peter Schuhmann, Dynamic Lines GmbH

Types einrichten

$TCA['<tabelname>'] = array('ctrl' => $TCA['<tabelname>']['ctrl'],'interface' => array(

'showRecordFieldList' => 'hidden,firstname,lastname,address,street,zip,city,ctype'),'feInterface' => $TCA['<tabelname>']['feInterface'],

'columns' => array(...

'ctype' => array('exclude' => 0,'label' => 'LLL:EXT:<extname>/locallang_db.xml:tx_<extname>_order.ctype','config' => array(

'type' => 'select','items' => array(

/* Label der unterschiedlichen Typen */array('LLL:EXT:<extname>/locallang_db.xml:tx_<extname>_order.ctype.I.0', '0'),array('LLL:EXT:<extname>/locallang_db.xml:tx_<extname>_order.ctype.I.1', '1'),

),'size' => 1,'maxitems' => 1,

))...)

'types' => array(/* Welche Felder sollen bei welchem Typen angezeigt werden (Reihenfolge entscheidend) (0 = Default) */

'0' => array('showitem' => 'hidden;;1;;1-1-1, ctype , lastname,address, street, zip, city'),'1' => array('showitem' => 'hidden;;1;;1-1-1, ctype, lastname')

),'palettes' => array(

'1' => array('showitem' => ''))

);

) ),

tca.php

5

Page 6: TYPO3 TCA benutzerfreundlich einrichten

Peter Schuhmann, Dynamic Lines GmbH

Types einrichten

'type' => 'ctype',

Ergebnis

ext_tables.php

Mit diesem Befehl wird angegeben, welches Feld für die Typumschaltung zuständig ist. Ändert sich der Wert dieses Feldes, wird die Seite neugeladen. In diesem Fall lautet der Name des Feldes ctype.

Page 7: TYPO3 TCA benutzerfreundlich einrichten

Peter Schuhmann, Dynamic Lines GmbH

IRRE

Nachteil

VorteilLeichte Pflege der Daten für den Anwender. Die Daten befinden sich dort, wo man sie erwartet.

Angelegte Kindelemente werden in der Listenansicht angezeigt. Bearbeitet der Anwender einen Kinddatensatz direkt, wird die Eltern-ID entfernt und der Kinddatensatz wird zum Hauptdatensatz.

Page 8: TYPO3 TCA benutzerfreundlich einrichten

Peter Schuhmann, Dynamic Lines GmbH

IRRE

ext_localconf.php

LösungIn der Datei „typo3/class.db_list.inc“ - die für die Ausführung der Datenbankabfrage der Listenansicht verantwortlich ist - befindet sich ein Hook, mit welchem die Darstellung angepasst werden kann. Alternativ die Extension „tca_addWhere“ aus dem Repository laden (wird die nächsten Tage online gestellt).

<?phpclass tx_tcaaddwhere_hook {

public function makeQueryArray_post(&$queryParts, $piObj, $table, $id, $addWhere, $fieldList, $_params) {

if ($table == 'tx_demo_domain_model_category') {$queryParts['WHERE'] .= ' AND parentcategory = 0';}

}}?>

$TYPO3_CONF_VARS['SC_OPTIONS']['typo3/class.db_list.inc']['makeQueryArray'][] = 'EXT:tca_addWhere/class.tx_tcaaddwhere_hook.php:tx_tcaaddwhere_hook';

class.tx_tcaaddwhere_hook.php

Ergebnis

Page 9: TYPO3 TCA benutzerfreundlich einrichten

Peter Schuhmann, Dynamic Lines GmbH

'category' => array('exclude' => 1,'label' => 'LLL:EXT:demo/Resources/Private/Language/locallang_db.xml:tx_demo_domain_model_course.category','config' => array(

'type' => 'select','foreign_table' => 'tx_demo_domain_model_category','MM' => 'tx_demo_course_category_mm','size' => 10,'autoSizeMax' => 30,'maxitems' => 9999,'multiple' => 0,'renderMode' => 'tree','treeConfig' => array(

'parentField' => 'parentcategory','appearance' => array(

'expandAll' => TRUE,'showHeader' => TRUE,'maxLevels' => 999,

))

),),

Treeview rendern

Ergebnis

tca.php

Voraussetzung ist, dass die Tabelle tx_demo_domain_model_category auf sich selbst verweist.

Page 10: TYPO3 TCA benutzerfreundlich einrichten

Peter Schuhmann, Dynamic Lines GmbH

Links

Core Documentationhttp://typo3.org/documentation/document-library/core-documentation/doc_core_api/4.1.0/view/4/2/

[email protected]


Recommended