1

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

在我的设置中,我使用每种语言的一个文件夹。/en 包含所有英语内容,/nl 包含所有荷兰语内容,等等。plone root 没有portlet,所以我将“Event”portlet 分别添加到/nl 和/en 文件夹中。我在 events.pt 模板中查看 ZMI,似乎它从属性中获取 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 不想显示事件的开始和结束日期。

4

1 回答 1

1

事件portlet 使用视图为其提供数据,表达式'view/all_events_link' 调用该视图上的方法来为其提供链接。您有 2 个选项来替换该链接:

  1. 注册您自己的事件 portlet,它是旧的子类,并替换 all_events_link 方法。这在大量定制选项中,并且需要 Python 编码。请参阅此邮件线程,了解有关如何实现此目的的一些一般指示。

  2. 仅将模板替换为 portlet 呈现器。Martin Aspeli在 Plone.org 上记录了这种方法;这只需要一些 ZCML 配置即可开始工作。然后,您可以复制 events.pt 模板并将 portlet 页脚替换为链接到正确位置的页脚。

于 2009-08-13T12:08:18.120 回答