我想以编程方式将自定义portlet添加到控制面板。我该怎么做 ?
答案 0 :(得分:1)
您可能已经知道在ControlPanel中可以使用哪个portlet(您编写的portlet数量有限,对吗?)您不需要将其完全编程,但实际上可以像任何其他ControlPanel一样声明它你有Portlet。 (有关信息,请参阅other question)
但是,为了使您的管理portlet基于动态信息显示/消失,您可以使用此元素的声明(取自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)>
答案 1 :(得分:0)
我认为以编程方式不可能,因为:
控制面板页面上的portlet不存储在数据库中,门户网站中其他页面的情况也是如此,其中portlet在typeSettings
表中存储为Layout
。
相反,控制面板页面上的portlet取决于_controlPanelEntryCategory
中字段PortletImpl
的值,该值表示liferay-portlet.xml
中<control-panel-entry-category>
的值通过PortletLocalServiceImpl#_readLiferayPortletXML
方法为每个portlet设置此值,我认为每次只在服务器启动时(在initEAR()
中)或部署了一个portlet时调用initWAR()
})。
因此,需要在liferay-portlet.xml
中为不同的<control-panel-entry-*>
标记添加条目才能将portlet添加到控制面板。这不可能以编程方式实现。
这是根据我的推理和理解,但我想听听Liferay大师是否有可能。