将Liferay标记云链接链接到其他页面

将Liferay标记云链接链接到其他页面,liferay,portlet,tag-cloud,Liferay,Portlet,Tag Cloud,将liferay标记云portlet放在页面上时,单击标记云中的链接只会在同一页面上呈现结果,如果且仅当我在同一页面上有一个资产发布者portlet 我想要的是,当我点击标签云中的一个链接时,它会将我带到另一个显示结果的页面,例如搜索结果页面 是否有一种使用标准组件的方法?或者我必须编写自己的标记云portlet来支持此功能吗?您不必创建新的portlet。请遵循以下步骤 1) 通过使用钩子,修改在标记云portlet中为标记生成的链接。代替当前布局,重定向到指定页面(例如,如果您在/web/g

将liferay标记云portlet放在页面上时,单击标记云中的链接只会在同一页面上呈现结果,如果且仅当我在同一页面上有一个资产发布者portlet

我想要的是,当我点击标签云中的一个链接时,它会将我带到另一个显示结果的页面,例如搜索结果页面


是否有一种使用标准组件的方法?或者我必须编写自己的标记云portlet来支持此功能吗?

您不必创建新的portlet。请遵循以下步骤

1) 通过使用钩子,修改在标记云portlet中为标记生成的链接。代替当前布局,重定向到指定页面(例如,如果您在/web/guest/tag页面上,则所有标签链接将从/web/guest/tag?…开始,并将其转到/web/guest/search?…)

2) 在搜索页面上,放置资产发布者


现在,当您单击任何标记链接时,它将进入搜索页面,因为此页面具有asset publisher,它将读取请求url和会话中的所有参数,并在搜索页面上显示结果。

此挂钩的代码:

文件
liferay hook.xml

<hook>
     <custom-jsp-dir>/META-INF/custom_jsps</custom-jsp-dir>
</hook>

太好了,这就是我要找的。为html/taglib/ui/asset\u tags\u navigation/page.jsp
code
String newURL=“/web/guest/tagdisplay”+portletURL.substring(pURL.indexOf(“?”)创建了钩子jsp覆盖;sb.append(newURL)//sb.append(portletURL.toString())<代码>代码
<%@ include file="/html/taglib/ui/asset_tags_navigation/init.jsp" %>
<%@ taglib uri="<http://liferay.com/tld/util>"
prefix="liferay-util" %> 
<%@ page import="com.liferay.portal.kernel.util.StringUtil" %>
<%@ page import="com.liferay.portal.service.LayoutLocalServiceUtil"%>

<liferay-util:buffer var="html">
     <liferay-util:include page="/html/taglib/ui/asset_tags_navigation/page.portal.jsp"/> 
</liferay-util:buffer> 

<% Layout searchLayout =
LayoutLocalServiceUtil.getFriendlyURLLayout(scopeGroupId, false,
"/search"); 

html = StringUtil.replace(html,layout.getRegularURL(request),searchLayout.getRegularURL(request));
%> 
<%= html %>