Liferay 7.2 自定义文档和媒体 Porlet

Liferay 7.2 Customize Documents And Media Porlet

我有 Liferay 7.2 我想自定义 html 小部件的布局 Documents AND Media

我试图为文档和媒体创建一个挂钩,但似乎这不是正确的方法。

我该怎么做?

首先,您在谈论钩子这一事实告诉我您来自 Liferay 6 或更早版本。忘掉旧的模块类型(“war-style 模块”),拥抱新的“jar-style 模块”或“OSGi 模块”,它们利用基础中的 OSGi 方法和机制。最接近钩子功能的新模块类型是 "module fragment".

或者,如果您想要创建一个覆盖多个其他模块的 JSP 的模块(或覆盖 JSP 作为其主要目的的副作用),您可能需要查看 "JSP Bags"

根据 Liferay's "Introduction to Customizing JSPs".

的说法,这两种方法都不鼓励,应作为最后的手段。

首选方法是使用 Dynamic Includes (albeit they only work if the target portlet has been written to include inclusion points) or Portlet Filters(这基本上允许您以编程方式编辑对标准 Portlet classes 和 JSP 的请求和响应)。

不过,如果您的目标是替换标准文档和媒体小部件的大部分 JSP(请记住:小部件仍然是 Portlet,它们只是在前端被重命名),模块片段似乎仍然存在到最好的前进方向。

要识别正确的模块,以下是必要的步骤。我将使用控制面板中的 DLAdmin portlet 作为示例来展示它:

  • 确定要编辑的 portlet:使用浏览器的 DOM 检查器查看 HTML。在感兴趣的区域周围查找 ID 类似于 <section class="portlet" id="portlet_com_liferay_document_library_web_portlet_DLAdminPortlet"> 的部分标签。
  • 现在使用 portlet class 将该 ID 转换为包路径:com.liferay.document.library.web.portlet.DLAdminPortlet。在 Liferay github repository 中搜索 class。 (去那里,按T,输入class名字,找到它的Javaclass源文件,如果多次命中,还要检查包路径。)
  • 打开源文件后,在文件树中返回到 src 文件夹的父文件夹。有一个 bnd.bnd 文件。看一看,它会告诉你 Bundle-SymbolicName.
  • 使用Liferay IDE or Blade CLI(取决于您的开发环境)为Bundle-SymbolicName标识的模块创建模块片段。