15

特定の Liferay ページに追加されたポートレットを見つけるにはどうすればよいですか?

例: WelcomeWikiSearch
の 3 つのページがあります。

現在、これらすべてのページにポートレットが追加されており、そのうちのいくつかはインスタンス化可能なポートレット (Web コンテンツ表示や iframe ポートレットなど) です。

iframe-portletここで、リクエスト パラメータの形式で情報をSearch pageからに渡したいと思いますWelcome page

4

1 に答える 1

22

私はこれを行う2つの方法を見つけました:

  1. ポートレットが追加された同じページでポートレットを見つけたい場合はthemeDisplay、ポートレットまたは JSP で使用可能なオブジェクトを利用できます。

    // In JSP
    List<String> portletIdList = themeDisplay.getLayoutTypePortlet().getPortletIds();
    
    // In portlet class
    ThemeDisplay themeDisplay = (ThemeDisplay) portletRequest.getAttribute(WebKeys.THEME_DISPLAY);
    List<String> portletIdList = themeDisplay.getLayoutTypePortlet().getPortletIds();
    
  2. ポートレットを別のページで見つけたい場合は、次の 3 つのことを知っておく必要があります。friendly-urlgroupIdおよびこのページがサイト (またはコミュニティ) のページであるかどうかpublic-pageprivate-page関係なく、コードは次のとおりです。

    // 101543 is the SiteId, if it is a public-page then "false" and "/search" is the friendlyURL
    LayoutTypePortlet layoutTypePortlet = LayoutTypePortletFactoryUtil.create(LayoutLocalServiceUtil.getFriendlyURLLayout(101543, false, "/search"));
    List<String> portletIdList = layoutTypePortlet.getPortletIds();
    

にはportletIdList、instanceIds を備えた portletIds が含まれています。したがって、リストからを使用してページiframe-portlet上の を除外すると、 のようなものが得られます。/searchcom.liferay.portal.util.PortletKeys.IFRAME48_INSTANCE_rPv9

于 2012-08-06T11:30:36.947 に答える