2

我为 EEA 分面导航创建了一个新的小部件“滑块”。它工作正常,但我直接在原始产品中进行了这些更改。

有关详细信息,我在中添加了一个新文件夹eea/facetednavigation/widgets并修改了eea/facetednavigation/widgets/configure.zcml.

我想在我自己的产品中移动这个新的小部件。

我创建了一些文件和文件夹:

  • 我的/产品/小部件
  • 我的/产品/小部件/滑块
  • 我的/产品/小部件/configure.zcml

并将我的新包“widgets”包含在根 zcml 中。

但它不起作用:

Module eea.facetednavigation.browser.app.view, line 89, in get_sections
Module eea.facetednavigation.browser.app.view, line 96, in get_view_widgets
Module eea.facetednavigation.browser.app.view, line 111, in get_widgets
TypeError: 'NoneType' object is not callable 

有没有办法做到这一点?

4

2 回答 2

0

不必重新实例化 IWidgetsInfo :)

您所要做的就是注册您的小部件:

<faceted:widget factory=".widget.Widget" />

查看在 eea.facetednavigation 命名空间之外注册的这个分面小部件:

于 2013-03-05T08:50:37.437 回答
0

我正在查看https://github.com/eea/eea.facetednavigation,因为我不知道你有什么版本。

看起来该<facet:widget />指令(我假设您在 my/products/widgets/configure.zcml 文件中有)将小部件附加到小部件注册表。他们注册所有的小部件,然后将注册表实例化为实用程序。

因此,请尝试通过在您的产品中添加 overrides.zcml 来重新实例化该类

我的/产品/覆盖.zcml

与以下

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:browser="http://namespaces.zope.org/browser">

  <configure package="eea.facetednavigation">
    <utility provides=".interfaces.IWidgetsInfo"
             factory=".widgets.WidgetsInfo" />
  </configure>

</configure>
于 2013-02-13T23:24:27.180 回答