この章の内容は次のとおりです。
将来サイト・プレビュー機能を使用すると、コンテンツ・コントリビュータはOracle WebCenter Sites: Contributorインタフェースで将来の特定の時点に表示されるアセットをプレビューできます。この機能では、アセットの開始日属性および終了日属性を利用します。これら2つの属性によって、そのアセットがWebサイト上で提供される期間が決まります。コンテンツ作成者は、Contributorインタフェースの「編集」画面で開始日と終了日を指定できます。
将来サイト・プレビュー機能を正しく実装するには、次の要件を満たす必要があります。
コンテンツ・コントリビュータは、適切なアセット・セットを作成する必要があります。詳細は、「一連のアセットの作成」を参照してください。
管理者は、asset:filterassetsbydate
タグが含まれるように、アセットをレンダリングするためのテンプレートを更新する必要があります。詳細は、「将来サイト・プレビューのテンプレートの作成」を参照してください。
日付に応じて同じアイテムの異なるバージョンが表示されるようにする場合、コンテンツ作成者は複数のアセットを作成する必要があります。
たとえば、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
など)を、開発者が指定しておくことをお薦めします。
将来サイト・プレビュー機能では、asset:filterassetsbydate
タグを適切に使用することが非常に重要です。このタグによって、アセットが指定日に基づいてフィルタ処理されます。このタグの正しい使用方法については後述します。asset:filterassetsbydate
タグの詳細は、Oracle WebCenter Sitesタグ・リファレンスを参照してください。
この項には次のトピックが含まれます:
このフィルタ・タグのフォーマットは次のとおりです。
<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:ss
とyyyy-MM-dd
のいずれかのフォーマットで指定します。date
属性は、プレビュー画面で日付ピッカーから渡される日付値を受け入れるようにコーディングする必要があります(これには、__insiteDate
変数を使用します)。
このタグによって、開始日と終了日で指定日を囲むアセットを含む出力リスト(outputList
)を生成します。
このタグによって実行される手順は次のとおりです。
コンテンツ管理システム上にテンプレートが格納されているかどうかを確認するために、cs.sitepreview
プロパティがあるかどうかがチェックされます。
将来サイト・プレビューがオフになっている場合は、システム日付が日付フィールドに渡されます。
将来サイト・プレビューがオンになっている場合は、タグのルーチンによって次の処理が実行されます。
レンダリングされている現在のページでキャッシングを無効にします(キャッシングの詳細は、「キャッシングに関する考慮事項」を参照)。
(日付ピッカーから渡された)日付パラメータを受け入れます。
タグに渡された日付のフォーマットが適切かどうかをチェックします。
指定日に基づいてアセットの入力リストをフィルタ処理して、出力リストを生成します。
asset:filterassetsbydate
タグには、assetid
とassettype
という名前の2つの列が含まれる入力リストが必要です。この入力リストは、様々な方法で構成できます。
入力リストを作成する最も簡単なお薦めの方法は、コンテンツ・コントリビュータが、選択した属性(通常、name
属性)を入力する際にネーミング規則に従うことです。これにより、asset:search
タグまたはその他の同様のタグを使用してリスト作成コードを記述して、その決められた文字列の属性を検索し、検索結果からリストを構成できます。
入力リスト内に配置するアセットの別の検索方法には、推奨アセット・タイプを使用して、関心のあるアセットのリストを保持する方法もあります。
フィルタ処理の必要なアセットを決定するうえでどの方法を使用する場合でも、次のサンプル・コードで示すように、
listobject
タグを使用して、フィルタ・タグの入力リストを構成します。
このサンプル・コードによって、inputListName
リスト・オブジェクトが作成され、assetid
とassettype
の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>
配信システムでは、Webページが現在の日付に応じて正しく表示されるように、アセット・エントリが適切な時点でキャッシュから除去される必要があります。そのため、WebCenter Sitesでは、キャッシュされたページの有効期限を計算するために使用される開始日と終了日がファクタ内に含まれます。
注意:
WebCenter Sitesでは、ディスクへのエクスポートのパブリッシュでの開始日と終了日の使用はサポートされていません。アセットがディスクにエクスポートされる場合、開始日と終了日の各属性もディスクにエクスポートされます。ただし、ディスクへのエクスポートのパブリッシュ方法には、キャッシュのクリーンアップ・プロセスのような(他のパブリッシュ方法では、有効期限切れのアセットがディスクから自動的に除去される)メカニズムは用意されていません。
コンテンツ管理システムでは、ページがプレビューされると、asset:filterassetsbydate
タグによってそのページのページ・キャッシングが無効になります。そのため、提供されるページには、将来プレビューの日付ピッカーから渡される日付に基づいてフィルタ処理されたアセットが常に表示されるようになり、別の日付入力を使用して生成された可能性のあるページ・キャッシュからページが提供されることはありません。