2011-07-28 5 views
0

私は暮らしの中では新しいです。だから私は自分のシナリオを説明したい。彼はサイドポートレットを左生涯のポートレット間通信

  • 2つのハイパーリンクがDEMO1 & DEMO2を言う含まれています。1左側にあり、他方が右側にある -

    実は、私は自分のWebページ上の2つのポートレットを持っているが。

  • 私は別の2つのポートレット、demo1Portlet & demo2Portletと言っています。
  • 右側のポートレットの代わりに、「demo1Portlet」がデフォルトで で表示されます。
  • ここでdemo2リンクをクリックすると右端 ポートレットが変更され、 "demo2Portlet"が表示されます。 demo1リンクをクリックすると右側に "demo1Portlet"が表示されます。

私はこのタスクをどのように達成できますか?

可能な限り早急にご返信ください。

私はリフトレイを初めて使っているので、これはIPCを使って、またはIPCなしで達成することはできません。どんな方法であれ説明してください。

ありがとうございました。

答えて

2

ポートレットが互いに会話する方法はいくつかあります。ほとんどのものは、IPCの文書とdescendantpagesの文書でカバーされています。あなたのケースでは

、あなたが本当にclient-sideページをご覧ください:

// you may need to have jQuery instead of $. Liferay may have its own 
// $ function which jQuery shouldn't mess with. 
$(function() { 
     $('a.comm-demo').click(function(event) { 
      var txt = $(this).next().val(); // demo<number> 
      Liferay.trigger('click', {text: txt}); 
      return false; 
     }); 
}); 
:あなたの基本的な構造

<a href="javascript:void(0)" class="comm-demo">demo[number]</a> 

あなたは、これは "送信ポートレット" にJSだろう

「受信ポートレット」:

Liferay.bind( 
     'click', 
     function(event, data) { 
      var txt = data.text; 
      // this will set all class-of-fields to have the text 
      // "demo<number from above>Portlet" 
      $('.class-of-fields')[0].html(txt + "Portlet"); 
      // I believe there is a way to minimize/maximize a portlet by 
      // simulating a mouse click, but research would be needed to 
      // confirm. 
}); 
+0

+1多くのソリューションのように、フック/ポートレットタイプのソリューションに固執していない従来のソリューションは、このカテゴリのコーディングのようです。 – mico

+0

ポータルの世界では、ネームスペースの問題をきちんと処理するので、IPCの方法をお勧めします。このようなJavaScriptイベントを受け取るページには、あらゆる種類の「一致する」HTMLを持つことができます。さらに、IPCはこれに対するサーバーの副作用を処理する方法です。ただし、通常はページの再読み込みが必要です。 また、上記のコードはLiferay 5.2に含まれていますが、バージョン6ではAlloyUI(YUI拡張)に置き換えられているjqueryを使用しています。また、jQueryを使用するには、互換性モード、例えば上記のコードが "$"とコメントされているところで "jQuery"を使用してください –

+0

よろしくお願いします...リロードは難しくなります... – cwallenpoole