zum Hauptinhalt springen

Mae CMS updatesicher anpassen und erweitern

Um Mae CMS updatesicher zu erweitern oder anzupassen, sollten die folgenden Hinweise beachtet werden, um bei einem Systemupdate die Anpassungen nicht zu verlieren.
Grundsätzlich werden alle geänderten Dateien des Systems bei einem Update überschrieben außer die folgenden Dateien:

  • /robots.txt
  • /system/config/config.json
  • .htaccess Dateien

Vorlagen von Inhaltselementen anpassen

Die original Templates unter "media/layout/template/elements" sollten nicht geändert werden, sondern man sollte eine Kopie im Unterordner "/custom" anlegen. Der Dateiname muss lediglich mit dem Originalnamen beginnen, wodurch es möglich wird, mehrere Varianten für einen Inhaltselementtyp anzulegen (z.B. elText_1.html und elText_2.html)

Eigene Vorlagen-Funktionen

Mit dem Platzhalter func::ClassName|functionName können in Templates PHP-Klassenfunktionen ausgeführt und deren Rückgabewert ausgegeben werden. Am besten man legt sich unter "system/class/custom" eine eigene Klasse an, die diese Funktionen enthält.

Eigene Inhaltselemente erstellen

Alle Inhaltselementklassen befinden sich im Ordner "system/class/elements". Am besten man kopiert eine bestehende Klasse, die dem neu zu erstellenden Elementtyp möglichst ähnlich ist. Der Klassen- und Dateiname sollte jedoch mit "El" beginnen.

Falls der neue Elementtyp ein Ersatz für einen bestehenden Typ ist, kann man den Klassennamen des ersetzten Typs in der "system/config/config.json" im Parameter "disabledElementClasses" eintragen, damit bei Neuanlage von Elementen selbst Administratoren diesen ersetzten Typ nicht mehr auswählen können.

Eigene Backend Menüpunkte erstellen

Nachdem man die benötigte(n) Tabelle(n) in der Datenbanbk angelegt hat, muss man die jeweils zugehörige Tabellenklasse unter "system/class/tables" erstellen.
Danach kann man im Ordner "system/class/page" die Backendseiten-Klasse anlegen und den Klassennamen dieser Seite in die Eigenschaft "$edtPageClass" der Tabellenklassen eintragen.
Unter dem Menüpunkt "Einstellungen / Menüpunkte BE" kann man jetzt den neuen Menüpunkt anlegen und die neue Seitenklasse zuweisen.

Bestehende Tabellen/Menüpukte erweitern

Will man z.B. das Adressmodul um Felder erweitern, kann man im Ordner "system/class/custom" eine eigene, von TableExtension abgeleitete Klasse erstellen und der Tabellenklasse Felder, die man in der Datenbanktabelle hinzugefügt hat bekannt machen. Man kann auch bestehende Felder anpassen (z.B. die Bezeichnung ändern oder die Maximallänge für Textfelder neu definieren). Im Quellcode der Klasse "TableExtension" ist das genauer beschrieben.Zudem ist es möglich, auf bestimmte Ereignisse, wie das Einfügen, Ändern oder Löschen von Datensätzen zu reagieren, oder Berechtigungen auf Datensatzaktionen einzuschränken.
In der "system/config/config.json" im Parameter "tableExtensionClass" muss der Klassenname dieser neuen Klasse eingetragen werden.

Über eine, von PageExtension abgeleitete Klassen, die im config.sys Parameter "pageExtensionClass" eingetragen werden muss, kann man einer Backend-Seite neue Aktionen hinzufügen, bestehende Aktionen überschreiben und die angezeigten Tabellen/Baumstrukturen anpassen.

Über eine, von FormExtension abgeleitete Klassen, die im config.sys Parameter "formExtensionClass" eingetragen werden muss, kann man Backend-Formulare von Backend-Seiten und Inhaltselementen anpassen. Es ist zudem möglich, in die Validierung des Formulars einzugreifen oder die beim Speichern übermittelten Werte vor dem Schreiben in die Datenbank zu manipulieren.