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

前
次

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

イベントが続くかぎり、イベントに対して特別なバージョンのページを実行できます。テンプレートでは、アセットを日付で抽出するタグを使用するだけです。コンテンツ側で、コンテンツ・コントリビュータは時間依存のアセットを作成する必要があります。

トピック:

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

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

将来サイト・プレビュー機能を正しく実装する手順は、次のとおりです。

24.2 一連のアセットの作成

サイトにアイテムの異なるバージョンを異なる日付で表示しますか。この目的を実現するには、複数のアセットが必要です。たとえば、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など)を、開発者が指定しておくことをお薦めします。

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

asset:filterassetsbydateタグは、特定の日付に従ってアセットを抽出します。将来サイト・プレビュー機能では、このタグを適切に使用することが非常に重要です。

このタグの適切な使い方を理解するには、次のトピックを参照してください。

asset:filterassetsbydateの詳細は、『Oracle Fusion Middleware 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タグによってそのページのページ・キャッシングが無効になります。そのため、提供されるページには、将来プレビューの日付ピッカーから渡される日付に基づいてフィルタ処理されたアセットが常に表示されるようになり、別の日付入力を使用して生成された可能性のあるページ・キャッシュからページが提供されることはありません。