24 将来サイト・プレビュー・アセットおよびテンプレートを作成するためのベスト・プラクティス
イベントが続くかぎり、イベントに対して特別なバージョンのページを実行できます。テンプレートでは、アセットを日付で抽出するタグを使用するだけです。コンテンツ側で、コンテンツ・コントリビュータは時間依存のアセットを作成する必要があります。
トピック:
将来サイト・プレビューの実装について
コンテンツ・コントリビュータは、Oracle WebCenter Sites: Contributorインタフェースで、アセットが後でオンライン・サイトにどのように表示されるかをプレビューできます。将来サイト・プレビュー機能を有効にするには、アセットの開始日と終了日の属性を使用します。これら2つの属性によって、そのアセットがWebサイト上で提供される期間が決まります。コンテンツ作成者は、Contributorインタフェースの「編集」画面で開始日と終了日を指定できます。
将来サイト・プレビュー機能を正しく実装するには:
-
コンテンツ・コントリビュータは、適切なアセット・セットを作成する必要があります。詳細は、「一連のアセットの作成」を参照してください。
-
管理者は、
asset:filterassetsbydate
タグが含まれるように、アセットをレンダリングするためのテンプレートを更新する必要があります。詳細は、「将来サイト・プレビューのテンプレートの作成」を参照してください。
一連のアセットの作成
サイトにアイテムの異なるバージョンを異なる日付で表示しますか。この目的を実現するには、複数のアセットが必要です。たとえば、1日だけの元日販売イベント用に特別なバージョンのページを実行するには、3つのアセットが必要です。通常のページ・アセット、販売イベント・アセットおよび通常のページ・アセットの複製です。
たとえば:
-
標準ページ・アセットを作成し、その終了日をセール日の前日(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タグ
このフィルタ・タグのフォーマットは次のとおりです。
<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
タグによってそのページのページ・キャッシングが無効になります。そのため、提供されるページには、将来プレビューの日付ピッカーから渡される日付に基づいてフィルタ処理されたアセットが常に表示されるようになり、別の日付入力を使用して生成された可能性のあるページ・キャッシュからページが提供されることはありません。