1

カスタム ポートレットをプログラムでコントロール パネルに追加したいと考えています。どうすればできますか?

4

2 に答える 2

1

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)>
于 2012-12-30T22:47:32.077 に答える
0

次の理由から、プログラム的に不可能だと思います。

  1. コントロール パネル ページのポートレットは、ポートレットがテーブルに格納さtypeSettingsれているポータルの他のページの場合と同様に、データベースに格納されません。Layout

  2. 代わりに、コントロールパネルページに表示されるポートレットは、タグの値を示すフィールド_controlPanelEntryCategoryの値によって決定され、この値は、サーバーの起動時に毎回のみ呼び出されると思われるメソッドによって各ポートレットに設定されます( ) またはポートレットがデプロイされている ( )。PortletImpl<control-panel-entry-category>liferay-portlet.xmlPortletLocalServiceImpl#_readLiferayPortletXMLinitEAR()initWAR()

そのため、ポートレットをコントロール パネルに追加できるようにするにliferay-portlet.xmlは、さまざまなタグのエントリが必要です。<control-panel-entry-*>そして、これはプログラムでは不可能です。

これは私の推論と理解によるものですが、これが可能であれば、Liferay のマスターから聞きたいです。

于 2012-12-28T14:44:05.317 に答える