【问题标题】:My Plone product doesn't show up in the quickinstaller我的 Plone 产品没有出现在快速安装程序中
【发布时间】:2015-06-26 19:20:41
【问题描述】:

我有一个带有传统产品BaseProduct 的Plone 站点(版本直接在Zope 安装的Products 文件系统目录中);其余的设置是基于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),但我不确定工作量和如何- 会很有用...

【问题讨论】:

  • 如果您在配置文件中引入错误,有时产品会从快速安装程序中消失。转到 Plone 安装产品页面(不是 ZMI!)并检查页面底部,您可以在其中看到这些错误。
  • @keul:你不是指快速安装程序 (portal_quickinstaller),对吗?我在那里找不到任何看起来像错误消息的东西。
  • 否,来自 Plone 用户界面。
  • 我不明白你的意思;我在plone_control_panelportal_controlpanel 中什么都看不到;该产品在prefs_install_products_form(“附加组件”)中不可见。我在 gettext 目录中找不到像 user interface 这样的东西,所以最好的提示是页面的 ID ...

标签: plone plone-4.x


【解决方案1】:

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

<include file="profiles.zcml" />

是这样吗?

【讨论】:

  • 我想知道为什么该产品在我的 Linux 机器上可见,但在服务器上不再可见;确实,该文件似乎在合并时丢失了......
【解决方案2】:

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

  • ZCML 未加载(在profiles.zcml 中引入语法错误和 重启 Plone 以确保 profile.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”)。有关概述,请参见以下内容:

【讨论】:

  • 显然没有加载 ZCML。我为BaseProductAdditionalProduct 引入了相同的错误;我看到BaseProduct 的预期错误导致启动失败,但AdditionalProduct 却没有。当然,它与BaseProduct 在同一个Products 文件夹中,并且它有一个__init__.py 文件(正如我可以通过import pdb; pdb.set_trace() 行证明的那样)。我应该把这个入口点放在哪里?
  • 好的,找到入口点 (setup.py)。我仍然不知道为什么不使用该产品。除了profiles.zcml 之外,还有什么需要让它可见吗?
  • 为了记录-我同时蛋化了我的AdditionalProduct。也许这有点矫枉过正,但我​​也可以把BaseProduct 蛋化,这可能更有意义。
猜你喜欢
  • 2018-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多