如何在Liferay动态数据列表中正确显示链接到页面字段?

时间:2014-01-15 13:52:13

标签: liferay-6 display-templates dynamic-data-list

上下文

我正在尝试在Liferay 6.2实例的页面上创建链接列表portlet。为了实现这一点,我在页面上放置了一个新的动态数据列表显示portlet,并创建了一个数据定义,其中包含一个链接到页面(以前称为6.2之前的布局链接)字段。我正在尝试使用Liferay's guide构建自定义显示模板,以显示带有链接的HTML无序列表,但我找不到有关如何正确处理链接到页面字段的任何信息。

问题

如何创建一个显示“链接到页面”字段的Freemarker模板,以便href属性包含页面的智能URL,链接文本是页面的本地化名称?

1 个答案:

答案 0 :(得分:0)

当您单击字段时,显示模板编辑器会将以下代码添加到Freemarker脚本中:

<a href="${ddmUtil.getDisplayFieldValue(themeDisplay, cur_record.getFieldValue("Link_to_Page1632", locale), cur_record.getFieldType("Link_to_Page1632"))}">

Link to Page

</a>

这是开始显示链接的一个很好的提示,只需添加小细节:

<#-- The record service to retrieve the list of records in this Dynamic Data List -->
<#assign DDLRecordLocalService = serviceLocator.findService("com.liferay.portlet.dynamicdatalists.service.DDLRecordLocalService")>

<#-- The layout service that helps determine the name of the page -->
<#assign layoutService = serviceLocator.findService("com.liferay.portal.service.LayoutService")>

<#-- Get the records in the Dynamic Data List -->
<#assign records = DDLRecordLocalService.getRecords(reserved_record_set_id)>

<ul>
<#if records?has_content>
    <#list records as cur_record>
        <li>
            <#-- Use the snippet provided by the editor -->
            <a href="${ddmUtil.getDisplayFieldValue(themeDisplay, cur_record.getFieldValue("Link_to_Page1632", locale), cur_record.getFieldType("Link_to_Page1632"))}">

            <#-- Get the name of the page with layoutService.getLayoutName() using a temporary JSON object -->
            <#assign jsonObj = jsonFactoryUtil.createJSONObject(cur_record.getFieldValue("Link_to_Page1632"))>
            ${layoutService.getLayoutName(jsonObj.getLong("groupId"), jsonObj.getBoolean("privateLayout"), jsonObj.getLong("layoutId"), localeUtil.toLanguageId(locale))}

            </a>
        </li>
    </#list>
</#if>
</ul>