2012-06-05 35 views
4

將Liferay標籤雲Portlet放在頁面上時,單擊標籤雲中的鏈接只會將結果呈現在同一頁面當且僅當我有資產發佈者Portlet時相同的頁面。Link Liferay標籤雲鏈接到不同的頁面

我想要的是,當我點擊標籤雲中的鏈接時,它應該帶我到不同的頁面顯示結果,例如。搜索結果頁面。

有沒有使用標準組件做到這一點的方法?或者我將不得不編寫自己的標籤雲portlet來支持此功能?

回答

3

您不必創建新的portlet。請按照以下步驟操作

1)通過使用掛鉤,修改標籤雲portlet中爲標籤生成的鏈接。如果你在/ web/guest/tag頁面上,那麼所有的標籤鏈接都將從/ web/guest /標籤開始?.....將其設置爲/在搜索頁面上的網絡/客/搜索?....)

2),把資產出版商

所以,現在,當你點擊任何鏈接標籤,它會去搜索頁面,因爲該頁面擁有資產發佈者,它會從請求url和會話中讀取所有參數,並在搜索頁面上顯示結果。

+1

大,這也正是我一直在尋找。爲html/taglib/ui/asset_tags_navigation/page.jsp創建鉤子jsp覆蓋。 'code' String newURL =「/ web/guest/tagdisplay」+ portletURL.substring(pURL.indexOf(「?」)); sb.append(newURL); //sb.append(portletURL.toString());'code' –

1

這個鉤子代碼:

文件liferay-hook.xml

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

文件/docroot/META-INF/custom_jsps/html/taglib/ui/asset_tags_navigation/page.jsp

<%@ 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 %>