【问题标题】:Link Liferay tag cloud links to a different page将 Liferay 标签云链接链接到不同的页面
【发布时间】:2012-06-05 09:46:08
【问题描述】:

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

我想要的是,当我单击标签云中的链接时,它应该将我带到显示结果的不同页面,例如。搜索结果页面。

有没有办法使用标准组件来做到这一点?还是我必须编写自己的标签云 portlet 来支持此功能?

【问题讨论】:

    标签: liferay portlet tag-cloud


    【解决方案1】:

    您不必创建新的 portlet。请按照以下步骤操作

    1) 通过使用钩子,修改在标签云portlet 中为标签生成的链接。而不是当前布局,重定向到指定页面(例如,如果您在 /web/guest/tag 页面上,那么所有标签链接都将从 /web/guest/tag 开始?..... 将其设置为 /网络/访客/搜索?....)

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

    所以现在,当你点击任何标签链接时,它会进入搜索页面,因为这个页面有资产发布者,它会从请求 url 和会话中读取所有参数,并在搜索页面上显示结果.

    【讨论】:

    • 太好了,这正是我想要的。为 html/taglib/ui/asset_tags_navigation/page.jsp code String newURL = "/web/guest/tagdisplay" + portletURL.substring(pURL.indexOf("?")) 创建了一个钩子 jsp 覆盖; sb.append(newURL); //sb.append(portletURL.toString());code
    【解决方案2】:

    这个钩子的代码:

    文件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 %> 
    

    【讨论】:

      猜你喜欢
      • 2016-09-08
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      相关资源
      最近更新 更多