2012-02-18 47 views
5

我正在使用Plone 4.1.2,並試圖覆蓋collective.contenleadimage提供的視圖模板。很容易通過portal_view_customization編輯提供的模板,但我想嘗試從我的策略產品在文件系統中執行。在Plone中重寫另一個產品的視圖模板

我想替換c.contentleadimage的folder_leadimage_view。

這就是我在我的政策產品中所做的。

在interfaces.py

from zope.interface import Interface 

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

在型材/默認/ browserlayer.xml

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

在瀏覽器/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" 
/> 

我的政策產品安裝正常,我可以看到portal_view_customization

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

然而,我的新模板不使用Plone呈現的一個。

我將不勝感激協助。

回答

8

更改interfaces.py到:

from collective.contentleadimage.interfaces import ILeadImageSpecific 

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

瀏覽器層應用於請求標記。您的IExamplePolicy和collective.contentleadimage的ILeadImageSpecific瀏覽器圖層均已應用,但是通過繼承您的瀏覽器圖層的ILeadImageSpecific,您可以比collective.contentleadimage自己的更改爲查看更具體

有關的Zope組件架構界面分辨率爲了更多信息,請參閱在the Dexterity manual節「與更多的專用適配器定製」。

+0

謝謝。這很好。我會檢查敏捷手冊。 – h2o 2012-02-18 08:48:02