Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich bin wie in Zugriff auf Variablen in der Auftragsplanung vorgegangen.
ich habe über den Variablen-Tab in der Generierungsaktion eine Variable gesetzt:
Auf diese greife ich wie folgt in den Projekteinstellungen zu:
$CMS_SET(void,#global.logWarning("job_isDebugEnabled: " + job_isDebugEnabled))$
Im Log bekomme ich dann folgende Meldung:
WARN 16.04.2018 09:15:34.773 (de.espirit.firstspirit.generate.SiteProduction): job_isDebugEnabled: null
Wir nutzen folgende Version:
FirstSpirit SiteArchitect 5.2.905.76007
Version Server: 5.2.905.76007
Java Version: 1.8.0_121 32bit Oracle Corporation
Betriebssystem: Windows 10 10.0 x86
Hat hier jemand noch eine Idee?
Gruß
Christian
PS
In der Dokumentation zu dieser Version findet man im Kapitel "9.6.4 Konfiguration des Generierungsauftrags" (immernoch) keinen Hinweis zur Verwendung der Variablen.
Deine Vermutung ist korrekt. Im Seitentemplate ist die Variable sichtbar.
Was aber dieses Feature irgendwie absurd macht, da es dann ja nicht für "Einmal-Einstellungen" in den Projekteinstellungen zu verwenden ist.
Gelöst habe ich das wie folgt:
Zusätzliche Aktion "Script ausführen" vor der Aktion "Generierung ausführen" mit folgendem Code eingefügt:
context.setProperty("context_isDebugEnabled", true);
Und Folgender Schnipsel in die Projekteinstellungsseite:
$-- please overrite this value by using script task and set context variable "context_isDebugEnabled", example: context.setProperty("context_isDebugEnabled", true); --$
$CMS_SET(set_isDebugEnabled, if(#global.scheduleContext.getProperty("context_isDebugEnabled").isEmpty, false, #global.scheduleContext.getProperty("context_isDebugEnabled")))$
$CMS_SET(#global.debugMode, set_isDebugEnabled)$
$CMS_SET(void,
if(set_isDebugEnabled,
#global.logWarning("debug mode ON - do not use this in production"),
#global.logInfo("debug mode OFF")))$
Hallo Christian,
an welcher Stelle schaust du Dir aktuell die Log-Meldung an? In der Vorschau oder ist das eine Logausgabe während der Generierung/der Ausführung des Auftrages?
Gruß,
Daniel
In das Log des Generierungsauftrages.
Kannst du dir mal die Variable in einer Seite ausgeben? Ich vermute, im Kontext der Projekteinstellungsseite sind die Variablen noch nicht verfügbar.
Deine Vermutung ist korrekt. Im Seitentemplate ist die Variable sichtbar.
Was aber dieses Feature irgendwie absurd macht, da es dann ja nicht für "Einmal-Einstellungen" in den Projekteinstellungen zu verwenden ist.
Gelöst habe ich das wie folgt:
Zusätzliche Aktion "Script ausführen" vor der Aktion "Generierung ausführen" mit folgendem Code eingefügt:
context.setProperty("context_isDebugEnabled", true);
Und Folgender Schnipsel in die Projekteinstellungsseite:
$-- please overrite this value by using script task and set context variable "context_isDebugEnabled", example: context.setProperty("context_isDebugEnabled", true); --$
$CMS_SET(set_isDebugEnabled, if(#global.scheduleContext.getProperty("context_isDebugEnabled").isEmpty, false, #global.scheduleContext.getProperty("context_isDebugEnabled")))$
$CMS_SET(#global.debugMode, set_isDebugEnabled)$
$CMS_SET(void,
if(set_isDebugEnabled,
#global.logWarning("debug mode ON - do not use this in production"),
#global.logInfo("debug mode OFF")))$
Was aber dieses Feature irgendwie absurd macht, da es dann ja nicht für "Einmal-Einstellungen" in den Projekteinstellungen zu verwenden ist.
Der Einsatz-Zweck ist Variablen zu überschrieben, die im Struktur-Root-Knoten gesetzt sind.
Hallo Peter,
dann bitte das in eurer Dokumentation auch genauso beschreiben.
Eine weitere Ergänzung, dass die Variablen nicht in den Projekteinstellungen zur Verfügung stehen, wäre sicherlich ebenfalls hilfreich.
Oder ihr denkt ggf. darüber nach sie auch dort verfügbar zu machen.
Meine Stimme habt ihr! ^^
Gruß
Christian
Hallo Christian,
Meine Stimme habt ihr! ^^
Das ist ja ein valider Einsatzzweck, da kann ich mir gut vorstellen, dass da noch mehr Stimmen für einsammeln kannst.
Wichtig ist halt, das beide Einsatzzwecke funktionieren.
Stell doch bitte einen Feature-Request dafür ein. Du kannst dabei auf diese Diskussion verweisen und das Ticket CORE-7867 referenzieren.
Den Hinweis für die Dokumentation nehme ich davon unabhängig gerne auf.
Danke und Gruß,
Peter
Hallo Peter,
ist hier zu finden: Generierungsaktionsvariable in den Projekteinstellungen verwenden
Gruß
Christian
Auch wenn es schon eine Weile her ist, ich hatte dies für mich einmal so lösen können, um in den Projekteinstellungen an die entsprechenden Variabeln zu kommen:
- //Abruf
- $CMS_SET(generationContextVars,{:})$
- $CMS_FOR(var,#global.scheduleContext().getTask().getVariables())$
- $CMS_SET(void,generationContextVars.put(var.getKey(),var.getValue()))$
- $CMS_END_FOR$
- //Zugriff
- $CMS_VALUE(generationContextVars.dv_varName)$
Funktioniert natürlich nur, wenn eine Generierung läuft; für die Vorschau sollte mit $CMS_IF(#global.preview)$ noch eine Alternative eingebaut werden.
Gruß,
René