2012-02-18 11 views
5

Używam Plone 4.1.2 i próbuję zastąpić szablon widoku dostarczony przez collective.contenleadimage. Łatwo edytować podany szablon przez portal_view_customization, ale chcę spróbować zrobić to z mojego produktu polityki w systemie plików.Zastępowanie szablonu widoku innego produktu w Plone

Chciałbym zastąpić folder_leadimage_view z c.contentleadimage.

Oto, co zrobiłem w moim produkcie z zakresu polityki.

w interfaces.py

from zope.interface import Interface 

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

w profilach/default/browserlayer.xml

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

w przeglądarce/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" 
/> 

Mój produkt polityka instaluje dobrze i widzę w portal_view_customization

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

Jednak mój nowy szablon nie jest jeden świadczonych przez Plone.

Byłbym wdzięczny za pomoc.

Odpowiedz

8

zmienić interfaces.py do:

from collective.contentleadimage.interfaces import ILeadImageSpecific 

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

warstwy przeglądarkowe są znaczniki zastosowane do wniosku. Obydwie warstwy przeglądarki: IExamplePolicy i collective.contentleadimage są stosowane, ale dziedzicząc po dla warstwy przeglądarki, nadpisujesz bardziej szczegółową folder_leadimage_view, niż własność collective.contentleadimage.

Aby uzyskać więcej informacji na temat architektury Komponenty Zope , należy zapoznać się z rozdziałem o rozdzielczości interfejsu w sekcji "Dostosowywanie z użyciem bardziej specyficznych adapterów" pod numerem the Dexterity manual.

+0

Dzięki. To działało dobrze. Sprawdzę podręcznik Zręczności. – h2o

Powiązane problemy