Scripting
Als Administrator können Sie auf unserer DemoSite ein Templated Document oder Templated Portlet hinzufügen, das Ihnen erlaubt, dynamische Inhalte in Plone zu erstellen.
Anwendungsfälle
- Verwenden von ungefiltertem HTML (<script> u.a.).
- Hinzufügen dynamischher Listen und Tabellen auf Seiten.
- Hinzufügen dynamischer E-Mail-Texte, Betreffzeilen und Empfänger in Aktionen von Regeln.
- Unterschiedliche Texte für angemeldete und nicht-angemeldete Nutzer anzeigen.
- Erstellen einfacher Text-Portlets mit dynamischen Inhalten.
Beispiel
Um zum Beispiel eine Liste aller Elemente im Ordner Effektive Bedienung zu erhalten, können Sie im Haupttext eines Templated Documents folgendes eingeben:
{{ list_folder("effektive-bedienung").decode("utf-8") }}
Elemente
Dokumente
Hierzu kann der Artikeltyp Templated Document verwendet werden
Felder und Widgets
TemplatedTextField erlaubt Ihnen, in einem Templated Document dynamische Inhalte einzugeben, aus denen dann der Inhalt eines TextField() in Ihrem eigenen Artikeltyp generiert werden kann.
Portlets
Templated Portlet ermöglicht das Scripting auch in Portlets. Damit sind z.B. auch folgende Anwendungsfälle möglich:
- Anzeigen der Portlets abhängig von der gewählten Sprache
- Anzeige der Portlets nur für spezifische Nutzer
- Anzeige der Portlets nur zu einer bestimmten Zeit
E-Mails
Für Regeln kann die Aktion Templated Mail Action verwendet werden um Skripting auch in den Feldern recipients, subject und message innerhalb von E-Mails zu verwenden.
Dokumentation
Im folgenden werden die verfügbaren Variablen und Funktionen beschrieben.Beachten Sie bitte, dass diese Dokumentation Tags als Funktionen beschreibt und zum Rendern der Tags ggf. () hinzugefügt werden muss.
Für das Templated Document stehen folgende Variablen von Plone zur Verfügung:
- portal
- Die Plone Site, z.B.
{{ portal.Title().decode("utf-8") }} - context
- Der Kontext des Templated Documents, z.B.
{{ context.Title().decode("utf-8") }}
{{ context.absolute_url().decode("utf-8") }} - portal_url
- Die URL der Plone-Site, z.B.
<a href="{{ portal_url() }}">Home</a> - object_url
- Die URL des Objekts.
- user
- Der aktuelle Nutzer
- request
- Gibt Objekte der Site entsprechend der Anfrage zurück, z.B.
{{ query({"portal_type":"News Item","sort_on":"Date","sort_order":"reverse"}) }} - portal_state
- Informationen über den aktuellen Status der Site wie z.B.
- Ist der Nutzer angemeldet?
- Welches ist die navigation_root?
- Titel des Portals
- Aktive Sprache?
Da Jinja die Strings als ASCII oder Unicode erwartet, müssen Sie in allen Ausgaben, die Umlaute o.ä. enthalten können, diese nach UTF-8 dekodieren.
Darüberhinaus können z.B. auch Viewlets und Provider angezeigt werden:
{{ viewlet("portal.logo") }}
{{ provider("plone.rightcolumn") }}
Weitere Informationen
- Templated Documents liegt das Produkt collective.easytemplate zugrunde. Hier erhalten Sie auch eine umfangreichere Dokumentation.
- Für die Erstellung der dynamischen Inhalte wird die Jinja 2 Template Engine verwendet und bietet eine einfache nicht-XML-Syntax. Eine vollständige Dokumentation erhalten Sie in der Template Designer Documentation.