我的建议是创建一个新的 portlet 并且不要挂钩现有的搜索 portlet,原因如下:
- Liferay 搜索 portlet 的强大之处在于使用 Apache Lucene 搜索引擎来搜索和索引门户内容、实体……并且由于您不希望来自门户的搜索结果,因此挂钩它是没有用的。
- 搜索portlet jsp 使用某种呈现逻辑进行编码,可能与您的逻辑不同(特别是json 结果),所以我认为您必须对这些jsp 进行重大修改,这将是一个开销。
- 您的需求相对简单(使用搜索词参数调用 Web 服务获取结果并呈现它们)。
所以我认为一个简单的 Liferay MVC portlet 对你来说是一个更好的选择。
用您的自定义搜索 portlet 替换主题默认搜索
不,你不需要钩子。您可以通过编辑 portal_normal 文件来替换主题搜索字段,如下所示:
代替
$theme.journalContentSearch()
经过
## Set the portlet preferences if you need ##
#set ($VOID = $velocityPortletPreferences.setValue('display-style', '1'))
#set ($VOID = $velocityPortletPreferences.setValue('portlet-setup-show-borders', 'false'))
#set ($instanceId = 'A2R4')
#set ($portletId = 'YOUR_CUSTOM_SEARCH_PORTLET_ID')
#set ($myPortlet = "${portletId}_INSTANCE_${instanceId}")
$theme.runtime($myPortlet, '', $velocityPortletPreferences.toString())
#set ($VOID = $velocityPortletPreferences.reset())