2011-07-28 7 views
0

저는 평생을 새 단다. 그래서, 나는 단지 나의 시나리오를 설명하고 싶다.lifteray의 포틀릿 간 통신

사실 나는 내 웹 페이지에이 포틀릿이 - 하나는 왼쪽에 있고 다른 하나는 오른쪽에 있습니다 :

  • 그는 측 포틀릿이 하이퍼 링크는 데모 1 & demo2 말을 포함 떠났다.
  • 그리고 또 다른 두 포틀릿은 demo1Portlet & demo2Portlet이라고 말합니다.
  • 오른쪽 사이드 포틀릿 대신 "demo1Portlet"이 기본값으로 으로 표시됩니다.
  • 이제 demo2 링크를 클릭하면 오른쪽에 포틀릿이 변경되고 "demo2Portlet"이 표시되고 demo1 링크에 을 클릭하면 오른쪽에 "demo1Portlet"이 표시됩니다. .

이 작업을 어떻게 수행 할 수 있습니까?

최대한 빨리 회신 해주십시오.

나는 휘발성 물질에 익숙하지 않으므로 IPC없이 IPC를 통해 달성 할 수있는 것은 무엇인지 모르겠다. 방법이 무엇이든 설명하십시오.

감사합니다.

답변

2

포틀릿을 서로 다른 방식으로 대화하게하는 두 가지 방법이 있습니다. 대부분은 IPC 's 및 descendantpages의 문서에서 다루어집니다.

// 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; 
     }); 
}); 
:이은 "송신기 포틀릿"에 JS 것

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

기본적인 구조로

을 : 귀하의 경우에는

, 당신은 정말 client-side 페이지를 보라

다음 "받는 포틀릿"에서 :

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 많은 솔루션과 같은 솔루션의 후크/포틀릿 유형에 집착하지 않는 out of box 솔루션은이 코딩 카테고리에있는 것으로 보입니다. – mico

+0

포털 세계에서 IPC 방식을 권장합니다. 네임 스페이스 문제를 깔끔하게 처리하기 때문에 이러한 자바 스크립트 이벤트를 수신하는 페이지에 모든 "일치하는"html이있을 수 있습니다. 또한 IPC는 서버 측 반응을 처리하는 방법입니다. 그러나 일반적으로 페이지 새로 고침이 관련되어 있습니다. 또한 위의 코드는 Liferay 5.2에 포함되어 있지만 버전 6에서는 AlloyUI (YUI 확장)로 대체 된 jquery를 사용하고 있습니다. jQuery를 사용하려면 확실히 호환성을 사용해야합니다. 모드, 예. 위의 코드에서 "$"(주석으로 표시)를 사용하는 "jQuery"를 사용하십시오 –

+0

그래 ... 재로드가 어려워집니다 ... – cwallenpoole