テンプレート・フローこの章では、Listガジェットを例にして、テンプレート実行フローについて説明します。設計上、ガジェットのディスクリプタXMLをリクエストする唯一の方法は、FW_CSGadgetアセットのGenerateGadgetXMLテンプレートを起動することです。このテンプレートを起動すると、図92-1とその説明で示されているように、レンダリング・プロセスが開始します。ガジェットのXML出力」の説明GenerateGadgetXMLは、最初にXML宣言を出力します。これは、すべてのXMLドキュメントで推奨される機能です。プロセスの最初にXML宣言を出力することによって、ガジェット開発者は、記述するすべてのガジェットでこのことを考慮せずに済むようになります。(ListGadgetのid)に対応するアセットをロードし、descriptortemplateの値を検索します。Sitesシステム内の特定のアセットをポイントします。パラメータcはアセットのタイプであり、cidはアセットの識別子です。この情報は、テンプレートの起動時に毎回必要になります。GenerateGadgetXMLは、descriptortemplateフィールドのテンプレートを起動し(Listガジェットの場合はFW_CSTemplate/G_List)、手順0と同じcおよびcidを渡します。G_Listテンプレート自体は、外部からコールできないこと(SiteCatalogエントリのpageletonlyフィールドがTに設定されている)に注意してください。この設定では、(たとえば、コールされるように設計されていない場合、)テンプレートの直接的なコールが禁止されます。コールされたテンプレートG_Listは、ガジェット・ディスクリプタXMLの本体すべてを出力します。この時点で、ガジェット・ディスクリプタXMLは完全なものになります。注意:ガジェット・ディスクリプタXMLの作成に関する追加リソースのリンクについては、第91.1項「始める前に」を参照してください。ディスクリプタXMLに基づいてガジェットがレンダリングされたら、ガジェットはそのコンテンツを取得します。図92-2は、Listガジェットがコンテンツを取得する様子を示しています。このプロセスはガジェットごとに異なります。APIをコールします)。これは、そのアセット・タイプ用のG_JSONテンプレートを通じて行われます。このURLは、最終的にgadgets.io.makeRequest関数に渡されます。この関数を使用して、XML、JSON、Atom/RSSなどの各種の形式のデータに対応する追加のリモート・サーバー・コールを行うことができます。このリクエストによって、コンテンツ取得プロセスが開始されます。コンテンツの取得」の取得XML本体内のガジェット・コードがAdvCols/G_JSONテンプレートを起動し、JSONレスポンスの開始を準備します。Recommendationsには他のアセットのリストが含まれているため、このテンプレートは単にJSON配列の出力を開始してから、アセットのリストをループ処理し、各アセットでそれぞれのG_JSONテンプレートをコールします。Listガジェットの場合、すべての子はコンテンツ・アセットであるため、Recommendation内のアセットごとにContent_C/G_JSONが起動されます。Content_C/G_JSONテンプレートは、起動されるたびに完全なJSONオブジェクト表現を出力します。このJSONオブジェクト表現には、そのアセットの該当するフィールドが含まれます。Content_C/G_JSONの各コールの間に、AdvCols/G_JSONは、構築する配列内のオブジェクトを正しく区切るためにコンマを出力します。ループが完了すると、AdvCols/G_JSONテンプレートは配列を閉じます。params);)によって受け取られます。このガジェット・コードは、元のmakeRequestコールの指示に従って、handleJsonコールバック関数を実行します。handleJson関数は、コンテンツをHTMLでラップします。このHTMLは、そのガジェットのビュー(この例ではリスト・ビュー)をレンダリングします。テンプレート・フローの違い前の項では、Listガジェットのテンプレート・フローについて説明しました。Sitesのテンプレート・ロジックの違いは注目に値します。Sitesでのガジェットのレンダリング手順は、Listガジェットのものに酷似しています。主な違いは、AdvCols/G_JSONテンプレートによって何が起動されるかです。ListガジェットはContentアセットが格納されたRecommendationを参照しますが、ThumbListガジェットとSlideshowガジェットは、Productアセットが格納されたRecommendationを参照します。これらのガジェットではProduct_C/G_JSONテンプレートのレスポンス固有の属性を調査します(これには、Media_C/G_JSONテンプレートによって生成されるデータも含まれます)。RSSRSSガジェットの2つ目のリクエストは、RSSフィードのURLに対して直接発行されます。Sites内にある場合もあれば、そうでない場合もあります。このURLは、関連付けられたFW_RSSアセットから読み取られます。このアセットはG_RSSテンプレート内でロードされます。追加のサーバー・コールがなぜ行われるのか、疑問に思うかもしれません。Listガジェットのすべての記事をG_Listテンプレート自体から取得しないのはなぜでしょうか。その答えは2つあります。ガジェット・ディスクリプタXMLをガジェット・コンテナでキャッシュ可能にしている可能性があります。これは、XML内に一時的なデータを埋め込まないようにする必要があることを意味します。追加のサーバー・コールは、プレゼンテーション・ロジック(たとえば、G_List内)を、下層のモデル(アセット・タイプのG_JSONテンプレート内)から分離するのに役立ちます。reserved.法律上の注意点ライブラリ。