【问题标题】:EEA Faceted Navigation - How to create a new widget in our own productEEA Faceted Navigation - 如何在我们自己的产品中创建新的小部件
【发布时间】:2013-03-05 16:50:37
【问题描述】:

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

详情我在eea/facetednavigation/widgets新增文件夹,修改eea/facetednavigation/widgets/configure.zcml

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

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

  • 我的/产品/小部件
  • 我的/产品/小部件/滑块
  • my/product/widgets/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 

有没有办法做到这一点?

【问题讨论】:

  • 您是否考虑通过联系作者将您的小部件直接贡献给 eea-package? [顺便说一句:我犹豫要不要使用这个产品,因为缺少 js-off-fallback 并因此破坏了可访问性,尽管 UI 非常令人印象深刻。]

标签: plone


【解决方案1】:

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

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

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

my/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>

【讨论】:

    【解决方案2】:

    不必重新实例化 IWidgetsInfo :)

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

    &lt;faceted:widget factory=".widget.Widget" /&gt;

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多