Sektionen
Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Support Dokumentation docs Plone BrowserLayer

Plone BrowserLayer

Da per zcml gegistrierte BrowserViews und Viewlets beim Start von Zope ausgeführt werden, sind diese Elemente sofort aktiv, auch wenn in einer Plone Site das entsprechende Produkt noch nicht installiert wurde. Mit Hilfe von BrowserLayern läßt sich dies steuern.

In Plone wird das Package plone.browserlayer benötigt, welches in neueren Versionen zum Kern von Plone gehört und daher sowieso installiert sein dürfte. Damit ein eigenes Package auch in älteren Plone Versionen läuft, sollte die Abhängigkeit wie folgt in die setup.py aufgenommen werden.

install_requires=[
'plone.browserlayer',
],

In unserem Package aktivieren wir das package wie folgt in einer configure.zcml-Datei.

<include package="plone.browserlayer" />

Für unseren BrowserLayer benötigen wir ein einfaches Zope-Interface.

from zope.interface import Interface
class IMyProductLayer(Interface):
"""A layer specific to my product
"""

Der BrowserLayer wird in der jeweiligen Plone Site, in der unser Package installiert wird durch eine GenericSetup anweisung aktiviert. Diese legt man in seinem Package in der Datei "./profiles/default/browserlayer.xml" ab.

<layers>
<layer name="my.product"
interface="my.product.interfaces.IMyProductLayer" />
</layers>

Jeder BrowserView,  BrowserRecource oder jedem Viewlet kann jetzt einfach der Layer zugewiesen werden. Damit ist die entsprechende Komponente nur verfügbar, sofern das Package installiert und damit der BrowserLayer aktiv ist.

<browser:page
name="my-view"
for="*"
layer=".interfaces.IMyProductLayer"
permission="zope.Public"
template="my-view.pt"
/>