我的 Plone 产品没有出现在快速安装程序中

My Plone product doesn't show up in the quickinstaller

我有一个带有传统产品 BaseProduct 的 Plone 站点(版本直接在 Zope 安装的 Products 文件系统目录中);其余设置基于 buildout

对于项目的一个分支,我需要另一个产品 AdditionalProduct,我用同样的方法制作了它(我知道这不是当前最先进的方法;但它以前是这样工作的我...)。

现在我 能够使用快速安装程序安装 AdditionalProduct(现在它只包含一个皮肤目录和一个模板,但这会改变,当然)。

遗憾的是,这不再有效;该产品不再显示在快速安装程序中。没有可见的错误;我能够在实例启动期间 pdb.set_trace() 它,并且 error.log 也没有错误。

profiles.zcml 文件如下所示:

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
    i18n_domain="BaseProduct">
  <include package="Products.GenericSetup" file="meta.zcml" />
  <genericsetup:registerProfile
      name="default"
      title="AdditionalProduct"
      directory="profiles/default"
      description="Extension profile for AdditionalProduct."
      provides="Products.GenericSetup.interfaces.EXTENSION"
      />
</configure>

(从另一个分支的早期 AdditionalProduct 复制和更改;我不太理解 "meta.zcml" 部分。)

我该如何调试它?

我愿意 "eggify" 我的产品(AdditionalProduct 首先,因为它有问题;也许 BaseProduct 稍后也是),但我不确定工作量和操作方法会很有用...

您可以通过排除以下情况来调试它:

  • 未加载 ZCML(在 profiles.zcml 中引入语法错误并且 重新启动 Plone 以确保 profiles.zcml 已加载。)
  • 您没有 'z3c.autoinclude.plugin': 'target = plone' 入口点(不适用,因为您没有使用 Python 包)
  • 你的产品没有被 Zope2 加载,因为它不在产品文件夹中,或者有一些相关的问题,例如缺少 __init__.py.

此外,您可能不需要以下内容,因为在您的产品加载之前,Plone 应该已经包含了它:

  <include package="Products.GenericSetup" file="meta.zcml" />

(而file='meta.zcml'表示"load meta.zcml instead of the default file name i.e. configure.zcml")

最后,我建议创建一个 Python 程序包(又称 "eggify")。请参阅以下内容以了解概览:

您的产品应该有一个 configure.zcml 文件,其中包含您的 profiles.zcml 和以下指令:

<include file="profiles.zcml" />

是这样吗?