Liferay Hook学习随笔

一、应用场景:Portlet开发中,经常需要导入jQuery,但是若每个portlet都导入一次jQuery,当多个portlet都处于同一页面时,不仅会增加页面的加载的时间,还会因为jQuery的版本问题,影响某些portlet功能的实现。
解决方法
1、在Liferay中创建Hook工程,在该工程下创建hook组件,导入路径为 /html/common/themes/top_js.jspf 的文件。
Liferay Hook学习随笔
2、在hook组件下导入jQuery,然后在 top_js.jspf 中导入该jQuery。
Liferay Hook学习随笔
备注:top_js.jspf中语句变红是因为没有上下文造成的。

二、应用场景:用户管理界面的用户姓名包括姓、中间名、名,但是在国内需求中,是不存在中间名的,因此需要将中间名去掉。
解决方法
1、创建hook组件,导入路径为 /html/portlet/users_admin/user/details.jsp 的文件
Liferay Hook学习随笔
根据 details.jsp 中的代码 <%@ include file="/html/portlet/users_admin/user/details_user_name.jspf" %> 可知,我们需要再次导入 details_user_name.jspf 文件,然后将要隐藏的 <aui:input /> 中加上 type="hidden"

三、应用场景:修改Liferay工程页面显示的某些字段,使用hook的Language Properties,在主题中也可以使用这些字段 #language('名字');

四、应用场景:修改Liferay工程的配置,如使用hook的Portal properties修改Liferay的portal.properties配置文件

五、所有的Liferay属性都可以在 portal-ext.properties 或 portal-setup-wizard.properties 中被覆盖

总结:
Hook可以修改Liferay页面(如添加jQuery类库);增删页面字段;修改Liferay配置信息;修改Liferay接口.