1

コンテキスト

Liferay 6.2 インスタンスのページにリンク リスト ポートレットを作成しようとしています。これを実現するために、新しい動的データ リスト表示ポートレットをページに配置し、ページへのリンク (6.2 より前はレイアウトへのリンクと呼ばれていました) フィールドを含むデータ定義を作成しました。Liferay のガイドを使用してカスタム表示テンプレートを作成し、HTML 順不同リストをリンクとともに表示しようとしていますが、ページへのリンク フィールドを適切に処理する方法に関する情報が見つかりません。

質問

href 属性にページのスマート URL が含まれ、リンク テキストがページのローカライズされた名前になるように、[ページへのリンク] フィールドを表示する Freemarker テンプレートを作成するにはどうすればよいですか?

4

1 に答える 1

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>
于 2014-01-15T13:52:13.103 に答える