1

今後のイベントを表示するPlone3の「イベント」ポートレットをカスタマイズしようとしています。そのポートレットのフッターにある「表示」リンクは、/eventsURLに移動します。しかし、私のサイトは多言語対応であるため、URLが常に正しいとは限りません。たとえば、オランダのイベントの正しいURLは/evenementenである必要があります。

私のセットアップでは、言語ごとに1つのフォルダーを使用します。/ enはすべての英語のコンテンツを保持し、/nlはすべてのオランダ語のコンテンツを保持します。ploneルートにはポートレットがないので、「イベント」ポートレットを/nlフォルダーと/enフォルダーの両方に別々に追加します。ZMIでevents.ptテンプレートを調べていたところ、プロパティからURLを取得しているようですが、そのプロパティはどこで定義され、どのように変更できますか?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プロパティをどこかで変更できますか?もしそうなら、どこ?

別の方法として、すべてのイベントをリストするコレクションを含む「コレクション」ポートレットを追加しようとしました。ただし、問題は、コレクションポートレットがイベントの開始日と終了日を表示したくないということです。

4

1 に答える 1

1

イベントポートレットはビューを使用してデータを提供し、式'view / all_events_link'はそのビューのメソッドを呼び出して、リンクを提供します。そのリンクを置き換えるには、次の2つのオプションがあります。

  1. 古いものをサブクラス化し、all_events_linkメソッドを置き換える独自のイベントポートレットを登録します。これは重いカスタマイズオプションであり、Pythonコーディングが必要です。これを達成する方法に関するいくつかの一般的な指針については、このメールスレッドを参照してください。

  2. テンプレートだけをポートレットレンダラーに置き換えます。Martin Aspeliは、このメソッドをPlone.orgに文書化しています。これを機能させるには、いくつかのZCML構成のみが必要です。次に、events.ptテンプレートをコピーして、ポートレットフッターを適切な場所にリンクするフッターに置き換えることができます。

于 2009-08-13T12:08:18.120 に答える