小编h2o*_*h2o的帖子

在Plone中覆盖另一个产品的视图模板

我正在使用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渲染的模板.

我很感激你的帮助.

plone

5
推荐指数
1
解决办法
761
查看次数

使用通用接口标记内容类型的更好方法

我想要一个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)

这有效.但我很想知道是否有更好的方法来做到这一点.

zope plone viewlets

5
推荐指数
1
解决办法
114
查看次数

重命名Plone"会员"id

是否可以重命名Plone的"Members"文件夹的ID?我想改用"帐户"一词.我尝试通过folder_listing和rename来做到这一点.它可以工作,但用户菜单中的"我的文件夹"不再出现.为它设置的条件现在返回false.我可以重命名标题.但是,URL仍会显示../Members/ ..

是否可以在没有问题的情况下更改其ID或者这是硬编码的吗?我希望我只能更改属性的值.

plone

4
推荐指数
1
解决办法
125
查看次数

Zopeskel ImportError:无法导入名称BasicNamespace

我的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)

zope plone

3
推荐指数
1
解决办法
585
查看次数

标签 统计

plone ×4

zope ×2

viewlets ×1