Liferay 7.2自定义文档和媒体文件

问题描述

我有Liferay 7.2 我要自定义小部件文档和媒体的布局的html

enter image description here

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

我该怎么做?

解决方法

首先,您在谈论钩子这一事实告诉我您来自Liferay 6或更早版本。忘记旧的模块类型(“战争样式的模块”),使用新的“ jar样式的模块”或“ OSGi模块”,它们利用基础中的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 IDEBlade CLI(取决于您的开发环境)为Bundle-SymbolicName所标识的模块创建模块片段。