Существует несколько способов изменить функциональность собственного портлета Liferay.Вот краткий обзор.
Большинство подключенных функций описывается в файле liferay-hook.xml, расположенном в каталоге / docroot / WEB-INF.Вот наиболее распространенный метод.
В файле liferay-hook.xml добавьте следующий дочерний элемент в <hook/>
<custom-jsp-dir>/META-INF/custom_jsps</custom-jsp-dir>
Этот элемент определяет местоположение, куда вы собираетесь поместить JSP, которые будут перезаписаны.Например, вы можете переписать view.jsp для портлета библиотеки документов по адресу:
[custom-jsp-dir]/html/portlet/document_library/view.jsp
Для этого вам нужно будет определитьФайл portal.property обычно хранится по адресу
/docroot/WEB-INF/src/portal.property
и сообщает liferay-hook.xml
его местонахождение.Ниже приведен пример вышеприведенного:
<portal-properties>portal.properties</portal-properties>
, если вы хотите прослушать изменения в User, например, вы должны написать в свойстве,
value.object.listener.com.liferay.portal.model.User=com.my.example.UserListener;
, который находится вследующий формат,
value.object.listener.[class-to-listen]=[my-listener-class]
И ваш класс должен реализовать com.liferay.portal.model.BaseModelListener
.
Здесь вы можете прослушивать такие события, как Add, Update, Remove и некоторые другие.
Аналогичная история здесь, в liferay-hook.xml
в элементе <hook />
add
<service>
<service-type>com.liferay.portal.service.UserService</service-type>
<service-impl>my.example.service.UserServiceImpl</service-impl>
</service>
Здесь ваша реализация должна расширитьправильный класс обертки для определенного сервиса.Например, для приведенного выше примера это
com.liferay.portal.service.UserServiceWrapper;
Теперь вы сможете перезаписать все открытые методы для UserService, такие как updateUser(..)
.
(Доступно только в версии Liferay 6.1)
Очень похоже на расширение служб, определите элементы для <hook />
<struts-action>
<struts-action-path>/message_boards/view</struts-action-path>
<struts-action-impl>my.example.action.SampleViewAction</struts-action-impl>
</struts-action>
.необходимо расширить,
com.liferay.portal.kernel.struts.BaseStrutsAction
, и вы получите доступ к запросу и сможете выполнить пользовательское действие.Это очень мощно в сочетании с пользовательскими JSP.
Удачи!
Обязательно проверьте совместимость с версией Liferay, которую вы используете.
Если вам нужно еще большеконтролировать, вам нужно будет использовать ext-плагин.