4

Liferayタグクラウドポートレットをページに配置するときに、タグクラウド内のリンクをクリックすると、同じページにアセットパブリッシャーポートレットがある場合に限り、同じページに結果が表示されます。

タグクラウド内のリンクをクリックすると、結果を表示する別のページに移動する必要があります。検索結果ページ。

標準コンポーネントを使用してこれを行う方法はありますか?または、この機能をサポートするために独自のタグクラウドポートレットを作成する必要がありますか?

4

2 に答える 2

3

新しいポートレットを作成する必要はありません。次の手順に従ってください

1)フックを使用して、タグのタグクラウドポートレットで生成されるリンクを変更します。現在のレイアウトの代わりに、指定されたページにリダイレクトします(たとえば、/ web / guest / tagページを表示している場合、すべてのタグのリンクは/ web / guest / tag?.....から始まります。これを/に変更します。 web / guest / search?....)

2)検索ページに、アセットパブリッシャーを配置します

これで、タグリンクをクリックすると、検索ページに移動します。このページにはアセットパブリッシャーがあるため、リクエストURLとセッションからすべてのパラメーターを読み取り、検索ページに結果を表示します。

于 2012-06-05T18:44:00.647 に答える
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 %> 
于 2014-01-02T15:57:41.523 に答える