Redaxo 5 Addon zum Verwalten von Design-Einstellungen für Module
Version 2.0 enthält einige Breaking Changes. Wer bisher die Version 1.2 genutzt hat kann zwar updaten, die neuen Funktionen greifen aber nur, wenn die Syntax und Methoden der Version 2.0 verwendet werden!
- Verwaltung von wiederkehrenden Moduloptionen (z.B. Abstände, Breite, Hintergrundfarbe)
- Generiert in der Moduleingabe unten ein Akkordeon mit den definierten Optionen
- Standardoptionen werden direkt über das Addon geladen
- Es können Optionen für ein ganzes Projekt festgelegt werden
- Es können Optionen für einzelne Module festgelegt werden
- Es können Optionen überschrieben werden (z.B. im Projekt Abstand nach unten mb-5 aber bei einem speziellen Modul mb-3)
- Installation legt eine Beispieldatei redaxo/data/addons/nv_modulesettings/modulesettings.json.example an. Diese kann umbenannt werden (modulesettings.json) um beispielhafte Optionen einzublenden
Das Addon benötigt die Addons "Developer" und "Theme".
Wenn man das Addon für ein spezifisches Modul verwenden möchte, legt man in den Modulordner eine Datei modulesettings.json ab.
Generiert im Input automatisch das gesamte Formular
<?php
$oSettings = new nvModuleSettings(
REX_MODULE_ID,
rex_var::toArray('REX_VALUE[20]')
);
echo $oSettings->buildForm();
?>
Um auf die gespeicherten Werte zuzugreifen, muss das Addon im Output aufgerufen werden.
<?php
$oSettings = new nvModuleSettings(
REX_MODULE_ID,
rex_var::toArray('REX_VALUE[20]')
);
$oSettings->getValue('marginBottom'); // Parameter entspricht dem Feldnamen, welchen man zurückbekommen möchte
$oSettings->getValues(); // Gibt alle verfügbaren Parameter zurück
?>
Im Ansichts- (nicht Bearbeitungs-) modus können alle zur Verfügung stehenden Keys und ihre Werte ausgegeben werden.
<?php
$oSettings = new nvModuleSettings(
REX_MODULE_ID,
rex_var::toArray('REX_VALUE[20]')
);
$oSettings->getBackendSummary();
?>
Die Dateien werden der Hierarchiebene nach eingelesen und verarbeitet. So können spezifische Angaben zu einem einzelnen Modul globale Angaben überschreiben.
- modulesettings.global.json (im Addonordner) -- modulesettings.json (im
Addonordner) --- modulesettings.json (im Modulordner)
Globale Settings (z.B. für verschiedene Projekte)
Liegt im Addon-Ordner unter theme/private/redaxo/modules/modulesettings.global.json
Projektweite Settings
Liegt im Addon-Ordner unter theme/private/redaxo/modules/modulesettings.json
Spezifische Modulsettings
Datei modulesettings.json im Modulordner theme/private/redaxo/modules/Modulordner anlegen
Abstandsdefinition im Projekt (theme/private/redaxo/modules/modulesettings.json)
{
"key": "marginBottom",
"label": "Block Außenabstand Unten",
"type": "select",
"data": {
"mb-0": "Kein",
"mb-1": "Sehr klein",
"mb-2": "Klein",
"mb-3": "Mittel",
"mb-4": "Groß",
"mb-5": "Sehr groß"
},
"default": "mb-3"
}
Überschreiben des Standardabstands für ein einzelnes Modul (theme/private/redaxo/modules/Modulordner/modulesettings.json)
{
"key": "marginBottom",
"default": "mb-5"
}
Angenommen man hat eine Option mit Auswahlfeldern, die man bei einer anderen Option wiederverwenden möchte. Dann können mit dem Key 'parent' Optionen übernommen werden
{
"key": "marginTop",
"parent": "marginBottom",
"label": "Block Außenabstand oben",
"default": "mb-3"
}
Optionen können Kategorien zugeordnet werden. Kategorien werden in Tabs dargestellt.
{
"categories": [
{
"key": "dimension",
"label": "Abstände & Größen",
"icon": "fa fa-arrows"
},
{
"key": "design",
"label": "Hintergrund",
"icon": "fa fa-paint-brush"
},
{
"key": "other",
"label": "Sonstiges",
"icon": "fa fa-cog"
}
]
}
Die Zuordnung einer Option zu einer Kategorie erfolgt durch das Attribut category
{
"key": "marginBottom",
"category": "dimension",
...
}
Optionen können zu Gruppen zusammengefasst werden. Diese Gruppen werden als Akkordeon dargestellt
{
"options": [
{
"category": "design", // Zuordnung zu einer Kategorie
"key": "group_bgcolor", // Schlüssel für showOptions
"type": "group", // muss als group definiert werden
"label": "Farbe", // Label des Akkordeons
"icon": "", // Optionales Icon des Labels
"open": true, // Beim Laden geöffnet (true) oder geschlossen (false)
"options": ["bgColor", "bgColorHEX"] // Array mit allen Optionskeys, welche zusammengefasst werden sollen
}
]
}
Wenn weitere Attribute übergeben werden sollen, muss der angezeigte Wert als "label" übergeben werden. Die anderen Werte werden in die Option übernommen
{
"key": "marginBottom",
"label": "Block Außenabstand Unten",
"type": "select",
"data": {
"mb-0": "Kein",
"mb-1": "Sehr klein",
"mb-2": {
"label": "Klein",
"data-thumbnail": "/media/icon-chrome.png",
"data-icon": "glyphicon glyphicon-eye-open",
"data-subtext": "subtext"
},
"mb-3": "Mittel",
"mb-4": "Groß",
"mb-5": "Sehr groß"
},
"default": "mb-3"
}
Im Ordner des Moduls eine leere modulesettings.ignore.json ablegen (theme/private/redaxo/modules/Modulordner/modulesettings.ignore.json)