Zope / Plone
Tipps und Tricks zu Zope/Plone...
Eine External Method in Plone anlegen
Eine External Method ist in Plone genau so ansprechbar wie ein Script (Python), bietet aber die volle Power von Python. Sie besteht aus 2 Teilen, einem Python-Skript im Dateisystem und einem Wrapper-Objekt in der Datenbank. Nachfolgend wird erleutert wie man beides in einem eigenen Package verwendet.
Zope: Annotations zum speichern von Daten an Objekten
Annotations sind ein gutes Mittel um Komplexe Datenstrukturen an Objekten zu speichern, von denen das Objekt selbst keine Kenntnis haben muss.
Zope - BrowserViews
Die mit Zope3 eingeführten BrowserViews finden sich heute in vielen Zope Anwendungen wieder. Im folgenden wird der grundlegende Aufbau und die Registrierung Beispielhaft erläutert. Weiterhin wird das Überschreiben von __init__- und __call__-Methoden erklärt.
Plone: redirect mit Script (Python)
Hin und wieder ist es nützlich, einen kleinen Redirect mit einem Script (Python) im ZMI einzusetzen. Nachfolgend ein kleines Beispiel dazu.
Plone: globale Variablen und Methoden
In Plone sind viele globale Variablen verfügbar. Hier sind einige davon aufgelistet.
Plone: OrderableSchemaExtender mit überschriebenem Mutator
Manchmal benötigt man zusätzliche Felder bei Archetypes basierten Inhalten, wie den Plone default Inhalten Seite, Nachricht usw. Dies läßt sich mit dem archetypes.schemaextender realisieren. Nachfolgend ein Beispiel für ein neues Feld welches mittels IOrderableSchemaExtender eingebaut wird. Weiterhin wird der Mutator des Feldes überschrieben um die Daten nachzuverarbeiten.
Plone: local utilities erzeugen & verwenden
Local utilities können Daten persistent halten und können daher auch als zentraler Ort für z.B. Status Flags verwendet werden.
Diazo: alle Stylesheets ausser public.css in Theme übernehmen
Es gibt einige Stylesheets, wie z.B. die public.css, die man nicht in sein Diazo basiertes Theme übernehmen möchte. Dies spart viele Zeilen Stylesheets ein und macht das sonst mühselige Überschreiben von den Plone-Stylesheets unnötig.
Diazo: per xPath ein voran stehendes Element auswählen
Um z.B. das Element <h5 class="hiddenStructure">Sektionen</h5> ins Theme zu übertragen, welches sich genau vor dem Element <ul id="portal-globalnav"> befindet, kann folgende Diazo-Anweisung verwendet werden.
Plone: Portlets in Diazo Regel filtern
Mit Diazo nur bestimmte Portlets ins Theme übernehmen. Hierfür kann man die erweiterten Möglichkeiten von Bedingungen in XPath und CSS3 nutzen.
PloneFormGen: Bestätigung an Formularabsender schicken
PloneFormGen schickt normaler Weise, nur eine E-Mail an den Empfänger des Formulares. Nachfolgend wird erläutert, wie man zusätzlich eine Bestätigungsmail an den Absender schicken kann.
Javascript-/CSS-Dateien per GenericSetup in Plone registrieren
Javascript und CSS-Dateien werden in Plone per GenericSetup, in so genannten ResourceRegistries registriert. Nachfolgend wird erläutert, wie man diese registriert und welche Möglichkeiten es gibt, Einfluss auf die Position in den Registries zu nehmen und wie man die Parameter (Merging allowed, Caching allowed, Inline rendering usw) einsetzen kann.
Plone: Auslesen aller Felder eines Dexterity Objektes.
Manchmal möchte man in einer Plone View über alle Felder eines Dexterity Objektes Interieren. Dazu ist es nötig, eine Liste aller Felder zu haben. Diese kurze Anleitung zeigt, wie man diese Felder bekommt.
URL-Parameter in Zope
Oft steht man vor der Aufgabe, Parameter aus einem URL zu extrahieren oder hinzuzufügen. In Zope existieren dafür die Methoden url_query und make_query, welche im Modul ZTUtils definiert sind.
could not load package ZODB: No module named proxy
Wenn dieser Fehler beim starten des ZEOServers auftritt, liegt es meistens daran, dass man in seinem Pythonpath zope-packages ungewollt (z.B. über Abhängigkeiten) installiert hat.
Plone: portal_squid aus GenericSetup Registry löschen
Portal.CacheSetup setzt sich bei der Installation recht fest in Plone. Nach der Deinstallation, befinden sich manchmal in portal_setup immer noch Reste. Diese führen dann beim installieren/deinstallieren von anderen Erweiterungen zu Fehlern. Nachfolgend wird das manuelle Löschen des Registereintrages gezeigt.
Plone: Makros in Zope Page Templates
Um Doppelungen von Template-Code zu vermeiden, verwendet man in den Templates von Plone oft Makros. Nachfolgend wird erläuter wie man einen Code-Schnipsel als Makro definiert und Ihn mehrfach verwendet.
Plone: Edit-Rahmen deaktivieren
Hin und wieder möchte man den Edit-Rahmen, der unter anderem das Bearbeiten und Hinzufügen von Inhalten ermöglicht, deaktivieren um ein völlig eigenes Layout hierfür zu gestallten.