作为一个典型的“集成商”程序员定制Plone,我应该如何了解ZMI以帮助我更有效地编码?有什么设置,工具,陷阱,快捷方式和黑暗角落可以节省我的时间并帮助我编写更好的代码?
编辑:将其视为我在文件系统上编码的读数,使用GenericSetup配置文件进行设置更改。我知道在ZMI中做出改变是一个坏主意,并且通常很明确。但偶尔ZMI肯定是有用的:用于检查工作流,或检查内容项的权限,或通过portal_setup仅安装配置文件的一部分。 ZMI真的没什么值得了解的吗?或者还有其他有用的小花絮吗?
答案 0 :(得分:9)
ZMI中有一些地方我发现自己要回来获取诊断信息:
/ Control_Panel / Database:选择ZODB挂载点。 “缓存参数”选项卡显示已使用的指定ZODB缓存大小的大小。 “活动”选项卡显示加载缓存和写入的对象数量。
/ Control_Panel / DebugInfo / manage:大量信息,包括显示当前时刻每个线程正在服务的请求。 “缓存详细信息”和“缓存极端详细信息”链接提供有关当前ZODB缓存中的对象类别的信息。
Plone站点根目录的组件选项卡:快速查看本地适配器和实用程序的注册方式。不要点击申请按钮!
撤消大多数对象的标签:查看最近提交了影响该对象的交易的人。
“安全”选项卡:查看对象实际有效的权限。你真的不想在90%的时间里改变权限;跟踪权限设置的位置太难了,工作流程可能会重置这些权限。使用Plone UI中的“共享”选项卡来分配本地角色。 (一个例外是我经常发现在特定上下文中为特定类型启用添加权限很方便。)在Zope 2.12中,此选项卡上有一个新功能,用于输入用户名并查看其中的权限和角色。该用户的效果很方便。
portal_catalog的“目录”选项卡:查看为特定路径存储的索引数据和元数据。 (也可以从索引中删除虚假条目。)
portal_catalog的“索引”选项卡:选择一个索引,然后单击其“浏览”选项卡,以全面了解索引的键以及与每个键关联的项目。
答案 1 :(得分:7)
要知道的关键是,虽然许多ZMI工具提供快速的网络自定义,但您以这种方式进行的自定义很难从数据库中导出。因此,它们不容易从开发环境转移到生产环境或从一个部署移动到另一个部署。
理想情况下,新开发人员应使用ZMI来探索和查找干预点。然后,了解如何在可以更可重复地从一个部署移动到另一个部署的策略添加(产品)中实现相同的更改。
答案 2 :(得分:6)
如果要为Plone编写代码,最好避免使用ZMI。通过ZMI做事的概念是非常有限的和沮丧的 - 越来越多的东西在那里没有,它会在某些时候消失。
实际的Plone控制面板为您提供了大多数可以使用的配置选项。对于其他任何事情,文件系统是最好看的地方。
答案 3 :(得分:4)
我同意其他海报,你不应该通过ZMI配置太多,因为它不是版本控制,你很容易忘记更改。
但ZMI对于调试和查看特定站点配置仍然非常有用。
以下是我经常咨询的ZMI中的一些工具:
在ZMI中还有更多的工具和东西需要调整(并打破你的网站),但上面提到的是90%的时间。
答案 4 :(得分:2)
portal_historiesstorage工具可能占用大量磁盘空间。设置为保存修订的任何内容类型都将它们保存在此处,默认情况下Plone会保留所有修订版本(请参阅portal_purgepolicy工具)。
我想要对生产Data.fs进行所有修订,但在获取开发副本后,我要做的第一件事是清除portal_historiesstorage。程序是:
在我的3G Data.fs上,这个小序列删除了2.5G!
我只在开发Data.fs上做过这个。如果没有真正了解的人的建议,我建议不要在生产网站上这样做。
答案 5 :(得分:1)
对于可能的维护任务,集成商或开发人员通常没有理由接触ZMI其他人。几乎所有自定义都可以使用Python或GenericSetup配置文件完成。配置文件的优点是:可重复性 - 能够维护文件系统 - 能够将文件置于版本控制之下。
能够通过ZMI工作和配置东西部分工作反对 Plone - 特别是当Plone在引擎盖下做额外的事情时。因此,唯一的建议是:如果可以的话,留下ZMI。 ZMI不适合使用Plone UI,只有在你真正知道自己在做什么时才应该触摸。
答案 6 :(得分:1)
是的,ZMI是偶尔进行的维护任务,或者在按下时,是一个快速而肮脏的CSS或模板调整。它不适用于任何真正的“编码”工作,并且在Plone的背景下最好被认为是Zope历史中一个奇怪且极少有用的余地。
答案 7 :(得分:0)
portal_actions对于更灵活的顶级导航也很有用。但同样最好通过gnericsetup配置。