我知道在Liferay中,可以使用以下代码在主题的Portlet
文件中嵌入预定义的.ftl
:
<@liferay_portlet["runtime"]
portletProviderAction=ACTION
portletProviderClassName="CLASS_NAME"
/>
但是我想在主题中创建一个新的portlet(包含所有Java类)。例如,我的主题项目的示例骨架可以在下面找到。
我的问题是,在Liferay 7
中,是否可以在主题内部拥有完整的portlet,最终用户可以访问该portlet? (最终用户应该能够通过使用管理页面右侧的添加菜单将其添加到任何他们想要的位置)。
如果是,我应该在哪里放置我的Java代码?我该如何部署和构建它?有什么例子吗?
它的一个好处是在一个包中有一个主题,有许多不同的合适自定义主题,你可以与他人分享。
答案 0 :(得分:2)
我现在远离主题,但要明白他们主要部署为webapps,WAR文件(Liferay在内部转换为WAB捆绑包)。虽然您可以在WAR文件中使用Portlet,但Liferay 7和DXP可以与许多较小的插件配合使用,并且通过在OSGi包中打包portlet,您可以更加灵活。
除非您在仍需要WAR打包的技术中实现您的portlet,否则您在同一个WAR文件中打包时并没有获得太多收益。更新portlet会让你总是不得不更新主题和其他所有包装的东西 - 你可以用这一代Liferay做得更好。
我的建议是将portlet打包为portlet,将主题打包为主题。插件的数量不再像以前的版本那样重要。实际上,Liferay DXP的默认安装中现在有超过500个模块(插件)。除了您要安装的文件数量之外,没有必要缩小插件数量并且没有任何好处。这是我担心的最后一件事。