如何更改Plone 3中的“事件”端口小部件

1 投票
1 回答
1240 浏览
提问于 2025-04-15 13:34

我正在尝试自定义Plone 3中的“事件”小部件,这个小部件用来显示即将发生的活动。这个小部件底部的“查看”链接指向的是/events这个网址。但是我的网站是多语言的,所以这个网址并不总是正确的。例如,荷兰活动的正确网址应该是/evenementen。

在我的设置中,我为每种语言使用一个文件夹。/en文件夹里放的是所有英文内容,/nl文件夹里放的是所有荷兰内容,等等。Plone的根目录没有小部件,所以我分别在/nl和/en文件夹中添加了“事件”小部件。我在ZMI(Zope管理界面)中查看events.pt模板,发现它似乎是从一个属性中获取网址的,但这个属性在哪里定义的,我该如何更改它呢?我在ZMI中找不到小部件的配置。以下是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这个属性吗?如果可以的话,在哪里呢?

作为替代方案,我也尝试添加一个“集合”小部件,里面列出所有活动。但是问题是,这个集合小部件不显示活动的开始和结束日期。

1 个回答

1

这个事件小工具使用一个视图来获取数据,而表达式 'view/all_events_link' 是在这个视图上调用一个 方法,用来提供一个链接。你有两种方式来替换这个链接:

  1. 注册你自己的事件小工具,继承旧的小工具,并替换 all_events_link 方法。这种方式是比较复杂的定制,需要用到 Python 编程。可以参考 这个邮件讨论串,里面有一些关于如何实现的基本提示。

  2. 只替换模板,使用小工具渲染器。Martin Aspeli 在 Plone.org 上记录了这种方法;这只需要一些 ZCML 配置就能工作。然后你可以复制 events.pt 模板,把小工具的底部替换成一个链接到正确位置的模板。

撰写回答