Pular para o conteúdo. Ir para a navegação
Ações do site
Opções do usuário

TcheZope.org

Você está aqui: Página Inicial Documentação Tutoriais Customizando viewlets no main_template Movendo um viewlet de um gerenciador de viewlet para outro
Ações do documento

Movendo um viewlet de um gerenciador de viewlet para outro

O título já diz tudo...

Daniel Vainsencher

A partir do Plone 3.0, o main_template.pt invoca gerenciadores de viewlets ao invés de METAL macros. Aprenda neste tutorial como viewlets podem ser programaticamente, reordenados, omitidos ou adicionados.
Página 5 de 5.

Para mover um viewlet de um gerenciador de viewlet para outro nós teremos que aplicar o que já foi coberto nos parágrafos anteriores:

Nós temos que esconder o viewlet no gerenciador de viewlet do qual queremos tirá-lo e registrá-lo para o outro gerenciador de viewlet no layer Zope 3 que corresponda ao nosso tema.

Vamos assumir que queremos mover o portal actions do topo para o fim...

em brower/interfaces.py, nós devemos configurar no layer Zope 3:

from zope.publisher.interfaces.browser import IDefaultBrowserLayer

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

em 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>

em 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>

Feito!

Tudo que fizemos, fizemos sem tocar no main_template.pt, não é um sucesso?

 
por Daniel Vainsencher Última modificação 02/07/2007 08:18
Contribuidores: Daniel Vainsencher - Tradução para português, David Convent - Autor
Creative Commons
Navegação
Enquete
Como você efetiva sua participação comunitária?








Mais »