2016-11-03 5 views
1

コントロールパネルセクションにカスタムポートレットを追加するにはどうすればよいですか?私は様々なチュートリアルを見ましたが、すべてが生きています6.2。どのようにliferay 7でそれを達成するには?あなたがコンポーネントのプロパティでコントロールパネルのカテゴリを定義することができ、事前にありがとう...liferay 7でコントロールパネルセクションにポートレットを移動しますか?

答えて

3

、あなたがバンドルを使用している場合は(のためのたとえば、Blade toolsで作成した場合)、パネルアプリで動作させることができます。パネルアプリケーションは、ポートレットをコントロールパネルの位置にマップします。

は、あなたが以下のようなブレードによって生成されたポートレットを、持っているとします

@Component(
    immediate = true, 
    property = { 
     "com.liferay.portlet.display-category=category.sample", 
     "com.liferay.portlet.instanceable=false", 
     "javax.portlet.name=cpportlet", 
     "javax.portlet.display-name=Control Panel Portlet", 
     "javax.portlet.security-role-ref=power-user,user" 
    }, 
    service = Portlet.class 
) 
public class CpPortlet extends GenericPortlet { 

    @Override 
    protected void doView(
      RenderRequest renderRequest, RenderResponse renderResponse) 
     throws IOException, PortletException { 

     PrintWriter printWriter = renderResponse.getWriter(); 

     printWriter.print("cp-portlet Portlet - Hello World!"); 
    } 

} 

今、あなたはちょうどPanelAppサービス実装する別のOSGiコンポーネントの作成:それをコンパイルするには

@Component(
    immediate = true, 
    property = { 
     "panel.app.order:Integer=10000", // Defines position in list 
     "panel.category.key=" + PanelCategoryKeys.SITE_ADMINISTRATION_CONTENT // To appear in the "Content" session 
    }, 
    service = PanelApp.class 
) 
public class CpPanelApp extends BasePanelApp { 

    @Override 
    public String getPortletId() { 
     return "cpportlet"; // Same name of the portlet. 
    } 

    @Override 
    @Reference(
     target = "(javax.portlet.name=cpportlet)", 
     unbind = "-" 
    ) 
    public void setPortlet(Portlet portlet) { 
     super.setPortlet(portlet); 
    } 

} 

を、あなたは意志"Application List app" APIに依存しています - ここにはPanelAppクラスがあります。それでは、以下のように、あなたのbuild.gradleにこの依存関係を追加:

dependencies { 
    compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "2.0.0" 
    compileOnly group: "javax.portlet", name: "portlet-api", version: "2.0" 
    compileOnly group: "org.osgi", name: "org.osgi.compendium", version: "5.0.0" 

    compileOnly group: "com.liferay", name: "com.liferay.application.list.api", version: "2.0.0" // Dependency added 
} 

今、それを展開し、ポートレットがリストに表示されます。

enter image description here

これは単なる基本的な考え方である - documentationそれについて非常に有益です。

+0

ポートレットはインスタンス化できない必要があります。ポートレットがコントロールパネルに表示されるようにするには、ポートレットを「com.liferay.portlet.instanceable = true」から「com.liferay.portlet.instanceable false」に変更するには、falseに変更してください。 – suatCoskun

+0

@suatCoskun Updatedありがとう! (私の事例は仕事に慣れていたと思っていたが、それはもう少し前だったので、何かを見逃してしまった...) – brandizzi

関連する問題