python - 如何更改 Plone 3 中的 "Event"portlet

标签 python portlet plone zope

我正在尝试在 Plone 3 中自定义“事件”portlet,以显示即将发生的事件。该 portlet 页脚中的“查看”链接转到/events URL。但我的网站是多语言的,因此 URL 并不总是正确的。例如,荷兰事件的正确 URL 应为/evenementen。

在我的设置中,我对每种语言使用一个文件夹。/en 包含所有英语内容,/nl 包含所有荷兰语内容,等等。 plone 根没有 portlet,因此我将“Event”portlet 分别添加到/nl 和/en 文件夹中。我在 ZMI 的 events.pt 模板中查找,它似乎从属性中获取 URL,但是该属性定义在哪里以及如何更改它?我在 ZMI 中找不到 portlet 配置。以下是来自 plone.app.portlets.portlets/events.pt 的片段:

<dd class="portletFooter">
    <a href=""
       class="tile"
       tal:attributes="href view/all_events_link"
       i18n:translate="box_upcoming_events">
            Upcoming events&hellip;
    </a>
    <span class="portletBottomLeft"></span>
    <span class="portletBottomRight"></span>
</dd>

那么,我可以在 ZMI 中的某个地方更改 all_events_link 属性吗?如果是的话,在哪里?

作为替代方案,我还尝试添加一个“集合”portlet,其中包含列出所有事件的集合。但问题是集合 portlet 不想显示事件的开始和结束日期。

最佳答案

事件 portlet 使用 View 为其提供数据,并且表达式“view/all_events_link”调用 method on that view为其提供链接。您有 2 个选项来替换该链接:

  1. 注册您自己的事件 portlet,它是旧事件 portlet 的子类,并替换 all_events_link 方法。这是重度定制选项,并且需要 Python 编码。请参阅this mail thread关于如何实现这一目标的一些一般性指导。

  2. 仅用 portlet 渲染器替换模板。马丁·阿斯佩利有 documented this method on Plone.org ;这仅需要一些 ZCML 配置即可开始工作。然后,您可以复制 events.pt 模板并将 portlet 页脚替换为链接到正确位置的模板。

关于python - 如何更改 Plone 3 中的 "Event"portlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1271057/

相关文章:

python - Pandas 中元组的拆分系列

python - 从linux命令输出中选择文件名

jsp - Liferay7 未加载自定义标签库

plone - 如何将 documentactions viewlet 从一个 viewletmanager 移动到另一个?

python - 使用 NumPy 进行快速张量旋转

python - 列表推导式的解释

java - 如何在 Liferay 6.0.6 中的 JSF portlet 中上传文件

Java 门户和 Portlet

plone - Grok 在 plone 产品中找到我的静态文件夹

Solr 不索引 blob 文件