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 中呈现自定义表单字段

以编程方式获取在 Liferay 7.2 中部署的 Portlet 列表

Liferay7 BPM门户开发之35: AssetTag的集成查询

如何将自定义页脚添加到 Liferay DocumentConversionUtil(和开放式办公室)创建的 pdf

Liferay中资产发布者自定义应用展示模板如何使用分页?

Liferay DXP 7.2 监听器无法启动(干净版)