Hallo Markus,
die Ursache ist, dass aufgrund der Länge des Datenbankfeldes in den Moduleinstellungen die Auswahl der anzuzeigenden Felder (Liste/Details) nicht komplett gespeichert werden kann.
Infos zu diesem Thema gab es bereits mehrfach, z.B. hier:
https://community.contao.org/de/show...hlight=listing
https://community.contao.org/de/show...lder-w%E4hlbar
Nochmals erläutert:
EFG nutzt einige Modul-Einstellungen, die vom Core-Modul "Auflistung" bereitgestellt werden. Deren Feldlänge ist auf 255 Zeichen begrenzt, sodass bei sehr vielen Formularfeldern (oder Formularfeldern mit langen Feldnamen) die Auswahl nicht komplett gespeichert werden kann.
Zwar überschreibt EFG die SQL-Definition der Datenbankfelder, da aber die Konfiguration des Moduls 'listing' ("Auflistung") nach 'efg' geladen wird, greifen die Definitionen des 'listing'-Moduls (sofern dieses nicht in den Systemeinstellungen als "inaktiv" gesetzt ist).
Es gibt nun zwei Möglichkeiten, die Feldlänge zu überschreiben:
a) in einer config.php eines Moduls-Verzeichnisses, das (wichtig) nach 'listing' geladen wird (wie in o.g. Thread beschrieben)
b) (ab Contao 3 möglich) Eintrag der gewünschten/erforderlichen SQL-Felddefinition in der dcaconfig (system/config/dcaconfig.php).
Es empfiehlt sich allerdings, nur diejenigen Felder anzupassen, bei denen tatsächlich längere Eingaben/Werte benötigt werden.
Anstelle von "text NULL" (für quasi unbegrenzte Länge) evtl. auch ein "varchar(255) NOT NULL default ''" mit der benötigten/sinnvollen Länge anstelle von 255.
Die möglichen/erforderlichen Einträge in der dcaconfig wären:
PHP-Code:
// Datenbankfeld für Auswahl der anzuzeigenden/aufzulistenden Felder
$GLOBALS['TL_DCA']['tl_module']['fields']['list_fields']['sql'] = "text NULL";
// Datenbankfeld für "Felder der Detailseite"
$GLOBALS['TL_DCA']['tl_module']['fields']['list_info']['sql'] = "text NULL";
// Datenbankfeld für "Durchsuchbare Felder"
$GLOBALS['TL_DCA']['tl_module']['fields']['list_search']['sql'] = "text NULL";
// Datenbankfeld für "Bedingung"
$GLOBALS['TL_DCA']['tl_module']['fields']['list_where']['sql'] = "text NULL";
// Datenbankfeld für "Sortierung"
$GLOBALS['TL_DCA']['tl_module']['fields']['list_sort']['sql'] = "text NULL";
Nach Ergänzung der Einträge in der dcaconfig dann "Erweiterungsverwaltung" -> "Datenbank aktualisieren" nicht vergessen.
Diese Änderung der Felder kann ohne Datenverlust vorgenommen werden.
Anschließend müssen allerdings die Einstellungen des Auflistungsmoduls nochmal gespeichert werden.
Schöne Grüße
Tom
Lesezeichen