Dynamic Data Lists
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

表示テンプレートの作成

重要

動的データリストは Liferay DXP 7.3 以降では非推奨となり、2024 年に削除される予定です。 オブジェクトに置き換えられます。 できるだけ早く動的データ リストをオブジェクトに 移行 してください。

データ定義ごとに、必要な数のディスプレイを作成することができます。 データ リストのフォーム ビューに特定のデータ定義のすべてのフィールドが表示されないフォーム テンプレートを作成した場合は、それらのフィールドをリスト ビューにも表示しない方がよいでしょう。 表示テンプレートを使用してリスト ビューを変更します。

注: Web コンテンツ テンプレートに慣れている場合は、表示テンプレートを使用して、同じ方法でリストの表示をカスタマイズできます。 表示テンプレートは FreeMarker または Velocity で記述され、Web コンテンツ テンプレートがその構造からデータを取得するのと同じ方法で、データ定義からデータを取得します。 また、Web コンテンツ テンプレートと同様に、表示テンプレートを他の表示テンプレートに埋め込むこともできます。 これにより、再利用可能なコード、JavaScriptライブラリのインポート、またはVelocityやFreeMarkerのテンプレートでインポートされたマクロをシステムに組み込むことができます。 表示テンプレートを埋め込むと、類似したデータ定義が多数ある場合に、より効率的なプロセスが実現します。 埋め込まれた表示テンプレートをインポートし、それを基に新しい表示テンプレートを作成します。

フォーム テンプレートと同様に、サイト管理または動的データ リスト表示ウィジェットから表示テンプレートを作成できます。

サイト管理から新しい表示テンプレートを作成するには、

  1. コンテンツ & データ動的データ リストに移動します。

  2. 右上のオプション(Options)をクリックし、 データ定義の管理をクリックします。

  3. データ定義のリストで、定義のアクションアイコン (Actions) をクリックし、 テンプレートの管理をクリックします。

  4. 追加 (Add) をクリックし、 表示テンプレートの追加をクリックします。

  5. テンプレートに名前をつけ、フォームの[詳細]セクションを展開して、説明をつけます。 フォームの詳細セクションで、使用するテンプレート言語を言語セレクタから選択します。 FreeMarker または Velocityを選択できます。

  6. フォームのスクリプトセクションで、前のステップで選択したテンプレート言語を使って、エディタでテンプレートを作成します。  エディターの左にあるパレットには、共通の変数が入っています。 変数をクリックすると、エディターに挿入されます。 エディターもオートコンプリートしています。 FreeMarkerのテンプレートでは、 ${と入力すると、一般的な変数のオートコンプリートリストが表示されます。 エディターに挿入する変数を選択します。 また、エディターの下にある ファイルを選択 ボタンをクリックして、完全なスクリプトファイルをアップロードすることもできます。

    スクリプトセクションを使用してテンプレートを作成します。

    テンプレートエディター用のヘルパー変数については、以下を参照してください。

  7. テンプレートの作成が完了したら、 保存 をクリックします。

あるいは、動的データ リスト表示ウィジェットから表示テンプレートを作成することもできます。

  1. サイト ページにウィジェットを追加して構成するには、 「データ リストの作成」 の記事の指示に従ってください。 テンプレートを作成するリストが表示されるようにウィジェットを設定してください。

  2. ウィジェットの 表示テンプレートの追加 リンクをクリックします。 これにより、リストの定義用のフォーム テンプレートを作成するための上記と同じフォームが開きます。

表示テンプレートエディター

ヘルパー変数は、テンプレートエディターで使用できます。 これらにより、表示テンプレートの作成時に使用するほとんどのデータにアクセスできます。 [データリスト変数]の見出しの下にある変数は、テンプレートの作成対象となるデータ定義に関する特定の情報を注入することができます。

データ定義ID: reserved_ddm_structure_id

データリストの説明: reserved_record_set_description

データリストID: reserved_record_set_id

データリスト名: 予約レコードセット名

テンプレートID: reserved_ddm_template_id

テンプレート内では、これらの変数によってレコードセットのID、名前、説明、データ定義が与えられます。

レコード 変数に割り当てることにより、レコードのリストを表示します。 リストのレコードを DDLDisplayTemplateHelperから取得しますが、この中には以下の関数が含まれています。

getDocumentLibraryPreviewURL

getHTMLContent

getLayoutFriendlyURL

getRecords

renderRecordFieldValue

DDLDisplayTemplateHelper は一般的なタスクを実行します。 getRecords メソッドを使用して、データ定義のエントリにアクセスし、 records 変数に割り当てます。

<#assign records = ddlDisplayTemplateHelper.getRecords(reserved_record_set_id)>

これは、関連するデータリストのレコードを取得します。 まだ何もしていないので、画面にはまだ何も表示されていません。 すべてのレコードをリストアップするには、テンプレートエディターのサイドバーにある[データリストレコード]ヘルパーを使います。 テンプレートエディターウィンドウの適切な場所にカーソルを置き、[データリスト・レコード]をクリックしてください。 このコードはカーソルに表示されます。

<#if records?has_content>
    <#list records as cur_record>
        ${cur_record}
    </#list>
</#if>

このデフォルトのコードスニペットは、与えられたデータ定義に対するデータベース内のすべての情報を吐き出しますが、これはあまり人間が読めるものではありません。

{uuid=52c4ac1c-afe7-963c-49c6-5279b7030a99, recordId=35926, groupId=20126, companyId=20099, userId=20139, userName=Test Test, versionUserId=20139, versionUserName=Test Test, createDate=2018-07-26 14:31:51.056, modifiedDate=2018-07-26 14:31:51.058, DDMStorageId=35927, recordSetId=35922, recordSetVersion=1.0, version=1.0, displayIndex=0, lastPublishDate=null}

埋め込まれた連絡先データ定義に基づくリストを使用し、会社名と電子メールのフィールドのみを箇条書きリストで表示する簡単なサンプル テンプレートを次に示します。

   <#assign records = ddlDisplayTemplateHelper.getRecords(reserved_record_set_id)>

   <h1>Here are contacts by company name and email address.</h1>

   <#if records?has_content>
      <#list records as cur_record>
         <ul>
               <li>
                  <#-- The below gets the Company field and wraps it in an <em> tag -->
                  Company Name: <em>${ddlDisplayTemplateHelper.renderRecordFieldValue(cur_record.getDDMFormFieldValues("company")?first, locale)}</em><br />
                  <#-- The below gets the Email field  and wraps it in an <em> tag -->
                  Email: ${ddlDisplayTemplateHelper.renderRecordFieldValue(cur_record.getDDMFormFieldValues("email")?first, locale)}
               </li>
         </ul>
      </#list>
   </#if>

次のようになります。

会社名とメールアドレスを表示する表示テンプレートの例。