settings.xml
Mit der settings.xml können Sie eigene Einstellungen für Ihr Plugin / Paket definieren. Zusätzlich ist es möglich, den Aufbau des Einstellung-Panels zu bestimmen.
Legen Sie dazu in das root Verzeichnis Ihres Plugin / Paket eine settings.xml an und definieren Sie hier Ihre Einstellungen. Die Einstellungen werden automatisch vom QUIQQER System eingelesen.
Aufbau
<?xml version="1.0" encoding="UTF-8"?>
<quiqqer>
<settings>
<config name="my_conf_name">
<section name="first_section">
<conf name="var_1">
<type><![CDATA[string]]></type>
<defaultvalue>default value</defaultvalue>
</conf>
<conf name="var_2">
<type><![CDATA[integer]]></type>
</conf>
<conf name="var_3">
<type><![CDATA[bool]]></type>
</conf>
</section>
<section name="second_section">
<conf name="var_1">
<type><![CDATA[string]]></type>
</conf>
<conf name="var_2">
<type><![CDATA[integer]]></type>
</conf>
<conf name="var_3">
<type><![CDATA[bool]]></type>
</conf>
</section>
</config>
<window>
<title>My Settings</title>
<params>
<icon>URL_BIN_DIR/16x16/settings.png</icon>
</params>
<categories>
<category name="first_settings">
<text>Allgemein</text>
<icon>URL_BIN_DIR/22x22/quiqqer.png</icon>
<settings title="first_setting_section" name="first_setting_section">
<title>My First Settings</title>
<input conf="first_section.var1" type="checkbox">
<text>Here is a title text</text>
<description>
Here is a description
</description>
</input>
</settings>
<settings title="second_setting_section" name="second_setting_section">
<title>My second Settings</title>
<input conf="first_section.var2" type="text">
<text>Verwendete Template Engine</text>
</input>
<input conf="first_section.var3" type="checkbox">
<text>Smarty Compile Prüfung</text>
</input>
</settings>
</category>
<category name="second_settings">
<text>More Settings</text>
<icon>URL_BIN_DIR/22x22/database.png</icon>
<settings title="database" name="database">
<title>Some Settings</title>
<input conf="second_section.var1" type="text">
<text>Datenbank Typ</text>
</input>
<input conf="second_section.var2" type="text">
<text>Host</text>
</input>
<input conf="second_section.var3" type="text">
<text>Datenbank Name</text>
</input>
<text>
<locale group="" var=""/>
</text>
</settings>
</category>
<category
name="third_settings"
require="package/QUIBASED_Package"
>
<text>Button text</text>
<icon>icon-button-icon</icon>
</category>
<category name="fourth_settings">
<text>Element ohne Label</text>
<!-- Dieses Feld besitzt kein Label (linken Bereich in der Tabelle) -->
<input conf="second_section.var4" type="text" label="false" />
</category>
<category name="fourth_settings"
click="functions/myFunction"
>
<text>Element ohne Label</text>
<!-- Dieses Feld besitzt kein Label (linken Bereich in der Tabelle) -->
<input conf="second_section.var4" type="text" label="false" />
</category>
</categories>
</window>
</settings>
</quiqqer>
<quiqqer>
Mit <settings> beginnen Sie die XML-Deklarationen für das QUIQQER System.
<settings>
Mit <settings> beginnen Sie die Definition der Einstellungen. Das <settings> Node kann <config> und oder <window> enthalten. Diese bestimmen welche Einstellungen es gibt und wie diese im Administrationsbereich dargestellt werden.
<config>
In dem <config> Node legen Sie fest, welche Einstellungen das Plugin / Paket mitbringt. Das Attribut name="" definiert den Namen der Konfigurationsdatei. Verwenden Sie zum Beispiel attribute="my_plugin", legt QUIQQER eine Konfigurationsdatei mit dem Namen my_plugin.ini.php an. Hier werden die definierten Konfigurationen gespeichert und wieder ausgelesen.
Die angelegte Konfigurationen können auch direkt auf dem Filesystem editiert werden.
<section> und <conf>
Damit Sie in ini.php Dateien auch Sektionen anlegen können, geben Sie Konfigurationsparameter wie folgt an: Entweder in einer <section> oder den Parameter direkt über <conf>.
Das name
-Attribut darf nur Ziffern, die Kleinbuchstaben a-z, die Großbuchstaben A-Z und Unterstriche enthalten. Somit sind bspw. Punkte (.) nicht erlaubt, sodass die Einträge übersprungen werden.
Die folgende ini Datei:
[section]
var1="text"
var2="text"
var3="text"
Wäre die folgende XML Definition
<section name="section">
<conf name="var_1">
<type><![CDATA[string]]></type>
</conf>
<conf name="var_2">
<type><![CDATA[string]]></type>
</conf>
<conf name="var_3">
<type><![CDATA[string]]></type>
</conf>
</section>
<conf name="conf_name">
<window>
Settings per PHP auslesen
Angenommen es ist folgende settings.xml
gegeben:
<?xml version="1.0" encoding="UTF-8"?>
<quiqqer>
<settings>
<config>
<section name="meineSektion">
<conf name="meineEinstellung">
<type><![CDATA[integer]]></type>
<defaultvalue>42</defaultvalue>
</conf>
</section>
</config>
. . .
</settings>
</quiqqer>
Dann lässt sich der Wert, der unter meineEinstellung
in meineSektion
gespeichert wird, wie folgt auslesen:
$Package = QUI::getPackage('quiqqer/meinPaket');
$Config = $Package->getConfig();
$meinWert = $Config->getValue('meineSektion', 'meineEinstellung');
Wichtig:
Wird beim <settings>
-Tag das name=
-Attribut gesetzt, so funktioniert die obige Variante nicht mehr.
Dies kommt daher, dass die Einstellungen dann in einer separaten Datei gespeichert werden, welche von der obigen Funktion nicht ausgelesen wird.
Hier muss dann mit QUI::getConfig('pfad/zur/config/ab/cms/dir')
gearbeitet werden.
Ihre Config-Datei finden Sie im etc/
-Ordner unter dem Namen, den Sie für das name=
-Attribut gesetzt haben.
Mit PHP aus dem XML HTML machen
Damit das Rad nicht neu erfunden werden muss, existieren in PHP Interpreter Hilfsklassen.
QUI\Utils\XML\Settings
stellt die Grundlage bereit, damit settings.xml interpretiert werden können.
Komplettes HTML bekommen
<?php
$result = QUI\Utils\XML\Settings::getInstance()->getCategoriesHtml($files);
Komplettes HTML einer einzelnen Kategorie bekommen
<?php
$category = 'NameOfTheCategory';
$result = QUI\Utils\XML\Settings::getInstance()->getCategoriesHtml($files, $category);
Collection aller Kategorien in den XML Files bekommen
<?php
$Result = QUI\Utils\XML\Settings::getInstance()->parseCategoriesToCollection($files);
$result = $Result->toArray();
Eigenen XML Pfad für eigene Settings verwenden
<?php
$Settings = QUI\Utils\XML\Settings::getInstance();
$Settings->setXMLPath('//MyAwesomePlugin/settings/window');
$Result = $Settings->parseCategoriesToCollection($files);
$result = $Result->toArray();