Element über TCEForm beeinflussen
| Autor | Nachricht |
|---|---|
|
Verfasst am: 07. 09. 2009 [15:22]
|
|
|
mark13
Themenersteller
Dabei seit: 27.02.2009
Beiträge: 18
|
Hallo, Kann ich ein bestimmtes Element im Backendeingabeformular in Abhängigkeit vom cType entfernen bzw. beeinflussen? Ich möchte das Element colPos nur für den Typ table verändern... also so in der Art: TCEFORM.tt_content.colPos.cType.table.removeItems = 3 Danke! |
|
Verfasst am: 12. 09. 2009 [00:22]
|
|
|
karlchen
Dabei seit: 19.10.2006
Beiträge: 868
|
man könnte da ein wenig mit einer Extension und einem hook nachhelfen. Erstelle dir mit dem Kickstarter eine Extension mit dem Namen changetca. Danach lege eine Datei namens ext_localconf.php und schreibe folgendes rein: // es wird ein TYPO3 Hook angesprochen PHP <?php if (!defined ('TYPO3_MODE')) die ('Access denied.'); $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tceforms.php']['getMainFieldsClass'][] = 'EXT:changetca/class.tx_changetca.php:tx_changetca'; ?> danach wird die dazugehörige PHP Datei erstellt. class.tx_changetca.php in der steht dann folgendes PHP <?php class tx_changetca { /* Hooks in class t3lib/class.t3lib_tceforms.php */ function getMainFields_preProcess($table, &$row, $pObj) { if($row['CType'] == 'table'){ unset($GLOBALS['TCA']['tt_content']['columns']['colPos']['config']['items']); $GLOBALS['TCA']['tt_content']['columns']['colPos']['config']['items'] = Array ( Array('LLL:EXT:cms/locallang_ttc.php:colPos.I.0', '1'), Array('LLL:EXT:lang/locallang_general.php:LGL.normal', '0'), Array('LLL:EXT:cms/locallang_ttc.php:colPos.I.3', '3') ); } } function getSingleField_preProcess($table, $field, &$row, $altName, $palette, $extra, $pal, $pObj){ } } ?> Dieser Hook wird immer vor der Ausgabe eines Content Elemtents ausgeführt. Was wir hier machen, ist zuerst die Abfrage ob die es sich auch um den CType table handelt, danach entfernen wir die hinterlegte definition der colpos ITEMS und definieren Sie neu. Copy und Paste von der original Definition aus der Datei tbl_content.php aus /sysext/cms/ für die Items. Lassen dabei jedoch eine colPos weg. (in diesem Fall die 2). Schon kann der User die Spalte nicht mehr im Inhaltselement sehen. Wenn man es sich doch anders überlegt den Part auskommentieren und alles ist wieder beim alten. Mit diesem Hook lässt sich eigentlich so gut wie alles mit einem Inhaltselement machen. Ich nutze den hook z.B. um bestimmten Usern nur eine ReadOnly ausgabe zu zeigen, bzw. in Abhängigkeit von vorhanden Bildern die Uploadfelder zu entfernen, etc... Lässt sich für Usability Zwecke gut eigenen. |



