Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Erscheinungsbild Portlet-Manager hinzufügen

Portlet-Manager hinzufügen

erstellt von Veit Schiele zuletzt verändert: 09.12.2009 18:51 Rechte: © Veit Schiele, 2008–2009

Zunächst wird ein Viewlet erstellt, das auf einen Portlet-Manager verweist – in unserem Fall vs.abovecontentportlets – und für den Viewlet-Manager IContentViews registriert wird. Anschließend wird dieser Viewlet-Manager und anschließend noch ein Management-View für diesen erstellt.

Viewlet erstellen

Fügen Sie in browser/templates die Datei abovecontentportlets.pt mit folgendem Inhalt hinzu:

<tal:block replace="structure provider:vs.abovecontentportlets" />

Dieses Viewlet wird nun registriert in browser/configure.zcml:

<browser:viewlet
    name="vs.abovecontentportlets"
    manager="plone.app.layout.viewlets.interfaces.IContentViews"
    template="templates/abovecontentportlets.pt"
    permission="zope2.View"
/>

Portlet-Manager erstellen

Zunächst wird ein Marker-Interface in browser/interfaces.py erstellt:

from plone.portlets.interfaces import IPortletManager

class IVsAboveContent(IPortletManager):
    """Portlet manager above the content area.
    """

Anschließend wird in der Datei profiles/default/portlets.xml der neue Portlet-Manager registriert:

<?xml version="1.0"?>
<portlets>
    <portletmanager
         name="vs.abovecontentportlets"
         type="vs.theme.browser.interfaces.IVsAboveContent"
    />
</portlets>

Erstellen eines Management-Views für den Portlet-Manager

Um die Portlets des vs.abovecontentportlets zu verwalten, wird ein neuer View erstellt und hierfür zunächst folgende Zeilen in browser/configure.zcml eingetragen:

<browser:page
    for="plone.portlets.interfaces.ILocalPortletAssignable"
    class="plone.app.portlets.browser.manage.ManageContextualPortlets"
    name="manage-vsabove"
    template="templates/managevsabove.pt"
    permission="plone.app.portlets.ManagePortlets"
/>

Und falls nicht bereits zu einem früheren Zeitpunkt geschehen, sollte noch das Paket plone.app.portlets eingeschlossen werden:

<include package="plone.app.portlets" />

Schließlich wird dann noch das Page-Template browser/templates/managevsabove.pt erstellt:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:metal="http://xml.zope.org/namespaces/metal"
      xmlns:tal="http://xml.zope.org/namespaces/tal"
      xmlns:i18n="http://xml.zope.org/namespaces/i18n"
      metal:use-macro="context/main_template/macros/master"
      i18n:domain="plone">
<head>
    <div metal:fill-slot="javascript_head_slot" tal:omit-tag="">
        <link type="text/css" rel="kinetic-stylesheet"
            tal:attributes="href string:${context/absolute_url}/++resource++manage-portlets.kss"/>
    </div>
</head>
<body>
<div metal:fill-slot="main">
  <h1 class="documentFirstHeading">Manage above content portlets</h1>
  <span tal:replace="structure provider:vs.abovecontentportlets" />
</div>
</body>
</html>

Nach einem Neustart des Zope-Servers sollten sich nun die Portlets verwalten lassen wenn folgende URL aufgerufen wird:

http://localhost/mysite/@@manage-vsabove
Artikelaktionen