Änderungen und Features von MM 2.4
Folgend eine Übersicht der Änderungen und Features zu MetaModels 2.4, die durch das „early adopter Programm“ ermöglicht wurden - mehr dazu unter Fundraising auf der MM Webseite.
Für einen Check nach einem Upgrade zu MM 2.4 sind unten weitere Hinweise.
Bemerkung
Zum Anlegen von mm_*-Tabellen und Spalten der Attribute muss eine DB-Migration durchgeführt werden -
siehe Schemamanager.
Nach Anlegen oder Änderungen der Bezeichnungen von Models, Attributen oder Legenden bitte den (Translation-)-Cache
löschen - siehe Symfony-Translation.
Allgemein und Core
Mit Contao 5 kommt eine Version von Symfony ins Spiel und wir haben die Mindestversion von PHP auf 8.2 gestellt. Bei Contao 5 ist das leicht abgeänderte Backend mit der vollen Breite und neuen Icons am Auffälligsten. Die neuen Angaben zur Breite eines Widgets in der Eingabemaske wie „w25“ oder „w66“ können natürlich auch in MM verwendet werden. MetaModels unterstützt das „Dunkle Design“ (Dark-Mode) im Backend inkl. Iconvarianten mit Suffix „–dark“.
Bei eigenen Anpassungen bzw. Programmierungen sind einige Dinge zu beachten, die sich in Contao geändert haben wie
z. B. die Deprecations aus C 4.13
bzw. C 5, absolute Pfadangaben für Dateien wie Icons
oder CSS/JS oder vollständige Angaben beim Aufruf von Methoden z. B. \Contao\Input::get('myvariable').
Bei den Bildgrößen gibt es verschiedene Standardvorgaben wie „Mitte-Mitte“ nicht mehr - dafür eigene Bildgrößen definieren und z. B. bei den Rendersettings anpassen.
Die Verlinkungen im CE und Modul zu Model, Filter usw. öffnen nun in einem separaten Tab im Browser.
Der MM-Core unterstützt nun ein individuelles
„route_prefix“,
um das Backend statt mit contao/ z. B. mit admin/ aufrufen zu können.
Bei den Frontendausgaben wurde für sichere JavaScripts und Inline-Styles der Support für die Content Security Policy (CSP) eingebaut - mehr dazu im Newsletter vom November 2025
Für den TinyMCE kann man einen Link-Picker auf Detailseiten konfigurieren - siehe jumpTo-Picker (Detailseite) für den TinyMCE und als dcaPicker.
Für die Suche der verwendeten Dateien wird die Erweiterung „Contao File Usage“ unterstützt - siehe File-Usage Integration.
Mehrsprachigkeit
Mit MM 2.4 sind einige Designvorgaben zur Mehrsprachigkeit konsequenter umgesetzt bzw. wurden korrigiert - hier mehr zum Aufbau der Mehrsprachigkeit in MetaModels
Zu den Anpassungen gehört die strikte Ausgabe der Inhalte der Fallbacksprache, sofern die zu übersetzende Sprache keine eigenen Inhalte hat - das gilt z. B. auch für Attribute Datei und Inhalte eines Artikels.
Dieses Vorgehen kann über die Option „Fallback-Modus deaktivieren“ ausgesetzt werden - z. B. steht diese Option bei dem Attribut Übersetzte Checkbox zur Verfügung. Das bedeutet, dass ein Wert für eine Sprache gespeichert wird, auch wenn dieser gleich dem Fallbackwert ist.
Werden mehrsprachige Datensätze kopiert, werden nun neben der Fallbacksprache auch alle weiteren Sprachen mit kopiert.
Verbessert wurde die Anzeige im Backend welche Sprache die Fallbacksprache ist. Wenn in der Eingabemaske von der
Fallbacksprache auf die zu übersetzende Sprache wechselt, wird nun bei den Attributen angezeigt, welche Inhalte
ausgegeben werden - also ob
oder
.
Für Übersetzungen ist zum XLIFF-Ex-Import ein Übersetzungstool für DeepL&Co. hinzu gekommen.
Attribute
- Checkbox
Unterstützung des Dark-Mode bei den Icons - dazu eine weitere Icon-Datei mit dem Suffix „–dark“ anlegen
Template
mm_attr_checkbox_icon.html5für Anzeige im Backend als ☑ bzw. ☐ in der Listenansicht
- Cowegis Marker (NEU)
Auswahl von Markern in Cowegis zur Anzeige auf einer Karte - siehe „Cowegis-Layer Integration für Marker“
- Datei
Anpassung der Templates für die Ausgabe title, alt, caption aus Knoten metafile
zwei neue Templates
mm_attr_file_contao_image.html5für die Standardausgabe wie in Contao, was auch die Ausgabe der JSON-LD-Daten beinhaltet sowiemm_attr_file_contao_image_ofpage.html5für die Standardausgabe wie in Contao sowie wird das erste Bild alsprimaryImageOfPageausgegeben; siehe auch SEO-Anpassungen
- Einzelauswahl [select]
Support für Einsatz mit Popup-Widget in einer Kindtabelle
- Inhalt eines Artikels
Support für Einsatz in einer Kindtabelle
Änderung der Templates - Übergabe eines Arrays mit Content-Objekten
- Kombinierte Werte
Option „Immer speichern“ (alwaysSave) aktiviert - speichern auch ohne Werteänderung
- Land
Änderung der Länderkürzel in Großbuchstaben
- Langtext
Migration für basicEntities - siehe Contao-Handbuch
- Mehrfachauswahl [tags]
Support für Einsatz in einer Kindtabelle
- Tabelle-Multi (MCW)
Support für
'inputType' => 'fileTree'mit'multiple' => 'true'inkl. Verschieben von Dateien
- Text
Migration für basicEntities - siehe Contao-Handbuch
- Token (NEU)
erzeugt beim erstmaligen Speichern eines Datensatzes eine kryptographisch zufällige, unveränderliche Zeichenfolge (Token) - siehe Token (ab MM 2.4)
- Übersetzter Alias
Spalte
langcodeaufvarchar(64)
- Übersetzte Checkbox
Unterstützung des Dark-Mode bei den Icons - dazu eine weitere Icon-Datei mit dem Suffix „–dark“ anlegen
Template
mm_attr_translatedcheckbox_icon.html5für Anzeige im Backend als ☑ bzw. ☐ in der ListenansichtSpalte
langcodeaufvarchar(64)Option „Fallback-Modus deaktivieren“ zum Speichern eines Wertes für eine Sprache, auch wenn dieser gleich dem Fallbackwert ist.
- Übersetzte Datei
Anpassung der Templates für die Ausgabe title, alt, caption aus Knoten metafile
zwei neue Templates
mm_attr_file_contao_image.html5für die Standardausgabe wie in Contao, was auch die Ausgabe der JSON-LD-Daten beinhaltet sowiemm_attr_file_contao_image_ofpage.html5für die Standardausgabe wie in Contao sowie wird das erste Bild alsprimaryImageOfPageausgegeben; siehe auch SEO-AnpassungenSpalte
langcodeaufvarchar(64)
- Übersetzter Inhalt eines Artikels
Support für Einsatz in einer Kindtabelle
Spalte
mm_langaufvarchar(64)Änderung der Templates - Übergabe eines Arrays mit Content-Objekten
- Übersetzte Kombinierte Werte
Option „Immer speichern“ (alwaysSave) aktiviert - speichern auch ohne Werteänderung
- Übersetzter Langtext
Migration für basicEntities - siehe Contao-Handbuch
Spalte
langcodeaufvarchar(64)
- Übersetzte Tabelle-Multi (MCW)
Support für
'inputType' => 'fileTree'mit'multiple' => 'true'inkl. Verschieben von DateienSpalte
langcodeaufvarchar(64)
- Übersetzte Tabelle-Text
Spalte
langcodeaufvarchar(64)
- Übersetzter Text
Migration für basicEntities - siehe Contao-Handbuch
Spalte
langcodeaufvarchar(64)
- Übersetzte URL
Spaltenname von
languageauflangcodegeändert - Migration vorhandenSpalte
langcodeaufvarchar(64)
Filter
Alle Filterregeln, die eine URL erzeugen haben eine neue Einstellung („URL-Typ für den Parameter“) ob die Parameter als Slug- oder als GET-Parameter in der URL erscheinen sollen. Aus Gründen der Rückwärtskompatibilität ist die Einstellung nach einem Upgrade „Slug oder GET“ - diese Einstellung ist deprecated und sollte für jede entsprechende Filterregel entweder auf Slug ODER auf GET eingestellt werden. Mehr dazu bei den SEO-Tipps
- Einfache Abfrage
ist die Option „Statischer Parameter“ gesetzt, kann neben dem CE-/Modul MM-Liste auch in MM-Filter für die Filterregel ein Wert als Preset ausgewählt werden - siehe Ticket #345
- Expression-Regel (Neu)
Mit der Filterregel „Expression“ kann die Ausführung weiterer Filterregeln an Bedingungen geknüpft werden - siehe :rel:`rst_cookbook_filter_expression-rule`
- Filter-by-related
die Filterregel ermöglicht es, Items nach Eigenschaften eines verknüpften (Relation) MetaModels zu filtern. Als Relationen ist eine Einzelauswahl (Select) oder Kindtabelle möglich.
- Umkreissuche (Perimeterseach)
die Map-Provider
GoogleMapsundOpenStreetMapsbenötigen beim Aufruf als Parameter einHttpClientInterface
- Wert von/bis für ein Attribut (from-to)
Min- und Max-Werte stehen im Template als
optionsMinundoptionsMaxzur Verfügungneues Template mit Typ
datealsmm_filteritem_datepicker.html5
- Wert von/bis für zwei Attribute (range)
Min- und Max-Werte stehen im Template als
optionsMinundoptionsMaxzur Verfügungneues Template mit Typ
datealsmm_filteritem_datepicker.html5
- Volltextsuche mit „Loupe“
Mit der neuen Filterregel wird ein Index über ausgewählte Attribute erstellt, über den anschließend gesucht werden kann - siehe Loupe
- Expression-Regel** (Neu)
damit kann die Ausführung weiterer Filterregeln an Bedingungen geknüpft werden; mehr dazu bei der Filterregel Expression
Frontend-Editing (FEE)
Änderung des Templates form_textfield_multiple zu form_text_multiple in „FormTextFieldMultipleBundle“ (Angleichung an Contao 5)
bei den Einstellungen der Eingabemaske für einen Datei-Upload werden bei den Widget-Modi je nach aktivierter Einstellung „Mehrfachbearbeitung“ nur noch die passenden Einstellungen für Einzel- oder Mehrfachupload angezeigt - bei einer Umstellung beim Attribut muss das aber entsprechend beim Upload auch umgestellt werden
die Anpassung des Zielverzeichnisses oder Dateinamen mit dem Insert-Tag
{{post::<attribute-spaltenname>}}ist nicht mehr möglich, da dieser Tag in Contao 5 nicht mehr vorhanden ist - dafür kann nun ein Simple-Token eingesetzt werden als##post::<attribute-spaltenname>##- siehe FEEUnterstützung von mehrsprachigen MetaModels - in der FE-Maske gib es einen Sprachenwechsler wie im BE; siehe FEE
Auswahlmöglichkeit der Form-Templates für die Eingabemaske (FEE) bei allen übersetzten Attributen
Support für die Content Security Policy (CSP)
Known-Issues
bei Umschaltung zu/vom Debugmodus im BE per Button stimmt die Referenzseite nicht mehr und man muss die Seite erneut ansteuern - z. B. mit „zurück“ im Browser und Reload der Seite
Contao bietet aktuell keine Möglichkeit, an der Stelle den Referer zu beeinflussen
Check für Upgrade auf MM 2.4
Grundsätzlich ist ein Upgrade innerhalb des MM 2.x-Zweiges problemlos möglich und ggf. notwendige Anpassungen an Bezeichnungen und DB-Änderungen werden über Migrationen abgefangen. Es gibt aber ein paar Sachen, die damit nicht oder nur sehr schwer abzufangen sind. Aus dem Grund sollten bei der Umstellungen auf MM 2.4 die folgenden Punkte im Blick behalten werden:
Änderung der Templates vom DC_General
Änderung des Templates form_textfield_multiple zu form_text_multiple in „FormTextFieldMultipleBundle“ (FEE)
Änderung der Templates bei Datei und übersetzte Datei für Ausgabe der Metadaten
Check der eigenen Programmierungen an Contao 5 (s.o.)
bei FEE mit Dateiupload, Widget-Modus bei Einstellungen des Atttributs in der Eingabemaske prüfen (s. o.)
bei FFE und Dateiupload: prüfen ob Insert-Tag
{{post::*}}verwendet wurde und anpassen (s. o.)bei FEE und Link zum Löschen eines Items die Änderungen durch den CSP-Support beachten und ggf. CSS anpassen (S. o.)
für Dark-Mode ggf. weitere Varianten der eigenen Icons mit Suffix „–dark“ anlegen - z. B. zu flag_enabled.svg und flag_disabled.svg ein flag_enabled–dark.svg und flag_disabled–dark.svg - siehe EAP-News Oktober II 2024
bei Attribut Land wurden die Schreibweisen der Länderkürzel auf Großbuchstaben wie in Contao geändert - vorhandene Daten werden mit einer Migration angepasst; ggf. eigene Prüfungen oder Speicherungen anpassen
bei Attribut übersetzte URL wurde der Name der Spalte für die Sprachkürzel auf
langcodegeändert - ggf. eigene SQL-Abfragen oder Templateausgaben anpassenAuswahl der Bildgrößen prüfen - verschiedene Standardvorgaben wie „Mitte-Mitte“ gibt es nicht mehr
wenn Option „Statischer Parameter“ in Filterregel gesetzt ist, dann in MM-Liste den Standardwert bei „Filterwert für Attribut“ prüfen - sofern keine Items in der Liste ausgegeben werden auf „ohne Datenwert [null]“ stellen
bei eigenen Abfragen für die Umkreissuche bzw. Ermittlung der Geokoordinaten, bei dem Map-Provider ein
HttpClientInterfaceals Parameter mit übergebenbei Filterregeln die Einstellung „URL-Typ für den Parameter“ prüfen und auf Slug ODER GET einstellen
neue Templates für Inhalt eines Artikels (auch mehrsprachig) mit Übergabe eines Arrays mit Content-Objekten
Ausgabe der Inhalte der Fallbacksprache, wenn keine übersetzten Inhalte vorliegen
bei Übersetzte Checkbox die Option „Fallback-Modus deaktivieren“ (Attributseinstellungen) setzen für Beibehaltung der bisherigen Filterungen - Attribute ermitteln:
1SELECT mm.name AS metamodel, a.colname
2FROM `tl_metamodel_attribute` AS a
3JOIN `tl_metamodel` AS mm ON mm.id = a.pid
4WHERE a.type = 'translatedcheckbox'
5ORDER BY mm.name, a.colname;
Re-Finanzierung
Siehe auch
Für eine Re-Finanzierung der umfangreichen Arbeiten, bittet das MM-Team um finanzielle Zuwendung. Als Richtgröße sollte der Umfang des zu realisierenden Projektes genommen werden und etwa 10% einkalkuliert werden - aufgrund der Erfahrung der letzten Zuwendungen, sind das Beträge zwischen 100€ und 500€ (Netto) - eine Rechnung inkl. MwSt wird natürlich immer ausgestellt. Mehr…