EEA分面导航 - 如何在我们自己的产品中创建新的小部件

时间:2013-02-08 16:11:37

标签: plone

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

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

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

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

  • my / product / widgets
  • 我/产品/部件/滑块
  • 我/产品/部件/ configure.zcml中

并在root 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 

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:0)

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

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

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

我/产品/ overrides.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>

答案 1 :(得分:0)

必须重新实例化IWidgetsInfo:)

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

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

查看在eea.facetednavigation名称空间外注册的这个多面体窗口小部件: