動的コンテンツ

動的コンテンツ

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

動的コンテンツとは、固定または静的なものではなく、ユーザーの操作に応じて変化するWebサイトのコンテンツです。Webサイトを毎回更新することなく、サードパーティーのサービスから取得したデータを表示できます。

たとえば、Zoho SitesとZoho Creatorのような2つの異なるアプリを連携して、Webサイトに動的コンテンツを表示できます。

Webサイトに動的コンテンツを挿入する手順 

  1. Webサイトの編集画面の左上にある[+]アイコンをクリックします。



  1.  ドロップダウンから[アプリ]をクリックします。



  1. 選択肢から[動的コンテンツ]を選択します。



  1. 表示する[動的コンテンツ]を目的の場所にドラッグ&ドロップします。



  1. [編集]をクリックします。続いて、動的コンテンツ一覧ページが表示され、適切な動的コンテンツを選択できます。





  1. 対象の動的コンテンツをクリックし、既存のコードを編集するか、カスタムコードを記述します。ビュー、関数、スタイルシートを編集できます。

 


動的コンテンツを効果的に活用するには、いくつかのキーとなる概念を理解しておく必要があります。
  • HTML

  • CSS

  • JavaScript

  • Delugeスクリプト - 25以上のZohoアプリを連携するZohoのスクリプト言語

  • Face - Zoho Sites向けに設計されたテンプレート言語

 

動的コンテンツの4つのコンポーネント




1. 関数 - サードパーティーのサービスと連携してデータを取得するDeluge関数です。異なる2つのアプリをつなぐインターフェースとして機能します。
詳細については、Delugeヘルプドキュメントを参照してください。また、こちらからDelugeコンソールにアクセスし、Deluge関数の記述を実際に体験できます。

 

2. スタイルシート- スタイルシートは、Webページの外観を設定するために使用します。このコンポーネントを使用すると、動的コンテンツの表示に使用するスタイルルール(CSS)を定義できます。これらのルールは「style.css」ファイルに記述する必要があります。


3. JavaScript- JavaScriptは「main.js」ファイルに記述します。コードがクロージャモデルに従っていることを確認してください。詳細についてはこちらを参照してください。

 

4. ビュー-ビューはFaceテンプレート言語で記述します。通常、動的コンテンツはFace言語で記述し、静的コンテンツはHTML内の関数に基づいて表示します。Face言語の詳細についてはこちらをご参照ください。

 

Zoho Creatorと連携し、Webサイトに動的コンテンツを設定するためのサンプルコードです。動的コンテンツに関数をさらに追加する際に使用してください。

関数 

関数とは、タスクを実行するコード行です。再利用できるため、効率的です。実行するタスクに応じて、値を返す場合と返さない場合があります。

関数では、DRE(動的ランタイム環境)のinvokeUrlメソッドを使用して、Zohoや外部サービスにアクセスできます。

 

以下は、Zoho Creatorに保存されているレコードを取得する「fetchPartners」という名前の関数です。

//START

records = zoho.creator.getRecords('David','partners','Partner_View');
return records;

//END

説明:

Zoho Creatorからレコードを取得するために、DRE関数「zoho.creator.getRecords」を使用しています。この関数は以下の引数を指定して呼び出され、パートナー情報を含むレコードの一覧を返します。

David - 所有者名
partners - アプリケーションのリンク名
Partner_View - レポートのリンク名

以下は、以下の引数を指定して呼び出される「fetchPartnerDetails」という別の関数の例です。

//START
criteria = 'ID=='.concat(id);
records = zoho.creator.getRecords('David', 'partners', 'Partner_View', criteria);
record = records.get(0);
return record;
//END

説明:


Zoho Creatorからレコードを取得するために、条件を引数として渡してDRE関数「zoho.creator.getRecords」を使用しています。この関数は、条件に一致するレコードを返します。この動的コンテンツ関数には「id」という引数があり、その値を使用してレコードを一覧として取得します。

こちらのリンクで、関数を使用して連携を作成する方法の詳細を確認できます。


ビュー

 

動的コンテンツの各インスタンスにはメインビューファイルがあり、利用可能なビューが読み込まれます。


Alert
標準では、すべてのビューがキャッシュされます。ビューが特定のユーザーまたは要求に固有の場合は、キャッシュを無効にすることをお勧めします。キャッシュを有効または無効にするには、動的コンテンツの編集オプションに移動してください。



この例では、メインページにすべてのパートナー名を表示します。名前が表示された後、ユーザーは任意のパートナー名をクリックして、その詳細を表示できます。その方法を見てみましょう。

 

ビュー:main

{% partners = functions.execute('fetchPartners') %}
<div>
<center><h3>Partners</h3></center>
</div>
<divdc-container='partner-area'>
{% for partner in partners %}
<div>
<h2 style='cursor: pointer'dc-param-id='{{ partner.ID }}'dc-bind-click='true'dc-view='partner'dc-target='partner-area'>
{{ partner.name }}
</h2>
<p>{{ partner.email }}</p>
</div>
{% endfor %}
</div>

説明:



「main」表示では、functions.execute()メソッドを使用して、DC関数「fetchPartners」を呼び出します。これにより、パートナーの一覧が返されます。その後、HTMLとしてレンダリングします。動的コンテンツの表示では、リクエストとレスポンスを処理するためのオブジェクトとメソッドを使用できます。これらのオブジェクトとメソッドについては、この後説明します。

メモ:HTMLタグの「dc」属性は、別の表示に移動するために使用します。

属性

説明

dc-container

DC表示を読み込むコンテナーを定義します。値は英数字で、

一意である必要があります。

dc-bind-click

HTML要素にクリックイベントを関連付けます。値には「true」または

コールバック関数の名前を指定します。

dc-view

HTML要素がクリックされたときに使用する

DC表示名を定義します。dc-bind-click = 'true'の場合は必須です。

dc-target

dc-viewで定義したDC表示を

読み込むコンテナーを定義します。値には、

いずれかのdc-containerを指定します。

dc-param-<param-name-placeholder>

DC表示に送信する必要があるパラメーターを定義します。複数指定でき、すべてのdc-param属性がDC表示に送信されます。

たとえば、dc-param-pid='123'には、DC表示で次のようにアクセスできます。

request_object.parameters.pid



 表示:partner

{% partner_id = request_object.parameters.id %}
{% partner_details = functions.execute('fetchPartnerDetails', partner_id) %}
<div>
<h2>{{ partner_details.name }}</h2>
<p>{{ partner_details.phone }}</p>
<img alt='{{ partner_details.name }}' src='{{ partner_details.image }}'/>
<div style='cursor: pointer'dc-view='main'dc-target='partner-area'>
back
</div>
</div>
  

説明:



「partner」という名前の表示では、functions.execute()メソッドを使用して、DC関数「fetchPartnerDetails」を呼び出します。この呼び出しにより、「partner_id」に一致するパートナーが返されます。その後、HTMLとしてレンダリングします。


DC表示の関数


functions.execute(<function_name>)メソッドを使用すると、動的コンテンツで作成した関数を実行できます。

例:
{% records = functions.execute('fetchPartners') %}
上記のコードでは、fetchPartners DRE関数を実行し、戻り値を「records」変数に保存します。この「records」変数をコード内で使用して、Webサイトにデータを表示します。一部の関数にはパラメーターがあります。次の例のように、関数名の後にパラメーター値を追加する必要があります。

 

例:

{% records = functions.execute('fetchPartners',param1,param2, ..) %}

メモ:function_nameは必須であり、常に最初のパラメーターとして指定する必要があります。

動的コンテンツの表示で使用できるオブジェクトと関数は次のとおりです。


オブジェクト:user
Alert
表示のキャッシュが有効な場合、userオブジェクトの値に基づくリクエストは機能しません。

プロパティ

説明

display_name

ログイン中のユーザーの名前

email_address

ログイン中のユーザーのメールアドレス

groups

ユーザーが所属するポータルグループの

表示名の一覧


例:

{% if user %}
{'display_name':'{{ user.display_name }}','email_address':'{{ user.email_address }}'}
{% endif %}

Object: request_object
Alert表示のキャッシュが有効な場合、request_objectの値に基づくリクエストは機能しません。

プロパティ

説明

domain_name

リクエストのドメイン部分

uri

リクエストのURIパス

parameters

パラメーターのコレクション

headers

リクエストヘッダーのコレクション

cookies

クッキーのコレクション


 

例:

Notes
{% partner_id = request_object.parameters.id %}
関数:functions.execute


動的コンテンツ内の関数を呼び出すために使用します。

例:

Notes
{% assign variable_name = functions.execute('dc_function_name', param1, param2, ...) %}
メモ:dc_function_nameは、動的コンテンツアプリで作成された関数の名前です。

関数:response_object.setStatus

この関数は、表示レスポンスのステータスコードを設定するために使用します。
例:
Notes
{% response_object.setStatus(status_code) %}
メモ:status_codeには、有効なHTTPステータスコードを指定する必要があります

関数:response_object.setCookie

この関数は、表示レスポンスにクッキーを設定するために使用します。

例:
Notes
{% response_object.setCookie(cookie_name, cookie_value, path, max_age) %}

 
JAVASCRIPT


組み込みのJavaScript関数を使用して、標準的なUIイベント処理を実行します。高度なUIイベント処理を行う場合は、動的コンテンツの標準設定を上書きします。

JavaScriptでは、標準でmainビューが読み込まれます。main.js JavaScriptファイルにinit関数を記述すると、標準の機能を上書きできます。

動的コンテンツアプリは、最初にmain.jsファイルのinit関数を実行しようとします。init関数がない場合、DCアプリはmainファイル(/view)に保存されているコンテンツを読み込みます。


init関数は2つのパラメーターに対応しています。1つ目は動的コンテンツのルート要素である、動的コンテンツのコンテキストです。2つ目はクエリパラメーターのオブジェクトです。これらのパラメーターは、ページURLで渡すか、ビュー内の要素にdc-param- <param-name-placeholder> 属性を追加して渡します。例:<div dc-param-id ='{{record.id}}'dc-bind-click = 'showPartner' style= 'cursor:pointer:'>

 


メモ:JavaScriptファイルは、RequireJsを使用してWebサイト上に動的に読み込まれます。作成するスクリプトは、RequireJsのdefineモジュールに準拠している必要があります。RequireJsのdefineモジュールの詳細については、こちらのリンクを参照してください


JavaScriptで使用できるAPIメソッドは次のとおりです。


メソッド

説明

$DX.get

DCビューにHTTP GETリクエストを送信します。

リクエストオブジェクトを引数として受け取ります。次の表を参照してください。

$DX.post

DCビューにHTTP POSTリクエストを送信します。リクエストオブジェクトを引数として受け取ります。

次の表を参照してください。


リクエストオブジェクト

プロパティ

説明

url

ビューのURL

params

ビューに送信するパラメーター(JSON

オブジェクト形式)

handler

応答が正常に返されると、このコールバック関数が呼び出されます。

XMLHttpRequestが「this」の参照として使用されます。

headers

リクエストヘッダーのコレクション

args

JSONオブジェクトとしてハンドラーに送信する引数



main.jsで「init」関数を上書きし、ビューの読み込みを処理する例を次に示します。

Notes
define( function() {
function showPartner(options){
$DX.get({
url: '/dcapp/' + options.dc_name + '/partner',
params : options.params,
handler: function (){
options.target.innerHTML = this.responseText
}
}
);
}
function init(context, params){
var dc_name = context.getAttribute('data-dc-name');
//the attribute data-dc-name of the root DC element has the DC name
var dc_home_page = context.getAttribute('data-home-page') ||
'main';
//the attribute data-dc-name has the default view name
$DX.get({
url: '/dcapp/' + dc_name + '/' + dc_home_page ,// No I18N
handler: function (){
context.innerHTML = this.responseText
}
}
);
}
return {
showPartner : showPartner,
init : init
}
})


main.jsから関数を呼び出す例を次に示します。

 
Notes
$DX.get({
url: '/dcapp/' + <dc_name> + '/function/' + <dc_function_name >,
handler: function (){
//code to handle function get
}

Fetching form data from Zoho Sites



このドキュメントでは、Zoho Sitesの動的コンテンツ機能について説明しました。動的コンテンツ機能を使用すると、顧客固有の要件に幅広く対応できます。さらにご不明な点がございましたら、いつでもサポートいたします。support@zohosites.comまでお問い合わせいただければ、ご質問にできるだけ早く回答いたします。