我正在使用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渲染的模板.
我很感激你的帮助.
我想要一个viewlet应用于同一个python egg中的几个内容类型的视图.我一直在做的是通过browser/configure.zcml应用标记接口
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
i18n_domain="AnnualProgramModule.content">
<include package="plone.app.contentmenu" />
<class class="..content.programyear.ProgramYear">
<implements interface=".viewlets.IAnnualProgram" />
</class>
<class class="..content.institution.Institution">
<implements interface=".viewlets.IAnnualProgram" />
</class>
</configure>
Run Code Online (Sandbox Code Playgroud)
在我基于Grok的模板中,我有:
from zope.interface import Interface
from five import grok
from plone.app.layout.viewlets.interfaces import IAboveContentTitle
from AnnualProgramModule.content.interfaces import IInstitution
grok.templatedir('templates')
class IAnnualProgram(Interface):
"""Marker Interface for AnnualProgram content types
"""
class AnnualProgramViewlet(grok.Viewlet):
grok.require('zope2.View')
grok.viewletmanager(IAboveContentTitle)
grok.context(IAnnualProgram)
class InstitutionViewlet(grok.Viewlet):
grok.require('zope2.View')
grok.context(IInstitution)
grok.viewletmanager(IAboveContentTitle)
Run Code Online (Sandbox Code Playgroud)
这有效.但我很想知道是否有更好的方法来做到这一点.
是否可以重命名Plone的"Members"文件夹的ID?我想改用"帐户"一词.我尝试通过folder_listing和rename来做到这一点.它可以工作,但用户菜单中的"我的文件夹"不再出现.为它设置的条件现在返回false.我可以重命名标题.但是,URL仍会显示../Members/ ..
是否可以在没有问题的情况下更改其ID或者这是硬编码的吗?我希望我只能更改属性的值.
我的virtualenv python中有zopeskel 2.21.2,它工作正常.同时,我的Plone buildout(位于~/.buildout/eggs)中也有相同版本的zopeskel .但是,它不起作用.运行zopeskel --list会抛出以下错误:
ImportError: cannot import name BasicNamespace
Run Code Online (Sandbox Code Playgroud)
这个链接的建议说要取出鸡蛋.我已经删除了鸡蛋以及〜/ .buildout/cache/dist /中的缓存包,并再次运行buildout.但问题仍然存在.有趣的是,同一个buildout中的贴图脚本正在工作.
buildout.cfg中的zopeskel部分如下所示:
[zopeskel]
recipe = zc.recipe.egg
eggs =
ZopeSkel
Paste
PasteDeploy
PasteScript
zopeskel.dexterity
${instance:eggs}
Run Code Online (Sandbox Code Playgroud)
我的buildout中使用的一些包版本:
'/home/user/.buildout/eggs/Paste-1.7.5.1-py2.6.egg',
'/home/user/.buildout/eggs/distribute-0.6.24-py2.6.egg',
'/home/user/.buildout/eggs/PasteDeploy-1.3.4-py2.6.egg',
'/home/user/.buildout/eggs/PasteScript-1.7.4.2-py2.6.egg',
Run Code Online (Sandbox Code Playgroud)
完全追溯:
[user@rizal myplone.site]$ ./bin/zopeskel --list
Traceback (most recent call last):
File "./bin/zopeskel", line 346, in <module>
import zopeskel.zopeskel_script
File "/home/user/.buildout/eggs/ZopeSkel-2.21.2-py2.6.egg/zopeskel/__init__.py", line 2, in <module>
from zopeskel.basic_namespace import BasicNamespace
File "/home/user/.buildout/eggs/ZopeSkel-2.21.2-py2.6.egg/zopeskel/basic_namespace.py", line 2, in <module>
from zopeskel.vars import var, DottedVar, StringVar, BooleanVar, TextVar …Run Code Online (Sandbox Code Playgroud)