2012-02-18 6 views
5

Tôi đang sử dụng Plone 4.1.2 và tôi đang cố gắng ghi đè mẫu xem được cung cấp bởi collective.contenleadimage. Nó rất dễ dàng để chỉnh sửa các mẫu được cung cấp thông qua portal_view_customization nhưng tôi muốn thử làm nó từ sản phẩm chính sách của tôi trong hệ thống tập tin.Ghi đè mẫu xem của một sản phẩm khác trong Plone

Tôi muốn thay thế thư mục_leadimage_view của c.contentleadimage.

Đây là những gì tôi đã làm trong sản phẩm chính sách của mình.

trong interfaces.py

from zope.interface import Interface 

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

trong các cấu hình/default/browserlayer.xml

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

trong trình duyệt/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" 
/> 

sản phẩm Chính sách của tôi cài đặt tốt và tôi có thể nhìn thấy trong portal_view_customization

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

Tuy nhiên, mẫu mới của tôi không phải là người đưa ra bởi Plone.

Tôi sẽ đánh giá cao sự hỗ trợ.

Trả lời

8

Thay đổi interfaces.py đến của bạn:

from collective.contentleadimage.interfaces import ILeadImageSpecific 

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

lớp Trình duyệt là dấu hiệu áp dụng cho các yêu cầu. Cả hai lớp IExamplePolicy và collective.contentleadimage's ILeadImageSpecific trình duyệt của bạn đều được áp dụng, nhưng bằng cách kế thừa từ ILeadImageSpecific cho lớp trình duyệt của bạn, bạn thực hiện ghi đè folder_leadimage_view xem cụ thể hơn của riêng mình hơn là của collective.contentleadimage.

Để biết thêm thông tin về Kiến trúc thành phần Zope thứ tự phân giải giao diện hãy xem phần "Tùy chỉnh với bộ điều hợp cụ thể hơn" trong the Dexterity manual.

+0

Cảm ơn. Điều này làm việc tốt. Tôi sẽ kiểm tra sổ tay Thủ Thuật. – h2o