Plone - Portal Root ermitteln
Up to Table of Contents
Wie bekomme ich eine Referenz auf das Portal Root Objekt in Plone?
Portal Root ermitteln
Portal root ist in Plone code als portal Objekt verfügbar.
In quick installer scripten install(self), ist self eine Referenz auf das Portal Root.
In unit tests, kann man mit self.portal auf das Portal root zugreifen.
Falls man keine direkte portal variable hat, kann man sich diese wie folgt holen:
from Products.CMFCore.utils import getToolByName
portal_url = getToolByName(context, "portal_url")
portal = portal_url.getPortalObject()
oder ab Plone 3 ist die offizielle Variante so:
from zope.component import getMultiAdapter
pstate = getMultiAdapter((self.context, self.request), name='plone_portal_state')
portal = pstate.portal()
Diese scheint aber langsamer zu sein als die alte Variante mit getToolByName, so das ich die folgende Variante nur empfehlen kann:
from zope.app.component.hooks import getSite
portal = getSite()
Diese hat weiterhin den Vorteil das sie ohne jeden context auskommt.