Sektionen
Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Support Dokumentation docs Plone: Portal Root Object ermitteln

Plone: Portal Root Object ermitteln

Das Root-Objekt von Plone wird recht häufig benötigt, kann man hierüber doch einfach auf viele Tools und Inhalte zugreifen. Dieser Artikel beschreibt wie man in unterschiedlichen Situationen an das Plone-Root-Objekt kommt.

Portal Root ermitteln

Das Portal-Root-Objekt ist in Plone code (Script Python) als portal Objekt verfügbar.

In Quick-Installer-Skripten install(self), ist self eine Referenz auf das Portal-Root-Objekt.

In unit tests, kann man mit self.portal auf das Portal-Root-Objekt zugreifen.

 

Das Portal-Root-Objekt selbst ermitteln

 

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.

getSite als Empfohlene Variante

Ich empfehle die folgende Variante:

from zope.app.component.hooks import getSite
portal = getSite()

Diese hat weiterhin den Vorteil das sie ohne jeden context auskommt.

In Plone 4 ist die Methode getSite() an andere Stelle zu finden, der Import sieht nun wie folgt aus:

from zope.site.hooks import getSite
portal = getSite()