Bookmark and Share
Document Actions

Spostare una viewlet da un viewlet manager ad un altro
medio

Per spostare una viewlet da un viewlet manager ad un altro è sufficiente applicare quanto visto finora.

Si può nascondere la viewlet dal viewlet manager da cui vogliamo rimuoverla e registrarla nel viewlet manager per lo zSubject che corrisponde al nostro tema.

Ipotizzando di voler spostare i portal actions dalla cima al fondo della pagina possiamo procedere nel modo seguente:

in browser/interfaces.py definiamo il nostro ZSubject

from zope.publisher.interfaces.browser import IDefaultBrowserLayer

class IMyThemeSpecific(IDefaultBrowserLayer):
"""Marker interface that defines a ZSubject.
It will be used for the viewlets that we want to add to the
"My Theme" skin only.
"""

in browser/configure.zcml:

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:browser="http://namespaces.zope.org/browser"
    i18n_domain="mytheme">

    <interface
        interface=".interfaces.IMyThemeSpecific"
        type="zope.publisher.interfaces.browser.IBrowserSkinType"
        name="My Theme"
        />

    <!-- Moved viewlet registration -->
    <browser:viewlet
        name="plone.site_actions"
        manager="plone.app.layout.viewlets.interfaces.IPortalFooter"
        class="plone.app.layout.viewlets.common.SiteActionsViewlet"
        permission="zope2.View"
        layer=".interfaces.IMyThemeSpecific"
        />

</configure>

ed in profiles/default/viewlets.xml:

<?xml version="1.0"?>
<object>
  <order manager="plone.portalfooter" skinname="My Theme"
         based-on="Plone Default">
    <viewlet name="plone.site_actions" insert-after="*" />
  </order>
  <!-- We hide the one we want to move -->
  <hidden manager="plone.portalheader" skinname="My Theme">
    <viewlet name="plone.site_actions" />
  </hidden>
</object>

Ed ecco fatto tutto senza toccare il main_template.pt.

 

 
by Fabrizio Reale last modified 2007-08-30 15:54