liferay-hook的功能,
1、liferay-hook可以重写jsp,这样liferay-hook代替liferay-ext的jsp的问题解决
2、liferay-hook可以添加event事件,即可以处理登陆前后或者其他地方需要保存参数,更改url等事件。主要继承
com.liferay.portal.kernel.events.Action;函数。
3、portal.properties,重写portal的部分配置,不是所有的配置都可以重写。event事件也可以写在这里面。
4、重写Portal Service,扩展包装类,重写包装类的一些方法。
5、重写Language.properties,即liferay国际化。
即在liferay-hook.xml中添加
<language-properties>content/Language_en_US.properties</language-properties>
在WEB-INF/src下面添加content/Language_en_US.properties文件
hook中的事件说明:
application.startup.events 应用启动的触发事件
login.events.pos 登陆完成的时候触发
login.events.pre 登陆未完成的时候触发
logout.events.post 注销后触发
logout.events.pre注销前触发
servlet.service.events.pre 每次servlet执行前都会执行
servlet.service.events.post 每次servlet执行后都会执行
servlet.session.create.events session 创建时的触发事件
servlet.session.destroy.events session 注销时的触发事件
在hook中如果java文件中要引用portal-impl.jar包中的类,建议换成portal-service.jar中的类(基本上portal-impl.jar中的有的类,portal-service.jar中也有),否则部署会报错,找不到portal-impl.jar中的类。详情请参考:http://www.liferay.com/zh/community/forums/-/message_boards/message/7541176
下面是参数的默认值,可以覆盖:
auth.forward.by.last.path=true
javascript.fast.load=true
layout.template.cache.enabled=true
layout.user.private.layouts.enabled=true
layout.user.private.layouts.modifiable=true
layout.user.private.layouts.auto.create=true
layout.user.public.layouts.enabled=true
layout.user.public.layouts.modifiable=true
layout.user.public.layouts.auto.create=true
my.places.show.community.public.sites.with.no.layouts=true
my.places.show.community.private.sites.with.no.layouts=true
my.places.show.user.public.sites.with.no.layouts=true
my.places.show.user.private.sites.with.no.layouts=true
my.places.show.organization.public.sites.with.no.layouts=true
my.places.show.organization.private.sites.with.no.layouts=true
terms.of.use.required=true
theme.css.fast.load=true
theme.images.fast.load=true
passwords.passwordpolicytoolkit.generator=dynamic
passwords.passwordpolicytoolkit.static=iheartliferay
layout.static.portlets.all=1_WAR_chatportlet
login.events.post=cn.hook.LoginPostAction
LoginPostAction放在web-inf/src下面
envent事件也可以直接放在liferay-hook.xml里面
<event>
<event-class>cn.hook.LoginPostAction</event-class>
<event-type>login.events.post</event-type>
</event>
另外根据liferay-hook的dtd文档,liferay-hook.xml文件中还可以加servlet-filter,struts-action等标签。