2012-02-18 9 views
5

Sto utilizzando Plone 4.1.2 e sto tentando di sovrascrivere un modello di visualizzazione fornito da collective.contenleadimage. È facile modificare il modello fornito tramite portal_view_customization ma voglio provare a farlo dal mio prodotto della politica nel filesystem.Sovrascrittura di un modello di visualizzazione di un altro prodotto in Plone

Vorrei sostituire il folder_leadimage_view di c.contentleadimage.

Questo è ciò che ho fatto nel mio prodotto di politica.

in interfaces.py

from zope.interface import Interface 

class IExamplePolicy(Interface): 
    """Marker interface that defines a Zope 3 browser layer. 
    """ 

nei profili/default/browserlayer.xml

<?xml version="1.0"?> 
<layers> 
    <layer name="example.policy" 
      interface="example.policy.interfaces.IExamplePolicy" /> 
</layers> 

browser/configure.zcml

<configure 
xmlns="http://namespaces.zope.org/zope" 
xmlns:browser="http://namespaces.zope.org/browser" 
xmlns:i18n="http://namespaces.zope.org/i18n" 
xmlns:zcml="http://namespaces.zope.org/zcml" 
i18n_domain="example.policy"> 


<browser:page 
    for="Products.Archetypes.interfaces.IBaseFolder" 
    name="folder_leadimage_view" 
    class="collective.contentleadimage.browser.folder_leadimage_view.FolderLeadImageView" 
    template="folder_leadimage_view.pt" 
    layer="..interfaces.IExamplePolicy" 
    permission="zope2.View" 
    allowed_attributes="tag" 
/> 

<browser:page 
    for="Products.CMFPlone.interfaces.IPloneSiteRoot" 
    name="folder_leadimage_view" 
    class="collective.contentleadimage.browser.folder_leadimage_view.FolderLeadImageView" 
    template="folder_leadimage_view.pt" 
    layer="..interfaces.IExamplePolicy" 
    permission="zope2.View" 
/> 

Il mio prodotto la politica installa bene e posso vedere in portal_view_customization

Products.Archetypes.interfaces.base.IBaseFolder 
    folder_leadimage_view (example.policy.interfaces.IExamplePolicy) 
    folder_leadimage_view (collective.contentleadimage.interfaces.ILeadImageSpecific) 

Tuttavia, il mio nuovo modello non è quello reso da Plone.

Apprezzerei l'assistenza.

risposta

8

Cambia i tuoi interfaces.py a:

from collective.contentleadimage.interfaces import ILeadImageSpecific 

class IExamplePolicy(ILeadImageSpecific): 
    """Marker interface that overrides collective.contentleadimage's 
    browser layer. 
    """ 

strati del browser sono indicatori applicati alla richiesta. Entrambi i livelli del tuo browser collective sono applicati, ma ereditando da ILeadImageSpecific per il tuo livello browser, rendi il tuo override folder_leadimage_view vista più specifico rispetto a collective.contentleadimage.

Per ulteriori informazioni su interfaccia Zope Component Architecture ordine di risoluzione vedere la "personalizzazione con adattatori specifici più" nel the Dexterity manual.

+0

Grazie. Questo ha funzionato bene. Controllerò il manuale di Destrezza. – h2o

Problemi correlati