Wie man einem Data Container Array eigene Felder hinzufügt
Nehmen wir an, Sie möchten die Mitgliedertabelle um eine Kundennummer erweitern. Da das Hinzufügen eines Feldes mehr erfordert als nur das Ändern einer einzelnen Datei, wird das Anlegen eines eigenen Moduls im Verzeichnis system/modules empfohlen. Denken Sie daran, dass Module in alphabetischer Reihenfolge geladen werden. Nennen Sie es also nicht custom, wenn Sie damit die news-Erweiterung anpassen wollen.
Die Datenbank erweitern ¶
Die Datenbank-Konfiguration ist in den config/database.sql-Dateien der verschiedenen Contao-Module gespeichert. Die SQL-Dateien werden nicht geparst, sondern dienen der Berechnung der Unterschiede zwischen den Contao-Vorgaben und den tatsächlichen Tabellen. Daher können Sie auch Felder beeinflussen, die von einem anderen Modul definiert wurden. Folgender Code legt das neue Feld an:
CREATE TABLE `tl_member`( `customer_number` varchar(8) NOT NULL default '' ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Verwenden Sie das Contao-Installtool, um die Datenbank zu aktualisieren.
Die DCA-Konfiguration erweitern ¶
Legen Sie die Datei dca/tl_member.php in Ihrem Modulordner an und fügen Sie die Metadaten des neuen Feldes ein.
// Anpassung der Palette
$GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace
(
'company',
'customer_number,company',
$GLOBALS['TL_DCA']['tl_member']['palettes']['default']
);
// Hinzufügen der Feld-Konfiguration
$GLOBALS['TL_DCA']['tl_member']['fields']['customer_number'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_member']['customer_number'],
'exclude' => true,
'inputType' => 'text',
'eval' => array('mandatory'=>true, 'rgxp'=>'digit', 'maxlength'=>8)
);
Falls Sie den obigen Code nicht verstehen, lesen Sie den Abschnitt über Data Container Arrays.
Eine Übersetzung hinzufügen ¶
Erstellen Sie die Datei languages/de/tl_member.php in Ihrem Modulordner und legen Sie die deutschen Bezeichnungen an:
$GLOBALS['TL_LANG']['tl_member']['customer_number'] = array
(
'Kundennummer',
'Bitte geben Sie die 8-stellige Kundennummer ein.'
);Jetzt können Sie in der Mitgliederverwaltung eine bis zu 8 Ziffern lange Kundennummer eingeben. Wird das Feld nicht ausgefüllt oder enthält es nicht-numerische Zeichen, gibt Contao beim Abschicken des Formulars eine entsprechende Fehlermeldung aus.

Einen Kommentar hinzufügen