代码之家  ›  专栏  ›  技术社区  ›  Sander Marechal

如何在plone 3中更改“事件”portlet

  •  1
  • Sander Marechal  · 技术社区  · 15 年前

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

    在我的设置中,每种语言使用一个文件夹。/en包含所有英语内容,/nl包含所有荷兰语内容,等等。plone根没有portlet,所以我将“事件”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中的所有事件链接属性吗?如果是,在哪里?

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

    1 回复  |  直到 15 年前
        1
  •  1
  •   joeforker    15 年前

    事件portlet使用一个视图为其提供数据,并且表达式“view/all\u events\u link”调用 method on that view 为它提供一个链接。您有两个选项可以替换该链接:

    1. 注册您自己的事件portlet,该portlet子类化旧的事件portlet,并替换all_events_link方法。这在重定制选项中,并且需要python编码。见 this mail thread 关于如何实现这一点的一些一般性建议。

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