我正在使用Plone 4.1.2,我试图覆盖collective.contenleadimage提供的视图模板.通过portal_view_customization编辑提供的模板很容易,但我想尝试从文件系统中的策略产品中进行操作.
我想替换c.contentleadimage的folder_leadimage_view.
这就是我在我的政策产品中所做的.
在interfaces.py中
from zope.interface import Interface
class IExamplePolicy(Interface):
"""Marker interface that defines a Zope 3 browser layer.
"""
Run Code Online (Sandbox Code Playgroud)
在profiles/default/browserlayer.xml中
<?xml version="1.0"?>
<layers>
<layer name="example.policy"
interface="example.policy.interfaces.IExamplePolicy" />
</layers>
Run Code Online (Sandbox Code Playgroud)
在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"
/>
Run Code Online (Sandbox Code Playgroud)
我的策略产品安装正常,我可以在portal_view_customization中看到
Products.Archetypes.interfaces.base.IBaseFolder
folder_leadimage_view (example.policy.interfaces.IExamplePolicy)
folder_leadimage_view (collective.contentleadimage.interfaces.ILeadImageSpecific)
Run Code Online (Sandbox Code Playgroud)
但是,我的新模板不是Plone渲染的模板.
我很感激你的帮助.
将您更改interfaces.py
为:
from collective.contentleadimage.interfaces import ILeadImageSpecific
class IExamplePolicy(ILeadImageSpecific):
"""Marker interface that overrides collective.contentleadimage's
browser layer.
"""
Run Code Online (Sandbox Code Playgroud)
浏览器图层是应用于请求的标记.您IExamplePolicy
和collective.contentleadimage的ILeadImageSpecific
浏览器图层都已应用,但通过继承ILeadImageSpecific
浏览器图层,您可以使被覆盖的folder_leadimage_view
视图比collective.contentleadimage自己的更具体.
有关Zope组件体系结构接口解析顺序的更多信息,请参阅Dexterity手册中的"使用更具体的适配器进行自定义"部分.
归档时间: |
|
查看次数: |
761 次 |
最近记录: |