プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebCenter Sitesでの開発
12c (12.2.1.1)
E77292-01
目次へ移動
目次

前
次

24 将来サイト・プレビュー・アセットおよびテンプレートを作成するためのベスト・プラクティス

この章では、将来サイト・プレビュー機能を正常に実装する方法について説明します。コンテンツ作成者は、時間依存の一連のアセットの作成方法を理解する必要があります。また、開発者は、日付に基づいてアセットをフィルタ処理するタグを、それらのアセットを表示するためのテンプレートに含める必要があります。

この章の内容は次のとおりです。

24.1 将来サイト・プレビューの実装について

将来サイト・プレビュー機能を使用すると、コンテンツ・コントリビュータはOracle WebCenter Sites: Contributorインタフェースで将来の特定の時点に表示されるアセットをプレビューできます。この機能では、アセットの開始日属性および終了日属性を利用します。これら2つの属性によって、そのアセットがWebサイト上で提供される期間が決まります。コンテンツ作成者は、Contributorインタフェースの「編集」画面で開始日と終了日を指定できます。

将来サイト・プレビュー機能を正しく実装するには、次の要件を満たす必要があります。

24.2 一連のアセットの作成

日付に応じて同じアイテムの異なるバージョンが表示されるようにする場合、コンテンツ作成者は複数のアセットを作成する必要があります。

たとえば、Webサイト内にページを作成すると仮定します。そのページの特別バージョンを、1日かぎりの元日セール・イベント用に実行するとします。この作業を実行するには、3つの異なるアセットが必要になります。1日かぎりのセール用のページを作成する方法は、次のとおりです。

  • 標準ページ・アセットを作成し、その終了日をセール日の前日(12月31日23:59:59)に設定します。

  • セール・イベント・アセットを作成し、開始日をセール日の始まり(1月1日00:00:00)、終了日をセール日の終わり(1月1日23:59:59)に設定します。

  • 標準ページ・アセットを複製し、開始日をセール日の翌日(1月2日00:00:00)に設定します。

これら3つのアセットを作成したら、それらを入力としてasset:filterassetsbydateタグに渡すことができ(詳細は、「将来サイト・プレビューのテンプレートの作成」を参照)。これにより、指定日に基づいてレンダリング対象となるアセットが返されるようになります。

テンプレートでの編集、パブリッシュおよびフィルタ処理を目的とする関連アセット・グループの検索で使用しやすくするために、関連する時間依存のアセット・セットの作成時にネーミング規則に従ってコンテンツ・コントリビュータが入力する属性(nameなど)を、開発者が指定しておくことをお薦めします。

24.3 将来サイト・プレビューのテンプレートの作成

将来サイト・プレビュー機能では、asset:filterassetsbydateタグを適切に使用することが非常に重要です。このタグによって、アセットが指定日に基づいてフィルタ処理されます。このタグの正しい使用方法については後述します。asset:filterassetsbydateタグの詳細は、Oracle WebCenter Sitesタグ・リファレンスを参照してください。

この項には次のトピックが含まれます:

24.3.1 asset:filterassetsbydateタグ

このフィルタ・タグのフォーマットは次のとおりです。

<asset:filterassetsbydate
inputList="inputListName"
outputList="outputListName"
[date="date value in either yyyy-MM-dd HH:mm:ss OR yyyy-MM-dd format"]>

このフィルタ・タグには、次のように2つの入力属性(inputListおよびdate)と、1つの出力属性(outputList)があることに注目してください。

  • inputList属性によって、指定日に基づいてフィルタ処理するアセットのリストを指定します。

  • date属性はオプションです。date属性は、yyyy-MM-dd HH:mm:ssyyyy-MM-ddのいずれかのフォーマットで指定します。date属性は、プレビュー画面で日付ピッカーから渡される日付値を受け入れるようにコーディングする必要があります(これには、__insiteDate変数を使用します)。

  • このタグによって、開始日と終了日で指定日を囲むアセットを含む出力リスト(outputList)を生成します。

このタグによって実行される手順は次のとおりです。

  • コンテンツ管理システム上にテンプレートが格納されているかどうかを確認するために、cs.sitepreviewプロパティがあるかどうかがチェックされます。

  • 将来サイト・プレビューがオフになっている場合は、システム日付が日付フィールドに渡されます。

  • 将来サイト・プレビューがオンになっている場合は、タグのルーチンによって次の処理が実行されます。

    • レンダリングされている現在のページでキャッシングを無効にします(キャッシングの詳細は、「キャッシングに関する考慮事項」を参照)。

    • (日付ピッカーから渡された)日付パラメータを受け入れます。

    • タグに渡された日付のフォーマットが適切かどうかをチェックします。

    • 指定日に基づいてアセットの入力リストをフィルタ処理して、出力リストを生成します。

24.3.2 入力リスト

asset:filterassetsbydateタグには、assetidassettypeという名前の2つの列が含まれる入力リストが必要です。この入力リストは、様々な方法で構成できます。

入力リストを作成する最も簡単なお薦めの方法は、コンテンツ・コントリビュータが、選択した属性(通常、name属性)を入力する際にネーミング規則に従うことです。これにより、asset:searchタグまたはその他の同様のタグを使用してリスト作成コードを記述して、その決められた文字列の属性を検索し、検索結果からリストを構成できます。

入力リスト内に配置するアセットの別の検索方法には、推奨アセット・タイプを使用して、関心のあるアセットのリストを保持する方法もあります。

フィルタ処理の必要なアセットを決定するうえでどの方法を使用する場合でも、次のサンプル・コードで示すように、listobjectタグを使用して、フィルタ・タグの入力リストを構成します。

このサンプル・コードによって、inputListNameリスト・オブジェクトが作成され、assetidassettypeの2つの列を含む行が追加されます。次に、listobject:tolistによって、assetInputListという名前の入力リストが作成されます。これにより、このリストを入力としてフィルタ・タグに渡すことができます。

<listobject:create name="inputListName" columns="assetid,assettype" />
<listobject:addrow name="inputListName">
<listobject:argument name="assetid" value='<%=ics.GetVar("assetIdVar")%>' />
<listobject:argument name="assettype" value='<%=ics.GetVar("assetTypeVar")%>' />
</listobject:addrow>
<listobject:tolist name="inputListName" listvarname="assetInputList" />

わかりやすくするために、このコード・スニペットでは、1つの行しか含まれていない入力リストの作成について説明しています。実際には、ユーザーは(通常、asset:searchタグの結果またはその他のリストから読み取られた)複数の行をリストに追加し、各行が指定日に基づいてフィルタ処理される必要のあるアセットを表すことが一般的です。

フィルタ処理の対象となるアセットの入力リストを作成した後で、次のようにasset:filterassetsbydateタグを使用します。

<asset:filterassetsbydate inputList="assetInputList" outputList="assetOutputList" date='<%=ics.GetVar("dateValueVariable")%>' />

将来サイト・プレビューの日付ピッカーから日付属性に入力を渡すには、汎用のdateValueVariable_insiteDateに置き換えます。

このタグによって、assetOutputList出力リストが生成されます。日付に基づくフィルタ処理テストをクリアするアセットについては、次のリストに目を通してください。

<ics:if condition='<%=ics.GetList("assetOutputList")!=null &&     
ics.GetList("assetOutputList").hasData()'%>
<ics:then>
	<ics:listloop listname=assetOutputList>
	<ics:listget listname=assetOutputList fieldname=assetid output=id />
	<ics:listget listname=assetOutputList fieldname=assettype output=type/>

<!--
Perform your usual asset load, asset get and other rendering functions using WebCenter Sites tags here 
-->
</ics:listloop>
</ics:then>
</ics:if>

24.4 キャッシングに関する考慮事項

配信システムでは、Webページが現在の日付に応じて正しく表示されるように、アセット・エントリが適切な時点でキャッシュから除去される必要があります。そのため、WebCenter Sitesでは、キャッシュされたページの有効期限を計算するために使用される開始日と終了日がファクタ内に含まれます。

注意:

WebCenter Sitesでは、ディスクへのエクスポートのパブリッシュでの開始日と終了日の使用はサポートされていません。アセットがディスクにエクスポートされる場合、開始日と終了日の各属性もディスクにエクスポートされます。ただし、ディスクへのエクスポートのパブリッシュ方法には、キャッシュのクリーンアップ・プロセスのような(他のパブリッシュ方法では、有効期限切れのアセットがディスクから自動的に除去される)メカニズムは用意されていません。

コンテンツ管理システムでは、ページがプレビューされると、asset:filterassetsbydateタグによってそのページのページ・キャッシングが無効になります。そのため、提供されるページには、将来プレビューの日付ピッカーから渡される日付に基づいてフィルタ処理されたアセットが常に表示されるようになり、別の日付入力を使用して生成された可能性のあるページ・キャッシュからページが提供されることはありません。