Hook overview
- Hooks were introduced in Liferay 5.1 as an alternate developmentapproach to the Liferay Extension Environment.
- Hooks are a type of Liferay Plugin and were designed to be smallerin size than the Extension Environment and more modular.
- Hooks were also designed to be hot-deployable.
- Over the last several versions of Liferay, the capabilities of Hookshave been expanded and are generally preferred over working in the ExtensionEnvironment or the EXT Plugin whenever possible.
HOOKS ADVANTAGES
- Hot deployable
- Changes are made available as soon as they are deployed.
- Changes are removed as soon as they are undeployed.
- Useful as a light weight customization archive. Examples:
- Seven Cogs
- Social Office
- TweetRay
CUSTOMIZABLE ELEMENTS
- The following elements can be customized from a hook:
- Change the configuration
- Customize language keys
- Add or overwrite JSP files
- Indexer Post Processer
- Provide custom services implementations
- Override Struts Actions
CREATE TRAINING HOOK
- Go to File → New → LiferayProject.
- Project name: training
- Display name: Training Hook
- Select the SDK and Liferayruntime you have configured.
- Select the Hook plug-in type.
- Click Finish
LIFERAY-HOOK.XML
- At this point, we have created a Liferay Hook Plugin Project, but wehaven't actually created a Hook yet.
![]()
- Take a look at liferay-hook.xml, the descriptor of the hook.
- The liferay-hook.xml file is used to identify the types of hooks thatthis hook plugin will contain.
- To see a listing of the different types of hooks allowed, refer tohttp://www.liferay.com/dtd/liferay-hook_6_1_0.dtd.
- You can create different Hook Plugins for different purposes, or youcan combine several different Hooks into a single project.
- In this exercise, we will be adding several Hooks to a single HookPlugin project.
CUSTOMIZING PROPERTIES
- Ourfirst Hook will customize the portal.properties and implement a custompost-login action.
- Not all the properties can be modified yet by a hook — there is a limited set defined in the DTD that are most popular and applicable.
- Default landing page, enable/disable public and private user pages, ...
- Events(Startup, service, login, logout...etc), model listeners...
- Simplevalues are overwritten.
- Listvalues are appended.
- Properties can be overwritten in the portal.properties file defined in liferay-hook.xml.
CUSTOMIZING PROPERTIES
- Liferay Portal provides a pluggable mechanism whereby you canregister classes that get fired on pre-login and post-login.
- Event classes are specified in portal.propertiesby overriding the following key values:
- login.events.pre
- login.events.post
- To create a cookie with login info, we’ll create an event class andappend the class name tologin.events.post.
CREATE CUSTOM POST LOGIN ACTION
- With the training-hookselected, click File → New → Liferay Hook.
- Hook plug-in project: traininghook
- Check the Portal propertiescheck box.
- Click Next.
- Accept the default path for the Portal properties file.
- Click the Add... button to Define actions to be executed on portal events.
- For Event: click Select... and choose login.events.post and clickOK.
- For Class: click New and enter:
- Classname: CreateCookieAction
- Java Package: com.liferay.training.events
- Click Create, then Ok, then Finish.
- Replace the content of CreateCookieAction.java with snippet 01-CreateCookieAction.java
- Save and deploy your hook.
- After login, you should see a line similar to the following in the console:
- Added TRAINING_COOKIE value to response:companyId=10160,userId=10202
- You'l find that Liferay DeveloperStudio added one line into the portal.propertiesfile (docroot/WEB-INF/src):
- login.events.post=com.liferay.training.events.CreateCookieAction
- This is telling the portal to callthe CreateCookieAction when a user islogged in.