我熟悉zope 2并且认为zope 3在很多方面都是优越的,就我使用它而言(主要是使用Five).
现在我正在考虑深入研究zope 3.您是否建议更进一步使用grok,如果是这样,为什么?(如果没有,为什么不呢?:)
我试图覆盖<browser:page ...具有相同name=属性的CMF外观层提供的视图.这在Plone中是可能的,还是浏览器视图只能覆盖其他浏览器视图?
我有几个类似的类,它们都将由相同的代码初始化,因此需要具有相同的"构造函数签名".(在动态Python中是否真的有构造函数和签名?我离题了.)
使用zope.interface定义类__init __参数的最佳方法是什么?
我将粘贴一些我用于试验zope.interface的代码以方便讨论:
from zope.interface import Interface, Attribute, implements, verify
class ITest(Interface):
required_attribute = Attribute(
"""A required attribute for classes implementing this interface.""")
def required_method():
"""A required method for classes implementing this interface."""
class Test(object):
implements(ITest)
required_attribute = None
def required_method():
pass
print verify.verifyObject(ITest, Test())
print verify.verifyClass(ITest, Test)
Run Code Online (Sandbox Code Playgroud)
我不能只在ITest中定义一个__ init __函数,因为它将由Python解释器专门处理 - 我想?无论如何,它似乎都不起作用.那么,使用zope.interface定义"类构造函数"的最佳方法是什么?
我正在开发一个plone4网站,每个用户都有一个可排序的项目库存.ATFolder的folder_content视图非常适合这种情况.唯一的问题是,而不是像这样的URL:
/site/user/inventory
Run Code Online (Sandbox Code Playgroud)
或这个
/site/inventory/user
Run Code Online (Sandbox Code Playgroud)
网址应该是:
/site/inventory
Run Code Online (Sandbox Code Playgroud)
我想过几个解决方案,但每个人都有自己的疑虑.
你会怎么做?
谢谢.
我们正在尝试仅使用ZTK(Zope 3)视图开发我们的Plone 4.1产品,因此没有定义门户皮肤.我正在尝试覆盖来自不同包的视图,并且在过去使用了layer属性来执行此操作.
plone.theme允许您使用"图层"界面标记请求,条件是当前选定的皮肤.如果我的产品已安装,我想用"图层"界面标记请求,而不创建外观图层.我怎么做?
我已经在zcml中定义了我的界面
<interface
interface=".interfaces.IThemeSpecific"
type="zope.publisher.interfaces.browser.IBrowserSkinType"
name="My Theme"
/>
Run Code Online (Sandbox Code Playgroud)
并宣布
from zope.interface import Interface
class IThemeSpecific(Interface):
"""Marker interface for skins part of 'My Theme'
"""
Run Code Online (Sandbox Code Playgroud) 我的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) 我正在为包含文件的对象编写模板.我正在按照主题构建块说明进行操作.
<a tal:attributes="href item/id">foo</a>
Run Code Online (Sandbox Code Playgroud)
这使得liks下载文件,如下所示:
<a href="foo">foo</a>
Run Code Online (Sandbox Code Playgroud)
但我希望该链接指向文件的视图页面,显示其标题,描述以及允许下载它.所以我想获得下一个输出:
<a href="foo/view">foo</a>
Run Code Online (Sandbox Code Playgroud)
如何生成该属性?
Plone有一个很好的黑客,可以消除Zope2附带的无聊的Zope Quickstart页面.它改变了这个:

进入:

相关代码位于Products/CMFPlone/browser/admin.zcml(https://github.com/plone/Products.CMFPlone/blob/master/Products/CMFPlone/browser/admin.zcml#L35):
<browser:page
for="OFS.interfaces.IApplication"
name="plone-overview"
class=".admin.Overview"
permission="zope.Public"
template="templates/plone-overview.pt"
/>
Run Code Online (Sandbox Code Playgroud)
这解释了为什么http://localhost:8080/plone-overview渲染plone-overview模板,但为什么/如何应用程序root,即http://localhost:8080呈现相同的模板?
如果视图是这样注册的,则使用zcml中的模板定义:
<browser:page
name="original-view"
class=".original_view.View"
permission="zope2.View"
for="*"
template="original_template.pt"
/>
Run Code Online (Sandbox Code Playgroud)
我想在我的产品中只定制他的课程,有没有办法在不定制模板的情况下做到这一点?
我在Zope/Plone上运行了一个网站好几年,直到服务器灾难性地崩溃.我没有兴趣再次建立这个网站(我也不相信我甚至可以,因为它所基于的Zope和Plone的版本已经过时至少六年了),但我很乐意能够获取内容以便我可以使用它.它存储在Zope文件系统中(即Plone-2.5.3/zeocluster/server/var/Data.fs).是否有任何工具可以让我编写一个Python脚本来将内容保存到文件中?或者是否有其他方法可以获得重新安装整个网站的内容?Data.fs超过半千兆字节,所以那里有一点点.
我在Ubuntu 14.04上运行Python 2.7和3.4,如果相关的话.