2009-08-13 46 views
1

我試圖自定義Plone 3中顯示即將發生的事件的「事件」Portlet。該portlet頁腳中的「view」鏈接轉到/ events URL。但我的網站是多語言的,所以URL並不總是正確的。例如,荷蘭事件的正確網址應該很普遍。如何更改Plone 3中的「事件」Portlet

在我的設置中,我使用每種語言的一個文件夾。/zh持有所有英文內容,/ 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不想顯示事件的開始和結束日期。

回答

1

事件portlet使用視圖爲其提供數據,而表達式「view/all_events_link」調用method on that view來爲其提供鏈接。你有兩個選擇,以取代鏈接:

  1. 註冊自己的事件的portlet子類的舊人,並取代all_events_link方法。這在沉重的自定義選項中,並且需要Python編碼。請參閱this mail thread關於如何實現這一點的一些通用指針。

  2. 用portlet呈現器替換模板。 Martin Aspeli有documented this method on Plone.org;這隻需要一些ZCML配置就可以工作。然後,您可以複製events.pt模板並將Portlet頁腳替換爲鏈接到正確位置的頁腳。

+0

謝謝。這看起來很有用。我會在週末後測試它。 – 2009-08-14 05:42:51

+0

第二種方法奏效。我無法弄清楚如何更改每種語言的鏈接,因此我只是一起從portlet中刪除頁腳。 – 2009-08-18 12:30:01