Documentation

ウィジェット間の通信

ポートレットウィジェットは、パブリックレンダリングパラメータとイベントを使って相互に通信することができます。 Liferayポートレットの中には、この通信機構を最大限に活用するための設定UIを提供するものがあります。 ポートレットの設定画面にアクセスするには、以下の手順で行います。

  1. オプション アイコン (Options) → [Configuration] → [Communication] タブの順にクリックします。

パブリックレンダリングパラメータを使用してポートレット同士が通信するように設定することができます。

上のスクリーンショットはWikiのもので、6つのパブリックレンダリングパラメータを持っています。 categoryId, nodeId, nodeName, resetCur, tag, および titleです。 これらのパラメータそれぞれについて、他のポートレットから来る値を無視したり、他のパラメータから値を読み取るようにポートレット設定することができます。

重要

ウィジェットがポートレットでない場合、この機能は利用できません。

他のポートレットから来る特定のパラメータの値を無視すると便利なのはなぜでしょうか? Wikiアプリケーションの一般的なユースケースを考えてみましょう。 Wikiポートレットはしばしばタグナビゲーションポートレットと一緒に使用され、ユーザが後者のタグをクリックすると、Wikiはそのタグを持つページのリストを表示します。 管理者は、他のポートレットで行われるタグのナビゲーションとは無関係に、Wikiに常にフロントページを表示させたいと思うかもしれません。 他のウィジェットから来るパラメータの値を無視することで、これを実現します。

他のポートレットからパラメータの値を読み取ることは、開発者が意図していなくてもポートレット同士の通信を可能にする、高度で非常に強力なオプションです。 例えば、Wikiが特定の国に関する情報を公開するために使用され、管理上の理由から国を閲覧できる別のポートレットがあると想像してください。 2つ目のポートレットには、 country というパブリックレンダリングパラメータがあり、国名が表示されます。 Wikiには、管理ポートレットで選択されている国の情報を表示させます。 これは、Wikiポートレットのtitleパラメータの値を管理ポートレットのcountryパラメータから読み取るように設定することで実現できます。