Plone有一些很棒的附加组件,但Plone.org 的下载部分很难筛选出来.
你会说什么附加组件是Plone CMS的必备品或特别好的演示?
将每个加载项添加为单独的答案,以便可以轻松地对其进行投票.
如果没有,我可以使用内联XSLT吗?如果是这样,怎么样?
我认为这是不可能的,基于在Diazo文档中搜索"通配符",但我想确保我没有遗漏一些东西.
这对于允许ZMI通过未经训练而言尤其方便.
例如
<notheme if-path="manage*" />
<notheme if-path="portal*" />
Run Code Online (Sandbox Code Playgroud) 在Plone中创建BrowserView时,我知道我可以选择使用ZCML配置模板,如下所示:
<configure
xmlns:browser="http://namespaces.zope.org/browser"
>
<browser:page
…
class=".foo.FooView"
template="foo.pt"
…
/>
</configure>
Run Code Online (Sandbox Code Playgroud)
或者在代码中:
# foo.py
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
from zope.publisher.browser import BrowserPage
class FooView(BrowserPage):
"""
My View
"""
def __call__(self):
return ViewPageTemplateFile('foo.pt')(self)
Run Code Online (Sandbox Code Playgroud)
这两种方法有什么区别吗?它们似乎都产生相同的结果.
子问题:我知道有一个BrowserView类可以导入,但通常每个人都使用BrowserPage.如果这两个类之间存在任何显着差异怎么办?
我通过以下方式隐藏了普通Plone首页的各种元素:
.section-front-page #portal-globalnav {
display: none;
}
Run Code Online (Sandbox Code Playgroud)
现在,我想在页脚附近的底部添加一个globalnav.我考虑过各种方法:
什么是最好的方法?
我正在尝试使用Domain Auth插件根据用户的IP地址为网站访问者分配会员角色.
我可以配置插件OK,但是我发现所有的请求都来自localhost,而不是"真正的"IP地址.
在这种情况下,我正在使用NGINX,所以我尝试通过proxy_set_header(例如http://wiki.nginx.org/HttpProxyModule)将X-Real-IP设置为$ remote_addr ,但据我所知,只是使IP成为IP标题中可用的地址.
如何将从NGINX发送到Plone的请求似乎来自远程IP地址?
我正在使用NGINX,但我也很乐意接受适用于Apache的答案.
在Plone 4中,我有一个自定义Dexterity内容类型,它有一个名为audio_artifact的NamedBlobFile字段.使用默认编辑视图编辑类型时,我看到如下URL:

这里发生了什么?我一般熟悉Zope 3资源,但在这里它看起来小部件资源正在作为参数传递@@ download视图.那是对的吗?或者我只是困惑.我怀疑后者.
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呈现相同的模板?
在我使用以下命令创建新产品之后,我创建了新的plone站点
../bin/zopeskel plone_basic dummy.work
Run Code Online (Sandbox Code Playgroud)
我在../dummy.work/src/dummy/work下创建了浏览器文件夹.然后我在configure.zcml文件中配置了浏览器文件夹,如下所示.
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:five="http://namespaces.zope.org/five"
xmlns:i18n="http://namespaces.zope.org/i18n"
xmlns:browser="http://namespaces.zope.org/browser"
xmlns:plone="http://namespaces.plone.org/plone"
xmlns:zcml="http://namespaces.zope.org/zcml"
xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
i18n_domain="dummy.work">
<five:registerPackage package="." initialize=".initialize" />
<plone:static
directory="browser"
type="work"
name="dummy.work"
/>
<genericsetup:registerProfile
name="default"
title="dummy.work"
directory="profiles/default"
description="Installs the dummy.work package"
provides="Products.GenericSetup.interfaces.EXTENSION"
/>
<include package=".browser" />
</configure>
Run Code Online (Sandbox Code Playgroud)
当我尝试创建一个实例时,我得到的错误就像
ConfigurationError: ('Unknown directive', u'http://namespaces.plone.org/plone', u'static')
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题
我正在使用Plone 4.3和matplotlib.我有绘图窗口,但我想在页面模板中渲染绘图窗口.有些人建议我使用HTML5 canvas在模板页面中渲染绘图窗口.但我无法理解这个概念.所以任何人都可以帮助我?
我不小心创建了一个名为"遥控器/原点/遥控器/原点/ aclark"的分支,并且无法删除它:
git branch -d remotes/origin/remotes/origin/aclark
Git说:
错误:找不到分支'remotes/origin/remotes/origin/aclark'.
我在这里尝试了一些建议:删除一个命名不好的git分支,但它们更倾向于以" - "开头的坏分支名称.
有没有最终用户可以删除此分支或我需要一个git管理员?(有问题的分支住在有名的).
谢谢
亚历克斯
我有一个Plone 2.5站点,升级到Plone 4.1rc3(或4.0.x)时似乎有一个破坏的成员目录(即使我先升级到3.3.x).
在升级过程中,我得到了这个:
2011-06-23 13:44:39 ERROR plone.app.upgrade Upgrade aborted. Error:
Traceback (most recent call last):
File "/Users/aclark/Downloads/eggs-directory/Products.CMFPlone-4.1rc3-py2.6.egg/Products/CMFPlone/MigrationTool.py", line 175, in upgrade
step['step'].doStep(setup)
File "/Users/aclark/Downloads/eggs-directory/Products.GenericSetup-1.6.3-py2.6.egg/Products/GenericSetup/upgrade.py", line 142, in doStep
self.handler(tool)
File "/Users/aclark/Downloads/eggs-directory/plone.app.upgrade-1.1rc3-py2.6.egg/plone/app/upgrade/v40/alphas.py", line 478, in updateLargeFolderType
update(brain)
File "/Users/aclark/Downloads/eggs-directory/plone.app.upgrade-1.1rc3-py2.6.egg/plone/app/upgrade/v40/alphas.py", line 472, in update
obj._setPortalTypeName('Folder')
AttributeError: _setPortalTypeName
> /Users/aclark/Downloads/eggs-directory/plone.app.upgrade-1.1rc3-py2.6.egg/plone/app/upgrade/v40/alphas.py(472)update()
471 obj = brain.getObject()
--> 472 obj._setPortalTypeName('Folder')
473 reindex(obj, idxs=['portal_type', 'Type', 'object_provides'])
ipdb> obj
<persistent broken Products.CMFPlone.LargePloneFolder.LargePloneFolder instance '\x00\x00\x00\x00\x00\x00\x07W'>
Run Code Online (Sandbox Code Playgroud)
为什么会这样?这不应该由LargePloneFolder弃用代码处理吗?我以前从未见过这个.我知道在某些时候有一个代码重组,关于Products.CMPlone和Plone包(这样一个或另一个现在是垫片),我想知道这是否会导致问题.
在ZMI中,members文件夹如下所示:

我可以做些什么来尝试调查/解决此问题?
在Plone社区管理的开发人员关于发送电子邮件的文档之后:
try:
host = getToolByName(self, 'MailHost')
return host.send(mail_text)
except SMTPRecipientsRefused:
# Don't disclose email address on failure
raise SMTPRecipientsRefused('Recipient address rejected by server')
Run Code Online (Sandbox Code Playgroud)
...但return host.send(mail_text)总是返回None,无论电子邮件是否已发送(电子邮件实际发送).那么,我能否假设None结果是否成功呢?这对我来说不合适.有什么想法吗?