我为EEA分面导航创建了一个新的小部件'Slider'。 它工作正常,但我直接在原始产品中进行了这些更改。
有关详情,我在eea/facetednavigation/widgets
添加了一个新文件夹并修改了eea/facetednavigation/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
有办法做到这一点吗?
答案 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名称空间外注册的这个多面体窗口小部件: