Theme
Redaxo 5 Addon zum Verwalten aller Projektdateien für Frontend und Backend.
Ordner
Nach der Installation kann auf der Theme-Einstellungsseite mit Klick auf den Button Theme-Ordner installieren eine Ordner-Struktur erstellt werden. Dabei wird auf Ebene des Ordners redaxo der Ordner theme erstellt.
Er enthält zwei weitere Ordner: public und private:
- Im Ordner public können alle öffentlich zugänglichen Dateien, wie z.B. JavaScript und CSS abgelegt werden.
- Im Ordner private können alle Dateien abgelegt werden, die vor dem Zugriff von außen geschützt werden sollen. Er enthält eine .htaccess, die den Zugriff beschränkt.
Die weiteren Unterordner sind ein Vorschlag für die Strukturierung der Projektdateien. Jede andere Variante ist auch möglich. Die vorgegebene Struktur hat den Vorteil, dass diese Ordner über PHP-Methoden einfach ansprechbar sind (siehe unten), bzw. wie die entsprechenden Ordner eines Addons automatisch eingebunden werden:
- Alle im Ordner lib enthaltenen PHP-Klassen werden automatisch über autoload eingebunden.
- Alle im Ordner lang enthaltenen Dateien mit der Endung .lang werden automatisch über i18n eingebunden.
- Alle Dateien mit der Endung .php im Ordner inc werden per include_once in der boot.php des Addons eingebunden.
- Der Ordner fragments wird über rex_fragment::addDirectory eingebunden.
- Der Ordner ytemplates wird über rex_yform::addTemplatePath eingebunden, wenn YForm installiert ist.
- Der Ordner redaxo ist ein Platzhalter für die Synchronisierungsdaten vom Developer Addon (siehe unten).
Dateien
Neben der .htaccess werden weitere Dateien erstellt, die - sofern sie nicht gelöscht wurden - vom Addon automatisch eingebunden werden:
- backend.css und backend.js werden auf jeder Seite des Redaxo-Backends geladen. So können auf einfache Weise zusätzliche Scripte, Stile oder Webfonts für das Backend eingebunden werden. Diese Funktion kann in den Einstellungen des Theme-Addons aktiviert oder deaktiviert werden.
- functions.php wird im Ordner inc angelegt (siehe oben) und dient nur als schnelle Starthilfe. Sie kann auch umbenannt, gelöscht oder durch andere Dateien ersetzt werden.
Developer
Wenn das Developer Addon installiert ist, gibt es über zusätzliche Optionen in den Einstellungen des Theme-Addons die Möglichkeit, die Synchronisierung der Templates, Module, Actions und YForm E-Mail Templates in den Theme-Ordner umzuleiten. Die Synchronisierung kann für jede der drei Gruppen einzeln aktiviert werden. Wenn die Synchronisierung in den Theme-Ordner aktiviert ist, wird die entsprechenden Synchronisierung in den Data-Ordner deaktiviert, um das gegenseitige Überschreiben der Daten zu vermeiden.
API
Um die Verwaltung der Ordner zu erleichtern stehen folgende PHP-Klassen und -Methoden zur Verfügung:
theme_url
Analog rex_url werden relative URLs zurückgegeben.
// $filename ist immer optional und kann auch ein Pfad sein.
$filename = "path/to/file";
// Gibt eine URL im Ordner "theme" zurück.
$url = theme_url::base($filename);
// Gibt eine URL im Ordner "theme/public/assets" zurück.
$url = theme_url::assets($filename);
theme_path
Analog rex_path werden absolute Serverpfade zurückgegeben.
// $filename ist immer optional und kann auch ein Pfad sein.
$filename = "path/to/file";
// Gibt einen Pfad im Ordner "theme" zurück.
$path = theme_path::base($filename);
// Gibt einen Pfad im Ordner "theme/private/lib" zurück.
$path = theme_path::lib($filename);
// Gibt einen Pfad im Ordner "theme/private/inc" zurück.
$path = theme_path::inc($filename);
// Gibt einen Pfad im Ordner "theme/private/lang" zurück.
$path = theme_path::lang($filename);
// Gibt einen Pfad im Ordner "theme/private/fragments" zurück.
$path = theme_path::fragments($filename);
// Gibt einen Pfad im Ordner "theme/private/ytemplates" zurück.
$path = theme_path::ytemplates($filename);
// Gibt einen Pfad im Ordner "theme/public/assets" zurück.
$path = theme_path::assets($filename);
theme_setting
Eine einfache Registry mit der Möglichkeit beim Abruf Default-Werte zu definieren. Sie soll die Übergabe von Daten erleichtern. So ist es möglich, über z.B. functions.php Modulen und Templates Einstellungen zu übergeben, z.B. können einem generischen Bildmodul je nach Kategorie oder Spaltenposition verschiedene Bildtypen übergeben werden.
// Erstellt einen Eintrag. Die Daten müssen immer als alphanumerisches Array übergeben werden.
// Wird die Methode mehrfach mit dem gleichen Schlüssel aufgerufen,
// werden die Daten über array_merge zusammengeführt.
theme_setting::setKey($key, [
'index1' => 'data1',
'index2' => 'data2',
...
]);
// Holt einen Eintrag. Dabei kann ein Array mit Vorgabe-Werten übergeben werden.
// Die Arrays werden über array_merge() zusammengeführt.
// Ist ein Schlüssel in beiden Arrays vorhanden, wird der des Default-Arrays
// mit denen des ausgelesenen Arrays überschrieben.
theme_setting::getKey($key, [
'index1' => 'data1',
'index2' => 'data2',
...
]);