Namespaces für Plugins
Verfasst: Mi 2. Apr 2014, 13:51
Ich stelle gerade fest, dass sich zwei Plugins nicht miteinander vertragen.
In dem ersten Plugin habe ich unter anderen folgende Variablen Deklariert und Definiert:
In einem anderen Plugin bin ich ähnlich vorgegangen:
Nun verhält sich Contenido so, dass das Plugin, welches zuletzt in der Reihenfolge (A-Z) geladen wird, auch die variablenbestückungen bestimmt.
Klar kann man hier mit einem Array arbeiten, den sich an den Plugin-Namen anlehnt.
Aber nur mal so aus Interesse: Gibt es da noch andere Abgrenzungsmöglichkeiten, damit Variablen die in einem Plugin definiert und genutzt werden auch in diesem Scope bleiben?
Sonst steigt ja mit wachsender Anzahl und Komplexität der Plugins die Wahrscheinlichkeit, dass sich unangenehme Nebeneffekte mit anderen Programmbestandteilen ergeben.
Habe es für meinen Fall erst mal so gelöst, dass ich einen Array $plugin['pluginName'] nun als Pluginspezifischen Datenspeicher nutze.
Sollte dies in Zukunft die favorisierte Lösung sein, wäre es gut, wenn dies in die Doku für den Bereich https://docs.contenido.org/display/CONDEVE/Plugin%20 aufgenommen würde.
In dem ersten Plugin habe ich unter anderen folgende Variablen Deklariert und Definiert:
Code: Alles auswählen
// Template
$plugin_name = "xst_contactTeaser_pro";
$tplName = "standard"; // define Template-Folder
$tplPath = cRegistry::getBackendUrl().$cfg['path']['plugins'].$plugin_name."/templates/".$tplName;
Code: Alles auswählen
// Template
$plugin_name = "xst_contactTeaser_pro_jobs";
$tplName = "standard"; // define Template-Folder
$tplPath = cRegistry::getBackendUrl().$cfg['path']['plugins'].$plugin_name."/templates/".$tplName;
Klar kann man hier mit einem Array arbeiten, den sich an den Plugin-Namen anlehnt.
Aber nur mal so aus Interesse: Gibt es da noch andere Abgrenzungsmöglichkeiten, damit Variablen die in einem Plugin definiert und genutzt werden auch in diesem Scope bleiben?
Sonst steigt ja mit wachsender Anzahl und Komplexität der Plugins die Wahrscheinlichkeit, dass sich unangenehme Nebeneffekte mit anderen Programmbestandteilen ergeben.
Habe es für meinen Fall erst mal so gelöst, dass ich einen Array $plugin['pluginName'] nun als Pluginspezifischen Datenspeicher nutze.
Code: Alles auswählen
// Template
$plugin['xst_contactTeaser_pro']['tplName'] = "standard"; // define Template-Folder
$plugin['xst_contactTeaser_pro']['tplPath'] = cRegistry::getBackendUrl().$cfg['path']['plugins']."xst_contactTeaser_pro/templates/".$plugin[$plugin_name]['tplName'];