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

Plone EEA分面导航-如何在我们自己的产品中创建新的小部件,plone,Plone,我为EEA分面导航创建了一个新的小部件“滑块”。 它工作得很好,但我直接在原始产品中进行了这些更改 有关详细信息,我在eea/facetednavigation/widgets中添加了一个新文件夹,并修改了eea/facetednavigation/widgets/configure.zcml 我想在我自己的产品中移动这个新部件 我已经创建了一些文件和文件夹: 我的/产品/小部件 我的/产品/小部件/滑块 我的/product/widgets/configure.zcml 并在根zcml中包

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

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

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

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

  • 我的/产品/小部件
  • 我的/产品/小部件/滑块
  • 我的/product/widgets/configure.zcml
并在根zcml中包含了我的新包“widgets”

但它不起作用:

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 
有办法做到这一点吗

我在看,因为我不知道你有什么版本

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

因此,请尝试通过在以下位置向产品添加overrides.zcml来重新实例化该类:

我的/product/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>

您不必重新实例化IWidgetsInfo:)

您只需注册小部件:

请参阅此在eea之外注册的faceted小部件。facetednavigation命名空间:


您是否考虑过通过联系作者将您的小部件权利贡献给eea软件包?[顺便说一句:我犹豫是否要使用这个产品,因为缺少一个js-off后备方案,从而破坏了可访问性,尽管UI给人留下了深刻印象。]