我知道在Liferay中,可以使用以下代码在主题的Portlet
文件中嵌入预定义的.ftl
:
<@liferay_portlet["runtime"]
portletProviderAction=ACTION
portletProviderClassName="CLASS_NAME"
/>
但是我想在主题内创建一个新的Portlet(及其所有Java类)。例如,可以在下面找到我的主题项目的示例框架。
我的问题是,在
Liferay 7
中是否可以在主题中包含完整的portlet,并且最终用户可以访问该portlet? (最终用户应该可以通过使用管理页面右侧的添加菜单将其添加到所需的任何位置)。如果是,我应该在哪里放置Java代码?我应该如何部署和构建它?有什么例子吗?
它的好处之一是在一个包中包含一个具有许多不同的合适自定义主题的主题,您可以与其他人共享它。
最佳答案
这些天,我一直远离主题,但了解它们很大程度上已部署为Webapp,WAR文件(Liferay在内部将其转换为WAB捆绑包)。虽然您可以在WAR文件中包含Portlet,但Liferay 7和DXP可以与许多较小的插件配合使用,并且通过将Portlet打包在OSGi捆绑软件中,您将更加灵活。
除非您以仍然需要WAR打包的技术来实现portlet,否则将所有内容打包到同一个WAR文件中并不会带来很多好处。更新portlet将使您也总是必须更新主题以及与主题一起包装的所有其他内容,而这一代Liferay可以做得更好。
我的建议是将Portlet打包为Portlet,将主题打包为主题。插件的数量不再重要,就像早期版本中一样。实际上,Liferay DXP的默认安装中现在有500多个模块(插件)。除了要安装的文件数量外,无需减少插件数量,也没有任何好处。这是我最担心的事情。
关于java - 在Liferay 7中的自定义主题内创建portlet,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47301572/