Ein View für Plone 5 erstellen
In einem Plone 5 Produkt ein View erstellen
In das Verzeichnis "browser" des Produkt wechseln.
Hier die Datei myview.py
mit folgendem Inhalt erstellen:
from zope.interface import implements, Interface
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
from Products.Five import BrowserView
from Products.CMFCore.utils import getToolByName
class IMyView(Interface):
pass
class MyView(BrowserView):
implements(IMyView)
index = ViewPageTemplateFile('myview.pt')
def __init__(self, context, request):
self.context = context
self.request = request
@property
def portal_catalog(self):
return getToolByName(self.context, 'portal_catalog')
@property
def portal(self):
return getToolByName(self.context, 'portal_url').getPortalObject()
def mydata(self):
data = {}
data['title'] = 'Title from view'
data['text'] ='This is some example Text'
return data
Jetzt brauchen wir noch das passende PageTemplate mit dem Dateinamen myview.pt
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en"
metal:use-macro="here/main_template/macros/master">
<body>
<div metal:fill-slot="main">
<tal:main-macro metal:define-macro="main"
tal:define="data view/mydata">
<h1 class="documentFirstHeading" tal:content="data/title"> MyView </h1>
<p tal:content="data/text"> Text </p>
</tal:main-macro>
</div>
</body>
</html>
Als letztes müssen wir den View noch registrieren. Hierfür bearbeiten wir die configure.zcml
und fügen folgenden Eintrag hinzu:
<browser:page
for="*"
name="my_view"
class=".myview.MyView"
template="myview.pt"
allowed_interface=".myview.IMyView"
permission="zope.Public"
/>
Nun können wir den View in der URL über /my_view
oder falls es schon ein entsprechendes Objekt gibt über /@@my_view
aufrufen.