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 としてレンダリングされている場合と全く変らず、認証が行われます。 通常、呼び出し元ページでは、エンドポイントを呼び出す前にユーザー認証を行う必要があります。