4

作为定制 Plone 的典型“集成商”程序员,我应该了解 ZMI 的哪些信息以帮助我更有效地编写代码?哪些设置、工具、陷阱、快捷方式和暗角可以节省我的时间并帮助我编写更好的代码?

编辑:将其视为我正在文件系统上编码,使用 GenericSetup 配置文件进行设置更改。我知道在 ZMI 中进行更改是一个坏主意,并且通常要避开。但有时 ZMI 确实很有用:用于检查工作流,或检查内容项的权限,或通过 portal_setup 仅安装配置文件的一部分。ZMI真的没有什么值得了解的吗?或者那里还有其他有用的小花絮?

4

8 回答 8

9

ZMI 中有几个地方我发现自己会返回以获取诊断信息:

  • /Control_Panel/Database:选择一个 ZODB 安装点。缓存参数选项卡显示您指定的 ZODB 缓存大小已使用了多少。活动选项卡显示随着时间的推移有多少对象被加载到缓存和写入。

  • /Control_Panel/DebugInfo/manage:很多信息,包括显示当前每个线程正在服务的请求。“缓存详细信息”和“缓存极端详细信息”链接提供有关当前在 ZODB 缓存中的对象类别的信息。

  • Plone 站点根目录的组件选项卡:查看注册了哪些本地适配器和实用程序的快速方法。不要点击应用按钮!

  • 大多数对象的撤消选项卡:查看谁最近提交了影响对象的事务。

  • 安全选项卡:查看对对象实际有效的权限。您真的不想在 90% 的时间里更改权限;很难跟踪设置权限的位置,并且它们很可能被工作流程重置。使用 Plone UI 中的共享选项卡来分配本地角色。(一个例外是我经常发现在特定上下文中启用特定类型的添加权限很方便。)在 Zope 2.12 中,此选项卡上有一个新功能可以输入用户名并查看权限和角色将在该用户的效果,这很方便。

  • portal_catalog 的目录选项卡:查看为特定路径存储了哪些索引数据和元数据。(也可以从索引中删除虚假条目。)

  • portal_catalog 的索引选项卡:选择一个索引,然后单击它的浏览选项卡以了解哪些键被索引以及哪些项目与每个键相关联。

于 2011-02-26T17:13:25.030 回答
7

要知道的关键是,虽然许多 ZMI 工具提供了快速的、通过 Web 的定制,但您以这种方式进行的定制很难从数据库中导出。因此,它们不会轻易地从开发环境迁移到生产环境或从一个部署迁移到另一个部署。

理想情况下,新开发人员应该使用 ZMI 来探索和找到干预点。然后,了解如何在策略附加组件(产品)中实现相同的更改,以更可重复地从一个部署转移到另一个部署。

于 2011-02-24T00:11:37.440 回答
6

如果你想为 Plone 写代码,最好避开 ZMI。通过 ZMI 做事的概念非常有限和不鼓励 - 越来越多的东西在那里不可用,并且在某个时候它会消失。

实际的 Plone 控制面板为您提供了您可以使用的大多数配置选项。对于其他任何事情,文件系统都是最好的查看位置。

于 2011-02-24T00:10:13.613 回答
4

我同意其他发帖者的观点,即您不应该通过 ZMI 进行过多配置,因为它不在版本控制中,您很容易忘记更改。

但是 ZMI 对于调试和查看特定站点配置仍然非常有用。

以下是我经常参考的 ZMI 中的一些工具:

  • portal_javascripts:关闭调试。检查那里有哪些脚本,它们的渲染条件是什么,是否找到了?
  • portal_css:与 portal_javascripts 基本相同,但用于样式表。
  • portal_types:查看类型的属性是什么。它可以在全球范围内创建吗?您可以在其中创建哪些类型?它的默认视图是什么?等等。
  • portal_catalog:有哪些索引?目录中有哪些元数据?您可以清除和重建目录,甚至可以浏览目录。
  • portal_workflow:某个工作流中有哪些状态/转换/权限?什么工作流在特定类型上处于活动状态?
  • portal_properties/site_properties:查看和设置站点范围的属性。很多这些设置都在 plone_control_panel 中(即在 ZMI 之外),但在这里它们位于一个页面上,并且 ZMI 可以更快地导航。
  • portal_skins:查看安装了哪些皮肤文件夹。查看皮肤层的顺序(通过属性选项卡)。您还可以在皮肤目录中编辑模板、样式表和 javascript。不建议!但对调试很有用。
  • portal_setup:如果您只是随意添加/删除/重新安装附加组件,一些非常大且复杂的 Plone 网站可能会崩溃。通常只运行特定的 GenericSetup 更新会更安全。例如,如果您添加了一个新的 portlet,不如通过 portal_setup(导入选项卡)导入特定的 (portlets.xml) 步骤,然后重新安装整个产品。
  • portal_actions:配置哪些操作可见/存在。
  • portal_quickinstaller:快速重新安装,卸载附加组件。通常比加载 Plone Control Panel 的等效项更快、更轻量级。
  • acl_users:有时在使用 LDAPUserFolder 之类的附加组件时,您必须在 acl_users 中进行挖掘来配置和测试它。您也可以在此处创建用户,尽管最好通过 Plone 控制面板(即不在 ZMI 中)执行此操作

在 ZMI 中有更多工具和东西可以调整(并破坏您的网站),但以上这些是我 90% 的时间使用的。

于 2011-02-28T08:38:58.753 回答
2

portal_historagestorage 工具会占用大量磁盘空间。任何设置为保存修订的内容类型都会将它们保存在这里,默认情况下 Plone 会保留所有修订(请参阅 portal_purgepolicy 工具)。

我想要对生产 Data.fs 进行所有修订,但是在为开发制作副本之后,我要做的第一件事就是清除 portal_historagestorage。程序是:

  • 转到 ZMI 中的 Plone 站点
  • 删除 portal_historystorage 工具
  • 转到portal_setup,导入选项卡
  • 在“选择配置文件或快照”下选择“CMFEditions”
  • 使用处理程序 Products.GenericSetup.tool.importToolset 选择步骤
  • 取消选中“包括依赖项?”
  • 点击“导入所选步骤”以重新添加 portal_historiesstorage
  • 打包 Data.fs 并从文件系统中删除生成的 Data.fs.old

在我的 3G Data.fs 上,这个小序列删除了 2.5G!

我只在开发 Data.fs 上做过这个。如果没有真正了解的人的建议,我不建议在您的生产站点上执行此操作。

于 2011-02-23T23:14:31.147 回答
1

集成商或开发人员通常没有理由接触 ZMI 其他可能的维护任务。几乎任何自定义都可以使用 Python 或 GenericSetup 配置文件来完成。配置文件的优点是:可重复性 - 能够在文件系统上维护 - 能够将文件置于修订控制之下。

能够通过 ZMI 工作和配置东西在一定程度上Plone 不利——尤其是当 Plone 在幕后做额外的事情时。所以唯一的建议是:如果可以的话,留下ZMI。ZMI 不是使用 Plone UI 的合适替代品,只有在您真正知道自己在做什么时才应该触摸它。

于 2011-02-24T03:37:27.307 回答
1

是的,ZMI 用于偶尔的维护任务,或者在按下时用于快速而肮脏的 CSS 或模板调整。它并不适用于任何真正的“编码”工作,并且在 Plone 的上下文中,最好将其视为 Zope 历史上的一个奇怪且极少有用的遗留物。

于 2011-02-24T04:32:50.280 回答
0

portal_actions 对于更灵活的顶级导航也很有用。但最好还是通过 gnericsetup 配置。

于 2011-02-27T04:28:50.667 回答