この項の内容は次のとおりです。
Site Studioのサイト・アセットは、コンテンツをプレゼンテーションとは別に簡単に保守する、モジュール方式でカスタマイズ可能な方法を提供します。サイト内の個々のアセットに変更を加える場合、テンプレートと定義の関係(多くの異なるページでの両者の関係など)を知る必要がある場合があります。
サイト・アセットは、サイトの視覚的プレゼンテーションとWebページの実際のコンテンツ(情報)を直接制御するために使用されます。この方法では、コンテンツとプレゼンテーションは別個で、相互に影響を与えることなく保守や変更を行うことが可能です。
Webサイトの構造とプレゼンテーションを保守するファイルはテンプレート(ページ・テンプレート、サブテンプレートおよびリージョン・テンプレート)です。カスケーディング・スタイル・シートも構造とプレゼンテーションの制御に使用でき、Site Studioで管理できます。コンテンツを保守するファイルは定義(プレースホルダ定義、リージョン定義および要素定義)です。これらの定義を使用して、コンテンツの保守方法を制御します。
コンテンツ自体はコンテンツ・ファイル(コントリビュータ・データ・ファイル、ネイティブ・ドキュメント、イメージおよびサイトで使用するFlashなどの他の関連メディア)に格納されます。コントリビュータ・データ・ファイルは、Site Studioによって生成されるXML形式のファイルです。コントリビュータ・データ・ファイルは、Site Studio Contributorアプリケーションを使用して編集します。ネイティブ・ドキュメントは、Microsoft Wordなどの使い慣れたサードパーティ・アプリケーションを使用して作成します。ネイティブ・ドキュメントは、Dynamic Converterを使用してHTML形式に変換し、対応するアプリケーションを使用して編集します。コンテンツの責任を負うのはコントリビュータであるため、コントリビュータ・データ・ファイルはコントリビュータを使用して編集されます。ネイティブ・ドキュメントと他のファイルは、対応するサードパーティ・ソフトウェア(Microsoft Word、Adobe Photoshopなど)を使用して編集し、コントリビュータでサイトに追加できます。コントリビュータで追加されたファイルは、設計者または管理者が簡単に制御できます。
また、サイトを想定どおりに機能させるために使用される制御ファイルおよび構成ファイルがいくつかあります。これらの制御ファイルについては、このガイドの他の章で説明します。
テンプレートは、使用可能なサイト・アセットの配置に使用されます。すべて、関連付けられたコンテンツを表すタグが含まれたHTMLの1部分(ページ・テンプレートの場合は完全なHTMLページ)です。
使用されるテンプレートは、次の3種類です。
テンプレートによって、データを特定の状態に配置できます。定義によって、テンプレートに配置可能なサイト・アセットとアセットの表示方法を定義します。
ページ・テンプレートは、完全なHTMLページである唯一のテンプレートです。一般的には、Site Studioの最善の使用方法は、アセットを最大限再利用することです。ページ・テンプレートを他のテンプレートのフレームワークとし、サブテンプレートとリージョン・テンプレートを使用してコンテンツを特定の配置にします。さらに、ページ・テンプレートとサブテンプレートで、コントリビューション・リージョンの配置を定義します。
階層の各セクションに、そのノードのプライマリ・ページとしてページ・テンプレートを割り当てることができます(通常そのようにします)。サイト階層のルート・セクションには、Webサイトのホーム・ページが配置されます。階層内の他のセクション同様、セクション・プロパティのプライマリ・ページ・エントリとセカンダリ・ページ・エントリには、ルートを含む、各セクションのプライマリ・ページとセカンダリ・ページに使用されるページ・テンプレートが表示されます。
ページ・テンプレートをセクションのプライマリ・ページまたはセカンダリ・ページに関連付けるデータはプロジェクト・ページに格納されます。プライマリ・ページとセカンダリ・ページの割当てはプロパティ・ペインで行います。
ページ・テンプレートのプレースホルダは、最終的にはwcmPlaceholderスクリプト拡張機能を使用して配置されます。プレースホルダ自体はサイト・アセットではありません。プレースホルダは単にページ・テンプレートまたはサブテンプレート上に定義された領域で、プレースホルダ定義を使用して特定のプレースホルダでのコンテンツの再利用方法を決めることができます。
サブテンプレートは、単に<HEAD>セクションのないページ・テンプレートです。コントリビューション・リージョンを含むことができ、主にページ・テンプレートの1つのコントリビューション・リージョンを複数に分割するために使用されます。
サブテンプレートでのタグの挿入は、ページ・テンプレートの場合と同様です。ただし、サブテンプレートでの<HEAD>タグへの参照のインスタンスは予期しない結果となります。これは、複数のスニペットを持ち、その1つがヘッドを参照するフラグメントをサブテンプレートで使用する場合によく起こります。
リージョン・テンプレートは、要素とこれに関連付けられているコンテンツの表示場所の定義に役立ちます。リージョン・テンプレートは、使用されるリージョン定義に基づいて選択されます。
リージョン・テンプレートは、コンシューマ・ページに表示される要素の配置に使用されます。使用できる要素は、リージョン定義によって定義されます。使用可能なすべての要素を使用する必要があるわけではありません。これによって、同じ名前の要素定義に対して複数のレイアウトを持つリージョン・テンプレートを作成できます。名前が同じ要素定義を異なるデータ・ファイルに使用することで、サイト・アセットを簡単に再利用できます。
定義は、使用可能なアセットとその使用方法の定義に使用されます。
この項の内容は次のとおりです。
プレースホルダ定義は、コントリビュータがデータを変更できるか、メタデータを変更できるか、関連付けられているデータ・ファイルは切替えや削除が可能かなどのコントリビューション・リージョン内で有効なアクションを制御します。
プレースホルダ定義は、コード(タグ)、セクション・プロパティまたはグローバル・マッピング・プロパティで、あるいはデフォルト・プレースホルダとしてプレースホルダに関連付けられます。プレースホルダ定義とプレースホルダの関連付けが複数リストされている場合、優先度で決定されます。つまり、コードでの関連付けは、セクション・プロパティより優先され、セクション・プロパティはグローバル・マッピング・プロパティより優先されます。グローバル・マッピング・プロパティは、デフォルト・プレースホルダより優先されます。
<complexProperty name="flags">は、プレースホルダ定義が使用される場合に有効な(および無効な)アクションの集まりです。
<mappings>タグには、有効なリージョン定義(<regionDefinition>タグを使用)とこれに関連付けられているテンプレート(<regionTemplate>を使用)がリストされます。また、特定のリージョン定義のデフォルト・リージョン・テンプレートは、<regionTemplate>タグ内にコーディングされます。同様に、使用可能なサブテンプレート(これがある場合)は、<subTemplates>タグ下にリストされます。
これらはデザイナのUI(「プレースホルダ定義」ダイアログ」)で処理します。定義のソース・コードは、デザイナで「ソース」タブを選択すると表示できます。
<?xml version="1.0" encoding="UTF-8"?> <placeholderDefinition xmlns="http://www.oracle.com/sitestudio/PlaceholderDefinition/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oracle.com/sitestudio/PlaceholderDefinition/ http://www.oracle.com/sitestudio/ss_placeholder_definition.xsd"> <property name="description" value="Default placeholder definition" /> <complexProperty name="flags"> <property name="update" value="true" /> <property name="preview" value="true" /> <property name="reset" value="true" /> <property name="modifyMetadata" value="true" /> <property name="approve" value="true" /> <property name="reject" value="true" /> <property name="docInfo" value="true" /> <property name="switchDataFile" value="true" /> <property name="viewUsageReport" value="true" /> <property name="viewTrackerReport" value="true" /> <property name="docInfoUpdate" value="true" /> <property name="switchRegionTemplate" value="true" /> <property name="removeAssociation" value="false" /> </complexProperty> <mappings> <regionDefinition location="regiondefinition_recipe"> <regionTemplate location="regiontemplate_recipe" default="true" /> </regionDefinition> <regionDefinition location="regiondef_nativedoc"> <regionTemplate location="regiontemplate_nativedocument" default="true" /> <regionTemplate location="regiontemplate_recipe" /> </regionDefinition> <regionDefinition location="regiondefinition_basic"> <regionTemplate location="regiontemplate_default" default="true" /> </regionDefinition> </mappings> <subTemplates> <subTemplate location="subtemplate_right_left" /> <subTemplate location="subtemplate_new_basic" /> </subTemplates> </placeholderDefinition>
各プレースホルダ定義でリージョン・テンプレートとリージョン定義が関連付けられ、さらに、プレースホルダ定義の範囲内でそのリージョン定義のデフォルト・テンプレートがどのリージョン・テンプレートかがマークされることが、XMLからわかります。異なるプレースホルダ定義を使用すると、当然異なる関連付けが行われます。
リージョン定義は、プレースホルダを介したコンテンツ(コントリビュータ・データ・ファイル、ネイティブ・ドキュメントなどの任意のコンテンツ)と適切なリージョン・テンプレートとのマッピングに使用されます。
インスタンスで使用されるリージョン定義は、2つの方法のいずれかで定義できます。1つ目として、リージョン定義は、ページ・テンプレートまたはサブテンプレート内に記述される場合、wcmPlaceholder
タグで明示的にコールできます。
より一般的には、リージョン定義は、プレースホルダに使用されるデータ・ファイルのメタデータ・フィールドxRegionDefinition
の値に基づいてロードされます。
この例は、5つの要素定義が参照されるリージョン定義です。各<elementReference>
タグには、ラベルの値(リージョンを編集用に開いたときにコントリビュータに表示される)および説明の値(コントリビュータがラベルにマウスオーバーしたときに表示されるツールチップ・テキスト)を定義する<property>
タグがあります。コントリビュータの詳細は、『Oracle WebCenter Content Site Studio Contributorユーザーズ・ガイド』を参照してください。
<dataProperty name="metadata">
タグは、メタデータの変更の有効化の例外の場所です。これは、デザイナのUI(「メタデータ変更の有効化」ダイアログ)で行います(『Oracle WebCenter Content Site Studio Designerユーザーズ・ガイド』を参照)。
<complexproperty name="switchregioncontent">
タグは、コントリビュータが「リージョン・コンテンツの切替え」ダイアログを使用してアクセス可能なコンテンツの場所です。これは、デザイナのUI(「リージョン・コンテンツ・オプション」ダイアログ)で行います(『Oracle WebCenter Content Site Studio Designerユーザーズ・ガイド』を参照)。
<?xml version="1.0" encoding="UTF-8"?> <regionDefinition xmlns="http://www.oracle.com/sitestudio/Element/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oracle.com/sitestudio/Element/ http://www.oracle.com/sitestudio/ss_element_definition.xsd"> <elements> <elementReference name="Title_textonly" location="element_plaintext_full"> <property name="label" value="Title_textonly" /> <property name="description" value="Title of recipe, using text only element" /> </elementReference> <elementReference name="Image" location="element_image_min"> <property name="label" value="Recipe_image" /> <property name="description" value="Image associated with the recipe" /> </elementReference> <elementReference name="Ingredients" location="element_wysiwyg_full"> <property name="label" value="Ingredients" /> <property name="description" value="" /> </elementReference> <elementReference name="Directions" location="element_plaintext_full"> <property name="label" value="Directions" /> <property name="description" value="" /> </elementReference> <elementReference name="DynamicList" location="element_dynlist_full"> <property name="label" value="Dynamic List" /> <property name="description" value="Dynamic List for toolbar purposes" /> </elementReference> <elementReference name="StatList" location="element_staticlist_full"> <property name="label" value="Statlist" /> <property name="description" value="Static List for the toolbar" /> </elementReference> </elements> <property name="description" value="Recipe Region" /> <dataProperty name="metadata"> <![CDATA[]]> </dataProperty> <complexProperty name="switchregioncontent"> <property name="createnewxml" value="true" /> <property name="createnewnative" value="true" /> <property name="choosemanaged" value="true" /> <property name="chooselocal" value="true" /> <property name="choosenone" value="false" /> <valueList name="createnewnativedoctypes"> <value>.pptx</value> <value>.psd</value> </valueList> <complexProperty name="choosemanagedquerytext"> <property name="corecontentonly" value="false" /> <dataProperty name="querytext"> <![CDATA[xWebsiteObjectType <Matches> `Data File` <OR> xWebsiteObjectType <Matches> `Native Document`]]> </dataProperty> </complexProperty> <dataProperty name="defaultmetadata"> <![CDATA[]]> </dataProperty> </complexProperty> </regionDefinition>
各要素定義は、他のサイト・アセット同様単純なXMLファイルです。
静的リスト要素定義ファイルでは、静的リスト内に使用される各要素定義がリストされるため、XMLにより多くのコードが含まれます。
カスタム要素は、単にHTMLの個別のフォームをロードするのみのため、他の要素定義より複雑ということはありません。
サンプル・コード
要素定義のコードは、要素のタイプに応じて大きく異なります。すべての要素に<complexProperty name="flags">セクションが含まれ、フラグとその状態が示されます。要素定義を介して要素で使用されるフラグは、要素によって異なります。
要素定義のコードはバリエーションが広いため、ここではコードを示しません。コードの違いを確認するには、デザイナで要素定義を開きます。
この項では、ページ・レイアウトと再利用性を制御するためのテンプレートと定義の相互作用について技術的に説明します。
すべてのデータはリージョン定義でタグ付けされる必要があります。それが、適切な定義とテンプレートの組合せによって配置される方法です。
各アセットは個々に格納されているため、クライアントに提供する前にサーバーで組み合せてページにします。作成に使用されるアセットは、前述のとおり、アセット同士の参照に基づいて選択されます。
リクエストがあった後のページの作成での一般的なイベントのプロセスは、次のとおりです。
リクエストされたURLに基づいて、ページ・テンプレートがロードされます。
特定のページのリクエストで、そのページに関連付けられているページ・テンプレートがロードされます。フォルダまたはルートのリクエストで、プロジェクト・ファイルで指定されたページ・テンプレートがロードされます。そのテンプレートの名前は、デザイナのプロパティ・ペインで編集できます。
プレースホルダにリストされていないすべてのアセットがロードされます。
プレースホルダ以外のアセットがロードされる際、Idocスクリプトが実行されてプレースホルダに埋め込まれ、プレースホルダ定義の評価が開始されます。ページの特定のプレースホルダ定義が次の順にロードされます。
wcmPlaceholderタグに明示的に指定されたプレースホルダ定義。
タグにプレースホルダ定義が特にリストされていない場合、URLに基づいたセクション・プロパティにリストされた定義が使用されます。
セクション・プロパティにプレースホルダ定義がリストされていない場合、グローバル定義マッピングに使用されている定義が使用されます。
グローバル定義マッピングにリストされたプレースホルダ定義がない場合、プロパティ・ペインのWebサイト・プロパティにリストされたプレースホルダが使用されます。
使用されるデータ・ファイルは、セクション・プロパティの「プライマリ・ページ・パラメータ(またはセカンダリ・ページ・パラメータ)」にリストされた値に基づきます。例外は、使用されるデータ・ファイルがwcmPlaceholderタグに明示的にリストされている場合です。
データ・ファイルのxRegionDefinitionメタデータ・フィールドには、使用されるリージョン定義がリストされます。繰返しになりますが、これは、リージョン定義がwcmPlaceholderタグに明示的にリストされていない場合です。
wcmPlaceholderタグに別のリージョン・テンプレートが指定されていないかぎり、使用されるリージョン・テンプレートおよび要素定義は、リージョン定義の設定から決定されます。
すべての要素が収集された後、ページが編成されて提供されます。
wcmPlaceholderの使用の詳細は、9.2項「wcmPlaceholder」を参照してください。
テンプレートや定義などの変換定義は、変換ルールの参照に使用される単純なXMLファイルです。
デフォルトのルールを使用した変換定義に使用されるXMLの例を次に示します。
<?xml version="1.0" encoding="UTF-8"?> <conversionsDefinition xmlns="http://www.oracle.com/sitestudio/ConversionsDefinition/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oracle.com/sitestudio/ConversionsDefinition/ http://www.oracle.com/sitestudio/ss_conversions_definition.xsd"> <conversion name="default" type="simple" key="s~"/> </conversionsDefinition>
コントリビューション・モードは、コントリビュータがページを編集用に開いている場合のページの状態です。その他の場合、ページは消費モードにあるとみなされます。
この項の内容は次のとおりです。
キー・コマンドは、コントリビュータ・モードへの移行に使用されるキーストロークの組合せです。これは、JavaScriptファイルwcm.toggle.jsで設定されます。詳細は、5.3項「wcm.toggle.js」を参照してください。
問合せ文字列内でwcm.contributor.modeを設定すると、設定に応じてコントリビュータ・モードまたは消費モードが有効になります。これは、次の例に示すようにURLで行うのが最も一般的です。
http://www.example.com?wcm.contributor.mode=true
true
に設定すると、コントリビュータ・モードが有効になります。false
に設定すると、消費モードが有効になります。
同じドメイン内の移動時にコントリビュータ・モードの設定を保持するには、セッションCookieを設定します。Cookieは、キー・コマンド・アクションまたは問合せ文字列値に基づいて設定または削除されます。
コントリビュータが編集用にページを開くと、ページの状態は次のように遷移します。
ユーザーがキー・コマンド(wcm.toggle.jsで設定。デフォルトは[Ctrl] + [Shift] + [F5])を押します。
コントリビューション・モード・セッションCookieが設定されます。
コントリビューション・モード問合せ文字列値がURLから削除されます(存在する場合)。
ブラウザが新たに算出されたURLを使用して同じサーバーのページをリクエストします。
サーバー認証が行われます。認証に失敗すると、コントリビュータ・モードCookieは削除されます。
ブラウザがリクエストされたページをロードします。
ページのロード時、次のコントリビュータ・モード・キーボード・コマンドが検出されるようOnKeyDownイベント・ハンドラがHTMLドキュメント・オブジェクトに適用されます。
ページのロード時、JavaScriptコードがコントリビュータ・モードCookieを検出します。(コントリビュータ・モードCookieがサーバーによって削除されていないものとします。)
HTMLウィンドウOnLoadイベント時、ブラウザでコントリビューション・モードになります。