Web テンプレート (API)

完了

Page Template テーブルには、Web テンプレートを使用するときに、ページで共通の Web サイト ヘッダーとフッター テンプレートを使用するかどうかを指定する設定があります。

Web サイトのヘッダーとフッターが使用されていない場合、テンプレートはページ全体を生成して出力する役割を担います。 HTML をレンダリングしている場合、この出力には doctype から root <html> 要素までと、その間のすべてが含まれます。 この方法は、次のような複数のシナリオで役に立ちます。

  • マーケティング キャンペーンのランディングページなど、ポータルの他の部分と異って見える必要があるページ。

  • Web テンプレートが HTML 以外のコンテンツを生成し、XML、JSON、またはその他の形式のデータを返すとき。

たとえば、アカウントの一覧または現在のユーザーがアクセスできるその他のデータの一覧を JSON 形式で返す Web テンプレートを作成できます。

{% entityview logical_name:'account', name:'Active Accounts' %}
[
{% for acc in entityview.records -%}
    {
        "name": "{{ acc.name }}",
        "phone": "{{ acc.telephone1 }}"
    }{% unless forloop.last %},{% endunless %}
{% endfor -%}
]
{% endentityview %}

メモ

この例では、entityview タグの代わりに、fetchxml タグ内で FetchXML クエリを使用できます。 インライン FetchXML を使用すると、クエリの柔軟性が高まります。 クエリは、テンプレート パラメーターや、現在の HTTP ページ要求のクエリ文字列パラメーターを含む request オブジェクトを使用して動的に構築できます。

このテンプレートは、MIME の種類を application/json に設定して、ヘッダーとフッターなしで使用します。 出力は次の例のようになります。

[
  {
      "name": "A Datum Corporation",
      "phone": "425-555-0182"
  },
  {
      "name": "A Datum Fabrication",
      "phone": "303-555-0134"
  },
  {
      "name": "A Datum Integration",
      "phone": "512-555-0163"
  },
  {
      "name": "A. Datum",
      "phone": "+86-23-4444-0100"
  },
  {
      "name": "Adventure Works",
      "phone": "+27-264-1234567"
  }
]

ヒント

データの取得には、該当する場合はポータル Web API の使用を検討してください。 ポータル Web API は実行が速く、サーバー側のテンプレート処理を完全に回避できます。 ただし、データ変換が必要な場合は、クライアント側で JavaScript を使用して変換を完了する必要があります。 一方、Liquid テンプレートではデータをすべてサーバー側で変換して使用できます。 詳細については、Web API ポータルを使用した読み取り操作を参照してください。

この Web テンプレートを使用するページは、ブラウザーを使用しているユーザーに表示されるのではなく、JavaScript コードから呼び出され、実質的にソリューション向けの API エンドポイントを定義します。 別のページの JavaScript は、このデータを必要に応じて読み込み、レンダリングできます。

この "ヘッドレス" テンプレートを使用した Microsoft Dataverse データへのアクセスは、出力が HTML としてレンダリングされている場合と全く変らず、認証が行われます。 通常、呼び出し元ページでは、エンドポイントを呼び出す前にユーザー認証を行う必要があります。