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. In der "system/config/config.json" im Parameter "tableExtensionClass" muss der Klassenname dieser neuen Klasse eingetragen werden.

Von der Seitenklasse im Ordner "system/class/page" macht man sich eine Kopie und nimmt dort die Änderungen am Eingabeformular und sonstigen Funktionen vor. Unter "Einstellungen / Menüpunkte BE" trägt man seine neue Seitenklasse für den Menüpunkt ein. Damit die neue Seite auch für Bearbeitungsoperationen im Popup-Fenster verwendet wird, muss man in seiner "TableExtension" Klasse über die Funktion "setEdtPageClass" den neuen Klassenname bei der Tabellenklasse eintragen.