動的コンテンツ

動的コンテンツ

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

ダイナミックコンテンツとは、固定・静的なものではなく、ユーザーの操作に応じて変化する Web サイトコンテンツのことです。Web サイトを頻繁に更新しなくても、ダイナミックコンテンツを使用することで、サードパーティサービスからのデータを Web サイト上に表示できます。

例えば、Zoho Sites と Zoho Creator など、2 つの異なるアプリケーションを連携させて、Web サイト上にダイナミックコンテンツを表示できます。

Web サイトにダイナミックコンテンツを挿入する手順 

  1. サイトビルダー左上の + アイコンをクリックします。



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



  1. 設定から Dynamic Content を選択します。



  1. 表示したい位置まで Dynamic Content をドラッグ&ドロップします。



  1. [Edit] をクリックします。すると、適切なダイナミックコンテンツを選択できる Dynamic Content Listing ページに移動します。





  1. 対象のダイナミックコンテンツをクリックして、既存のコードを編集するか、新しいカスタムコードを作成します。ビュー、関数、スタイルシートを編集できます。

 


ダイナミックコンテンツを効果的に活用するために、理解しておくべき主な概念がいくつかあります。
  • HTML

  • CSS

  • JavaScript

  • Deluge Script - 25 以上の Zoho アプリを連携させる Zoho 独自のスクリプト言語

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

 

ダイナミックコンテンツを構成する 4 つのコンポーネント




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

 

2. Stylesheets- スタイルシートは、Web ページの見た目やデザインを決定するために使用されます。このコンポーネントを使用すると、ダイナミックコンテンツ(DC)を表示するためのスタイルルール(CSS)を定義できます。これらのルールは「style.css」ファイルに記述する必要があります。


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

 

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

 

以下は、Zoho Creator と連携して Web サイト上にダイナミックコンテンツを設定するためのサンプルコードです。これを基に、ダイナミックコンテンツにさらに多くの関数を追加できます。

FUNCTIONS 

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

関数を使用すると、DRE(Dynamic Runtime Environment)のinvokeUrlメソッドを使って、Zoho および外部サービスにアクセスできます。

 

次は、Zoho Creator に保存されているデータを取得する、'fetchPartners' という名前の関数です。

//START

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

//END

説明:

ここでは、DRE 関数 'Zoho。creator。getRecords'を使用して、Zoho Creator からデータを取得しています。この関数は、以下の引数で呼び出され、パートナー情報を含むデータのリストを返します。

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

説明:


ここでも、DRE 関数 'Zoho。creator。getRecords'を使用し、条件(criteria)を引数として渡すことで、Zoho Creator からデータを取得しています。この関数は、条件に一致するデータを返します。この動的コンテンツ関数には 'id' という引数があり、その値を使ってデータをリストとして取得します。

こちらのリンクで、連携を作成するために関数を使用する方法の詳細をご確認ください。


ビュー

 

各 Dynamic Content のインスタンスにはメインの表示ファイルがあり、そこから利用可能なビューを読み込みます。


Alert
すべてのビューは、初期設定でキャッシュされます。表示内容が特定のユーザーやリクエストに依存する場合は、キャッシュを無効にすることを推奨します。キャッシュを有効または無効にするには、Dynamic Content の編集オプションを開いて設定してください。



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

 

ビュー: main

{% partners = functions.execute('fetchPartners') %}
<div>
<center><h3>Partners</h3></center>
</div>
<divdc-container='パートナー-地域'>
{% for partner in partners %}
<div>
<h2 style='cursor: pointer'dc-param-id='{{ パートナー。ID }}'dc-bind-クリック='真'dc-表示する='パートナー'dc-target='パートナー-地域'>
{{ パートナー。名前 }}
</h2>
<p>{{ partner.email }}</p>
</div>
{% endfor %}
</div>

説明:



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

メモ: HTML タグ上の 'dc' 属性は、別のビューへ遷移するために使用されます。

属性

説明

dc-container

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

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

dc-bind-クリック

HTML 要素にクリックイベントをバインドします。値は '真' または

コールバック関数の名前のいずれかである必要があります。

dc-表示する

HTML 要素がクリックされたときに読み込む DC ビュー名を定義します。

dc-bind-クリック = '真' の場合は必須です。

dc-target

dc-表示する で定義された DC ビューを読み込むコンテナを

定義します。

値は dc-container のいずれかである必要があります。

dc-param-<param-名前-差し込み項目>

DC ビューに送信する必要があるパラメーターを定義します。複数指定することができ、

そのような dc-param 属性はすべて DC ビューに送信されます。

例: dc-param-pid='123' は、DC ビュー内で

request_object.parameters.pid として参照できます。



 ビュー: パートナー

{% partner_id = request_object.parameters.id %}
{% partner_details = functions.execute('fetchPartnerDetails', partner_id) %}
<div>
<h2>{{ partner_details。名前 }}</h2>
<p>{{ partner_details.phone }}</p>
<img alt='{{ partner_details。名前 }}' src='{{ partner_details。画像 }}'/>
<div style='cursor: pointer'dc-表示する='main'dc-target='パートナー-地域'>
back
</div>
</div>
  

説明:



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


DC ビュー関数


Dynamic Content で作成した関数は、functions.execute(<function_name>) メソッドを使用して実行できます。

例:
{% records = functions.execute('fetchPartners') %}
上記のスニペットは fetchPartners DRE 関数を実行し、返された値を 'データ' 変数に保存します。このデータ変数をコード内で使用して、Web サイト上にデータを表示します。一部の関数にはパラメーターがあります。その場合は、以下のように関数名の後ろにパラメーター値を追加する必要があります。

 

例:

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

メモ : function_name は必須で、常に最初のパラメーターでなければなりません。

以下は、Dynamic Content ビューで利用できるオブジェクトと関数です。


オブジェクト: ユーザー
Alert
ユーザー オブジェクトの値に基づくリクエストは、ビューでキャッシュが有効になっている場合は動作しません。

プロパティ

説明

display_name

ログイン中ユーザーの表示名

email_address

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

groups

ユーザーが所属しているポータルグループの表示名リスト


:

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

オブジェクト: request_object
Alertrequest_object の値に基づくリクエストは、ビューでキャッシュが有効になっている場合は動作しません。

プロパティ

説明

domain_name

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

uri

リクエストのURIパス

パラメーター

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

ヘッダー

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

cookies

Cookieのコレクション


 

例:

Notes
{% partner_id = request_object。パラメーター。id %}
関数: functions。実行する


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

例:

Notes
{% assign variable_name = functions。実行する('dc_function_name', param1, param2, ...) %}
メモ: dc_function_nameは、Dynamic Contentアプリで作成した関数の名前です。

関数: response_object。setStatus

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

関数: response_object。setCookie

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

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

 
JAVASCRIPT


組み込みの JavaScript 関数を使用して、標準的な UI イベント処理を行えます。より詳細な UI イベント処理を行いたい場合は、動的コンテンツのデフォルト動作を上書きしてください。

JavaScript では、main ビューが既定で読み込まれます。main.js の JavaScript ファイル内で init 関数を記述することで、この既定の動作を上書きできます。

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


init 関数は 2 つのパラメーターをサポートします。1 つ目は動的コンテンツのルート要素である dynamic content コンテキスト、2 つ目はクエリパラメーターオブジェクトです。これらのパラメーターは、ページ URL で渡すか、dc-param-<param-名前-差し込み項目> 属性を 次のような要素に追加することで渡されます: <div dc-param-id ='{{データ。id}}'dc-bind-クリック = 'showPartner' style= 'cursor:pointer:'>(ビュー内)

 


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


以下は、JavaScript で利用可能な API メソッドです。


Method

説明

$DX。取得する

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

引数として Request オブジェクトを受け取ります。下表を参照してください。

$DX。post

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

詳細は下表を参照してください。


Request Object

Property

説明

url

ビューの URL。

params

ビューに送信するパラメーター(JSON オブジェクト)。

object

handler

レスポンスが正常に返された場合に呼び出されるコールバック関数です。

XMLHttpRequest が this 参照として渡されます。

ヘッダー

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

args

handler に渡される引数(JSON オブジェクト)。



 以下は、main.js で init 関数を上書きし、ビューの読み込みを自前で処理する例です。

Notes
define( function() {
function showPartner(設定){
$DX。取得する({
url: '/dcapp/' + 設定。dc_name + '/partner',
params : 設定。params,
handler: function (){
設定。target。innerHTML = this。responseText
}
}
);
}
function init(context, params){
var dc_name = context。getAttribute('data-dc-名前');
//the 属性 data-dc-名前 of the root DC element has the DC 名前
var dc_home_page = context。getAttribute('data-ホーム-page') ||
'main';
//the 属性 data-dc-名前 has the 初期設定 表示する 名前
$DX。取得する({
url: '/dcapp/' + dc_name + '/' + dc_home_page ,// いいえ I18N
handler: function (){
context。innerHTML = this。responseText
}
}
);
}
返品する {
showPartner : showPartner,
init : init
}
})


以下は、main.js から関数を呼び出す例です。

 
Notes
$DX。取得する({
url: '/dcapp/' + <dc_name> + '/function/' + <dc_function_name >,
handler: function (){
//code to handle function 取得する
}

Zoho Sites からフォームデータを取得する



このドキュメントは、Zoho Sites の動的コンテンツ機能について理解する際の参考となるものです。動的コンテンツ機能を利用することで、お客様の特定の要件に柔軟に対応できるようになります。さらにご不明な点がある場合は、いつでもお気軽にお問い合わせください。support@zohosites.com までご連絡いただければ、できるだけ早くご質問にお答えします。