3

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

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

现在我可以使用 quickinstaller 进行安装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"部分。)

我该如何调试呢?

我愿意“蛋化”我的产品(AdditionalProduct首先,因为它有问题;也许BaseProduct以后也有),但我不确定工作量,并且操作指南会很有用......

4

2 回答 2

3

您可以通过排除以下情况进行调试:

  • 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'意味着“加载 meta.zcml 而不是默认文件名,即 configure.zcml”)

最后,我建议创建一个 Python 包(又名“eggify”)。有关概述,请参见以下内容:

于 2015-06-25T14:04:34.160 回答
3

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

<include file="profiles.zcml" />

是这样吗?

于 2015-06-26T11:20:41.463 回答