vorschaubezogene #global-Aufrufe
Inhaltsverzeichnis |
Die Vorschau einer Seite soll häufig andere Funktionalitäten besitzen als der veröffentlichte bzw. generierte Stand dieser Seite. Beispielsweise können innerhalb einer Vorschau Statusinformationen oder eine Bearbeitungsfunktionalität für den Redakteur erwünscht sein.
Eine weitere Anforderungen ist die sprachabhängige Vorschauerzeugung. Es ist beispielsweise möglich, dass sich das Layout einer Seite, abhängig von der Sprache unterscheidet oder dass die Sprache die Ausgabeformatierung beeinflusst. Außerdem kann verhindert werden, dass eine spezielle Seite in einem bestimmten Vorlagensatz erzeugt wird.
Um diese und weitere Anforderungen zu erfüllen, bietet das Systemobjekt #global die Möglichkeit, auf Informationen in der Vorschau, Veröffentlichung und Generierung zuzugreifen und auf diese Einfluss zu nehmen.
Die nachfolgende Tabelle zeigt die vorschaubezogenen Operationen:
Parameter
Aufruf | Bedeutung | Rückgabedatentyp |
---|---|---|
#global.context | Liefert den aktuellen Kontext zurück. | |
#global.context("BEZEICHNER") | Liefert einen bestimmten Kontext zurück. | |
#global.dumpcontext | Ausgabe aller Kontextinformationen zur leichteren Fehlersuche | String |
#global.dumpcontext("TRENNZEICHEN") | Ausgabe aller Kontextinformationen zur leichteren Fehlersuche, jedoch mit Angabe von Trennzeichen für die Ausgabe der einzelnen Zeilen, z. B. <br>. | String |
#global.encoding | Liefert das angegebene HTML-Encoding für die Sprache zurück, die gerade erzeugt wird, z. B. ISO-8859-1, UTF-8. | String |
#global.is("...") | Ermittelt die Ausführungsumgebung anhand eines Schlüsselbegriffs.
Beispiel: Die Verwendung des Schlüsselbegriffs WEBEDIT ermittelt, ob eine HTML-Seite im SiteArchitect oder im ContentCreator geöffnet wurde. Wurde die Seite im ContentCreator geöffnet, liefert der Ausdruck | Boolean |
#global.isRelease | Ermittelt, ob es sich bei der Anzeige des Objekts (z. B. Seite oder Seitenreferenz) um den Freigabestand handelt oder nicht. | Boolean |
#global.language | Liefert die Sprache zurück, die gerade erzeugt wird. | |
#global.language.abbreviation | Liefert das Kürzel der Sprache zurück, die gerade erzeugt wird, z. B. DE, EN usw. | String |
#global.language.name | Liefert den Namen der Sprache zurück, die gerade erzeugt wird, z. B. Deutsch, English usw. | String |
#global.now | Liefert das aktuelle Datum zurück. | |
#global.preview | Ermittelt, ob es sich bei der Anzeige des Objekts (z. B. Seite oder Seitenreferenz), um eine Vorschau handelt oder nicht. | Boolean |
#global.previewRulesEvaluation | De-/aktiviert die Regelauswertung in der Vorschau des ContentCreator. | Boolean |
#global.project | Liefert das Projekt zurück. | |
#global.project.id | Liefert die ID des Projekts zurück. | |
#global.scheduleContext | Zugriff auf Informationen von Generierungsaufträgen: | |
#global.startDate | Synonym für #startdate | |
#global.version | Liefert die FirstSpirit-Versionsnummer zurück, z. B. 5.0.14 | String |
Erweiterter Fehler-Protokollierungs-Modus
Der erweiterte Fehler-Protokollierungs-Modus (siehe dazu auch Kapitel Scripting) wird mit dem folgenden Ausdruck aktiviert:
$CMS_SET(#global.debugMode, true)$
Abbruch einer Generierung
Es besteht die Möglichkeit, in einer Vorlage die Erzeugung einer Generierung zu unterbinden. Dies ist dann sinnvoll, wenn für den Vorlagensatz einer Seitenvorlage keine Erzeugung gewünscht wird (z. B. keine PDF-Version eines Dokumentes usw.)
Der Ausdruck, um die Erzeugung zu unterbinden lautet:
$CMS_SET(#global.stopGenerate, true)$
Regelauswertung während der Vorschaugenerierung im ContentCreator deaktivieren
Mit dem Parameter previewRulesEvaluation kann im ContentCreator die Regelauswertung (siehe dazu auch Kapitel Regeln) während der Generierung der Vorschau deaktiviert werden. Dies kann in Fällen sinnvoll sein, in denen die Regelauswertung zu einer rechenzeitintensiven Berechnung der Vorschau führt und so die Performance des ContentCreator beeinträchtigen kann.
Diese Funktionalität bezieht sich nur auf die Vorschau des ContentCreator; in Formularen in ContentCreator und in SiteArchitect wird die Regelauswertung weiterhin durchgeführt und etwaige Regelverletzungen werden weiterhin visualisiert. |
Hinweis: Für Inhalte aus Tabellenvorlagen (Datensätze) werden Regelverletzungen in der Vorschau nicht visualisiert.
Mögliche Werte des Parameters sind:
- true: Dies ist die Standardeinstellung, wenn #global.previewRulesEvaluation nicht angegeben wird: Die auf dem Register „Regeln“ definierten Regeln werden uneingeschränkt ausgewertet und visualisiert.
- false: Die Regelauswertung wird für die ContentCreator-Vorschaugenerierung deaktiviert. In Formularen im ContentCreator sowie im SiteArchitect wird die Regelauswertung weiterhin durchgeführt und etwaige Regelverletzungen werden weiterhin visualisiert.
Beispiel:
$CMS_SET(#global.previewRulesEvaluation, false)$
Bedeutung: Für alle diesem Aufruf folgenden editorId()-Angaben wird die Regelauswertung in der Vorschau des ContentCreator deaktiviert, z. B.
$CMS_SET(#global.previewRulesEvaluation, false)$
<div$CMS_VALUE(editorId())$>
NO VALIDATION
</div>
Für eine differenzierte Auszeichnung einer Vorlage kann #global.previewRulesEvaluation mit dem Parameter previewRulesEvaluation in der Funktion editorId() kombiniert werden, z. B.:
$CMS_SET(#global.previewRulesEvaluation, true)$
<div$CMS_VALUE(editorId())$>
WITH VALIDATION
</div>
<div$CMS_VALUE(editorId(previewRulesEvaluation:false))$>
NO VALIDATION
</div>
oder
$CMS_SET(#global.previewRulesEvaluation, false)$
<div$CMS_VALUE(editorId())$>
NO VALIDATION
</div>
<div$CMS_VALUE(editorId(previewRulesEvaluation:true))$>
WITH VALIDATION
</div>
An die Auswertung von Regeln ist eine Visualisierung gekoppelt: im ContentCreator werden Regelverletzungen auf der Vorschauseite im Seiten-Status angezeigt sowie durch ein entsprechendes Icon und Highlighting markiert (siehe dazu auch Seite Darstellung im ContentCreator).
Wird die Regelauswertung während der Generierung durch die oben genannten Möglichkeiten deaktiviert, so werden die dadurch nicht gemeldeten Validierungsprobleme in ContentCreator auch nicht angezeigt.
Aktivierung von LiveEdit
LiveEdit basiert auf denselben „editorIds“ wie Content Highlighting und EasyEdit.
Damit diese „editorIds“ auch außerhalb einer Vorschau erzeugt werden, muss folgender Ausdruck in den gewünschten Seitenvorlagen ergänzt werden:
$CMS_SET(#global.forceEditorIds, true)$
Anpassung der Stack-Größe
Aus Sicherheitsgründen ist die Stack-Größe in FirstSpirit begrenzt. An manchen Stellen kann es zu einer „Endless loop“-Exception kommen, wenn durch Schachtelungen von Vorlagen diese Stack-Größe überstiegen wird. Dies kann beispielsweise der Fall bei Eingabekomponenten der Typen CMS_INPUT_DOM oder CMS_INPUT_DOMTABLE sein, in denen geschachtelte Listen verwendet werden. Es kann zu einer Meldung der Art kommen:
19.11.2015 16:07:07.808 ERROR ($CMS_VALUE(#content)$ at 5, 5): Endless loop in template?
In diesem Fall werden Inhalte nur unvollständig ausgegeben.
Um die Stack-Tiefe zu erhöhen, kann #global.maxStackSize in der Vorlage vergrößert werden, z. B.
$CMS_SET(#global.maxStackSize, 200)$
Standardwert der Stack-Tiefe in der Vorlage ist 75.
Der Standardwert der Stack-Tiefe kann serverweit über den Parameter
generate.defaultMaxStackSize
in der Datei fs-server.conf angepasst werden (Server (→Dokumentation für Administratoren)).
Siehe dazu auch Methode setMaxStackSize, FirstSpirit Access-API, Interface Evaluator, Package de.espirit.firstspirit.access.template.
Beispiele
Nachfolgend werden einige Beispiele zur Verwendung der Anweisung innerhalb von Vorlagen gezeigt. Die Beispiele sollen die konkrete Auswirkung der Anweisung verdeutlichen und eine Hilfe für den Vorlagenentwickler bei der Erstellung eigener Vorlagen sein.
Für die Verwendung innerhalb eines Projekts, müssen die hier gezeigten Beispiele angepasst werden! Beispielsweise müssen Variablennamen auf die spezifischen Variablennamen des Projekts geändert werden, in dem die Anweisung verwendet werden soll. |
1. Beispiel: Sprachspezifische Ausgabe des Datums
$CMS_IF(#global.language.abbreviation == "DE")$
$CMS_VALUE(#global.now.format("dd.MM.yyyy"))$
$CMS_ELSE$
$CMS_VALUE(#global.now.format("MM/dd/yyyy"))$
$CMS_END_IF$
Im Beispiel wird in der Sprache mit dem Kürzel DE das aktuelle Datum in der Schreibweise Tag, Monat und Jahr – getrennt durch einen Punkt – dargestellt. Für alle anderen Sprachen wird das aktuelle Datum in der Schreibweise Monat, Tag und Jahr ausgegeben.
Ausgabe für Sprache mit dem Kürzel DE:
22.05.2007
Ausgabe für alle anderen Sprachen
05/22/2007
2. Beispiel: Begrüßung in der Vorschau
$CMS_IF(#global.preview)$
Herzlich Willkommen auf den Seiten unseres Intranets
$CMS_END_IF$
In der Vorschau wird der Satz Herzlich Willkommen auf den Seiten unseres Intranets ausgegeben.
3. Beispiel: Dynamisches HTML-Gerüst
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="$CMS_VALUE(#global.language.abbreviation.toLowerCase)$" lang="$CMS_VALUE(#global.language.abbreviation.toLowerCase)$">
<head>
...
<meta http-equiv="content-type" content="text/html; charset=$CMS_VALUE(#global.encoding)$" />
...
Abhängig von der generierten Sprache wird die Abkürzung der Sprache in Kleinbuchstaben für die XML-Sprachangaben verwendet.
Weiterhin wird das angegebene Encoding der Sprache verwendet.
Ausgabe:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
...
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
...