Während der Modulentwicklung kommt man schnell an den Punkt, wo man verschiedene Einstellungen zu einem Contao Modul hinterlegen möchte. Das kann eine Weiterleitungsseite sein, ein Text oder ein x-beliebiger Wert aus einem Auswahlfeld oder ähnliches. Jeder Eintrag in den Modulen einer “Theme” entspricht einem Datensatz in der Tabelle tl_module. Dort werden auch alle Einstellungen zu einem Modul hinterlegt.

Auszug aus der Tabelle tl_module
Um eine dieser bestehenden Spalten in einem Modul nutzen zu können, muß man in der DCA eine Zeile ergänzen:
$GLOBALS['TL_DCA']['tl_module']['palettes']['mymodule'] = '{title_legend},name,headline,type,customLabel';
Schon steht im Modul ein einfaches Textfeld zur Verfügung. Da diese Einstellung bereits von Contao verwendet wird, gibt es bereits eine Felddefinition und eine Übersetzung für die Einstellung customLabel. Damit wir keine neue Spalte in der tl_module anlegen müssen, können wir das Feld für etwas anderes “mißbrauchen”. Ich will nur demonstrieren, wie man Änderungen vornehmen kann, die im Prinzip auch bei einem neuen Feld notwendig sind.
Die Übersetzung wird beispielsweise folgendermaßen gesetzt bzw. überschrieben:
$GLOBALS['TL_LANG']['tl_module']['customLabel']=array('View', 'Please select a view type.');
Den Feldtyp können wir folgendermaßen beeinflussen:
$GLOBALS['TL_DCA']['tl_module']['fields']['customLabel'] = array(
'label' => &$GLOBALS['TL_LANG']['tl_module']['customLabel'],
'inputType' => 'select',
'options' => array(1=>'Overview', 2=>'Detail')
);
Somit haben wir jetzt folgendes im Backend erreicht:

Das angepasste Backend Modul mit neuem Feld
Eines sollte jedoch klar sein, wenn man bestehende Felddefinitionen verändert: Auch in den Modulen, in den die Einstellung bereits verwendet wird, kann unter Umständen die Veränderung greifen. Das wiederum hängt von der Reihenfolge ab, wie die Module abgearbeitet werden (alphabetisch).