Liferay 7.2 自定义文档和媒体 Portlet
Posted
技术标签:
【中文标题】Liferay 7.2 自定义文档和媒体 Portlet【英文标题】:Liferay 7.2 Customize Documents And Media Porlet 【发布时间】:2021-02-06 08:36:37 【问题描述】:我有 Liferay 7.2 我想自定义小部件 Documents AND Media 布局的 html
我尝试为文档和媒体创建一个挂钩,但似乎这不是正确的方法。
我该怎么做?
【问题讨论】:
【参考方案1】:首先,您在谈论挂钩这一事实告诉我您来自 Liferay 6 或更早版本。忘记旧的模块类型(“war-style modules”),拥抱新的“jar-style modules”或“OSGi modules”,它们在基础上利用了 OSGi 方法和机制。最接近钩子功能的新模块类型是"module fragment"。
或者,如果您想创建一个模块来覆盖多个其他模块的 JSP(或覆盖 JSP 作为其主要目的的副作用),您可能需要查看"JSP Bags"。
不过,根据Liferay's "Introduction to Customizing JSPs",这两种方法都不鼓励,应作为最后的手段。
首选方法是使用Dynamic Includes(尽管它们仅在目标portlet 被编写为包含包含点时才有效)或Portlet Filters(基本上允许您以编程方式编辑对标准的请求和响应Portlet 类和 JSP)。
不过,如果您的目标是替换标准文档和媒体小部件的大部分 JSP(请记住:小部件仍然是 Portlet,它们只是在前端重命名),模块片段似乎仍然是最好的前进方式。
要识别正确的模块,请执行以下必要步骤。我将使用控制面板中的 DLAdmin portlet 作为示例来展示它:
确定要编辑的 portlet:使用浏览器的 DOM 检查器查看 HTML。在感兴趣的区域周围寻找 ID 为<section class="portlet" id="portlet_com_liferay_document_library_web_portlet_DLAdminPortlet">
的部分标签。
现在将该 ID 转换为带有 portlet 类的包路径:com.liferay.document.library.web.portlet.DLAdminPortlet
。在Liferay github repository 中搜索该课程。 (去那里,按T,输入类名,找到它的Java类源文件。如果多次点击,你也需要检查包路径。)
打开源文件后,在文件树中返回到src
文件夹的父文件夹。有一个bnd.bnd
文件。看看它,它会告诉你Bundle-SymbolicName
。
使用Liferay IDE 或Blade CLI(取决于您的开发环境)为Bundle-SymbolicName
标识的模块创建模块片段。
【讨论】:
以上是关于Liferay 7.2 自定义文档和媒体 Portlet的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式获取在 Liferay 7.2 中部署的 Portlet 列表
Liferay7 BPM门户开发之35: AssetTag的集成查询