カスタム ポートレットをプログラムでコントロール パネルに追加したいと考えています。どうすればできますか?
2 に答える
ControlPanel で使用できるようにするポートレットはおそらくすでにわかっているので (作成するポートレットの数は限られていますよね?)、完全にプログラム化する必要はありませんが、他の ControlPanel ポートレットと同じように実際に宣言できます。 . (情報については、他の質問を参照してください)
ただし、動的情報に基づいて管理ポートレットを表示/非表示にするには、この要素の宣言を使用できます ( http://www.liferay.com/dtd/liferay-portlet-app_6_0_0.dtdから取得) 。
<!--
The control-panel-entry-class value must be a class that implements
com.liferay.portlet.ControlPanelEntry and is called by the Control Panel to
decide whether the portlet should be shown to a specific user in a specific
context. The default value is set in portal.properties.
See:
http://docs.liferay.com/portal/6.0/javadocs/portal-service/com/liferay/portlet/ControlPanelEntry.html
-->
<!ELEMENT control-panel-entry-class (#PCDATA)>
次の理由から、プログラム的に不可能だと思います。
コントロール パネル ページのポートレットは、ポートレットがテーブルに格納さ
typeSettings
れているポータルの他のページの場合と同様に、データベースに格納されません。Layout
代わりに、コントロールパネルページに表示されるポートレットは、タグの値を示すフィールド
_controlPanelEntryCategory
の値によって決定され、この値は、サーバーの起動時に毎回のみ呼び出されると思われるメソッドによって各ポートレットに設定されます( ) またはポートレットがデプロイされている ( )。PortletImpl
<control-panel-entry-category>
liferay-portlet.xml
PortletLocalServiceImpl#_readLiferayPortletXML
initEAR()
initWAR()
そのため、ポートレットをコントロール パネルに追加できるようにするにliferay-portlet.xml
は、さまざまなタグのエントリが必要です。<control-panel-entry-*>
そして、これはプログラムでは不可能です。
これは私の推論と理解によるものですが、これが可能であれば、Liferay のマスターから聞きたいです。