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

前
次

22 ベーシック・アセットのテンプレート・エレメント例

例をいくつか見ていくと、ベーシック・アセットのテンプレートのコーディングについて理解が深まります。このようなアセットには、コレクション、問合せおよび記事があります。また、これらの例を利用して、ベーシック・アセットのサイト・ナビゲーションを作成することもできます。

トピック:

これらのトピックの例では、「テンプレートおよびCSElementのエレメントのコーディング」で示した情報について説明します

22.1 ベーシック・モジュラ・デザインの作成

新規コードを記述することなく、ホーム・ページの領域を作成するにはどのようにしますか。モジュール式のサイト・デザインでは、一般的なエレメントを複数の場所またはコンテキストで再利用できます。

5つの別個のエレメントからホーム・ページの領域を作成します。サイトのホーム・ページの次の列には、その日のメイン・ストーリーが表示されます。リスト内のストーリーごとにサマリー段落と署名行があります。ストーリーのタイトルは、そのストーリー全文へのハイパーリンクです。リスト内の最初のストーリーを含むストーリーのいくつかには、次のように写真も表示されます。

図22-1 その日のメイン・ストーリー

図22-1の説明が続きます
「図22-1 その日のメイン・ストーリー」の説明

この例では、リスト内の最初のストーリーの特定、選択、リスト先頭への配置、および書式設定の方法について説明します。

リスト内の最初のストーリーの書式設定に使用されるエレメントは次のとおりです。

  • FiscalNews/Page/Home

  • FiscalNews/Collection/MainStoryList

  • FiscalNews/Article/LeadSummary

  • FiscalNews/ImageFile/TeaserSummary

トピック:

22.1.1 Homeエレメント

サイトのホーム・ページでは、Homeという名前のTemplateを使用できます。Templateは次の2つの方法で調べることができます。

  • Adminインタフェース内で検索して検査します。

  • Oracle WebCenter Sites Explorerを使用し、Templateエレメントを開きます。

たとえば、Fiscal Newsサイトのホーム・ページのTemplateを次に示します。

ElementCatalog/FiscalNews/Page/Home

開くと、まず、Homeエレメントによって、次のようにHomeページ・アセットがロードされ、そのアセットにHomePageという名前が付けられて、そのアセットのフィールドに情報が分散されます。

<ASSET.LOAD TYPE="Variables.c" OBJECTID="Variables.cid" NAME="HomePage"/>
<ASSET.SCATTER NAME="HomePage" PREFIX="asset"/>

cidの値がFiscal News URLから渡され、cの値が使用可能になりますが、これは、この値がHome TemplateSiteCatalogページ・エントリ内のresarg1列で変数として設定されているためです。このTemplateには、次のASSET.CHILDRENタグが含まれます。

<ASSET.CHILDREN NAME=HomePage LIST=MainStories CODE=TopStories/>

Homeでは、このコードによって、ページ・アセットのTopStoriesコレクションとして指定されたコレクション・アセットが取得され(CODE=TopStories)、それを保持するリストがMainStoriesという名前で作成されます(LIST=MainStories)。

次に、Homeによって、コレクションが正常に取得されたかどうかが確認され、MainStoryList Templateのページ・エントリがコールされます。

<IF COND = IsList.MainStories=true>
<THEN>
<RENDER.SATELLITEPAGE pagename=FiscalNews/Collection/MainStoryList
ARGS_cid=MainStories.oid
ARGS_p=Variables.asset:id/>
<THEN/>
<IF/>

Homeによって、ARGS_cidを使用してMainStoriesに対するコレクションを保持するリストのIDが渡され、ARGS_p=Variables.asset:idを使用してHomeページ・アセットのIDが渡されます。

22.1.2 MainStoryListエレメント

MainStoryListページ・エントリによって、そのルート・エレメントが呼び出されます。

ElementCatalog/FiscalNews/Collection/MainStoryList.xml

MainStoryListエレメントは、コレクション・アセットを書式設定するMainStoryList Templateアセットのテンプレート(ルート)エレメントです。このエレメントによって、ストーリーのメイン・リストを保持するホーム・ページ列のフレームワークが作成され、その列にTopStoriesコレクションからの記事が挿入されます。MainStoryListでは、それらの記事を書式設定するために、次の2つのテンプレートが使用されます。

  • コレクション内の最初の記事(最上位にランクされた記事)に対するLeadSummary

  • 残りの記事に対するSummary

この例の目的はリストの最初のストーリーの表示方法を紹介することなので、この例では、LeadSummary Templateエレメントについてのみ説明します。

MainStoryListによって、次のようにHomeから渡されたコレクションがロードされ分散されます。

<ASSET.LOAD TYPE="Variables.c" OBJECTID="Variables.cid"
NAME="MainStoryListCollection"/>
<ASSET.SCATTER NAME="MainStoryListCollection" PREFIX="asset"/>

次に、次のようにコレクションから記事が抽出され、それらを保持するリストが作成され、記事がそれぞれのランクに基づいて順序付けされます。

<ASSET.CHILDREN NAME="MainStoryListCollection" LIST="theArticles"
ORDER="nrank" CODE=-/>

続いて、次のようにLeadSummary Templateのページ・エントリがコールされます。

<RENDER.SATELLITEPAGE PAGENAME="FiscalNews/Article/LeadSummary"
ARGS_cid="theArticles.oid"
ARGS_ct="Full"
ARGS_p="Variables.p"/>

再度、このエレメントによって、次のようないくつかの情報が渡されます。

  • 記事を保持するリストのID (ARGS_cid)

  • 各記事へのリンクの作成時に使用するテンプレートの名前(ARGS_ct)

  • 元のページ・アセット(Home)のID (ARGS_p)。

リストはランクに基づいて順序付けされており、このコードによってリストがループされないため、ARGS_cidの値(theArticles.oid)は、コレクション内の最上位にランクされた記事のオブジェクトIDになります。これは、その記事がリスト内の最初の記事であるためです。

22.1.3 LeadSummaryエレメント

LeadSummaryページ・エントリによって、そのルート・エレメント(LeadSummary TemplateTemplateエレメント)が呼び出されます。

ElementCatalog/FiscalNews/Article/LeadSummary.xml

このエレメントによって、次のようにTopStoriesコレクション内の最初の記事が書式設定されます。

  • TeaserImageアソシエーションを使用して最初の記事に関連付けられたイメージ・ファイルを取得します。

  • TeaserSummaryエレメントを呼び出して、イメージの書式設定コードを取得します。

  • RENDER.GETPAGEURLタグを使用して、コレクション内の最初の記事のURLを取得します。

  • imagefileアセット、記事全文へのハイパーリンクである記事のタイトル、サマリー段落および署名行を表示します。

まず、LeadSummaryによって、次のように記事がロードされ、LeadSummaryArticleという名前が付けられます。

<ASSET.LOAD TYPE="Variables.c" OBJECTID="Variables.cid" NAME="LeadSummaryArticle"/>
<ASSET.SCATTER NAME="LeadSummaryArticle" PREFIX="asset"/>

次のように、そのTeaser imagefileアセットとして記事に関連付けられているアセットが取得され、そのファイルのリストがTeaserImageという名前で作成されます。

<ASSET.CHILDREN NAME="LeadSummaryArticle" LIST="TeaserImage" CODE="TeaserImageFile"/>

最後に、次のようにTeaserSummary Templateのページ・エントリがコールされ、それに対してリスト内に保持されているimagefileアセットのIDが渡されます。

<THEN>
<RENDER.SATELLITEPAGE PAGENAME="FiscalNews/ImageFile/TeaserSummary"
ARGS_cid="TeaserImage.oid"/>
</THEN>
</IF>

22.1.4 TeaserSummaryエレメント

TeaserSummaryページ・エントリによって、そのルート・エレメント(TeaserSummary TemplateTemplateエレメント)が呼び出されます。

ElementCatalog/FiscalNews/ImageFile/TeaserSummary

imagefileアセットは、WebCenter Sitesデータベースに格納されているBLOBであり、データベースに格納されているBLOBは、ContentServerサーブレットではなく、BlobServerサーブレットによって処理される必要があるため、このエレメントによって、BlobServerのURLを使用するHTMLタグが取得されます。

たとえば、TeaserSummary Templateには、次のRENDER.SATELLITEBLOBタグがあります。

<RENDER.SATELLITEBLOB BLOBTABLE=ImageFile BLOBKEY=id BLOBCOL=urlpicture BLOBWHERE=Variables.asset:id BLOBHEADER= Variables.asset:mimetype SERVICE=IMG SRC ARGS_alt= Variables.asset:alttext ARGS_hspace=5 ARGS_vspace=5 />

このタグによって、<IMG SRC>というHTMLタグが作成されます。SRCは、BLOBWHERE=Variables.asset:id,によって渡されたIDを使用して識別されるImageFile表内のBLOBであり、その水平方向と垂直方向の間隔はどちらも5ピクセルです。

TeaserSummaryが終了すると、LeadSummaryに続きます。

22.1.5 LeadSummaryの再開

LeadSummaryの再開時、TopStoriesコレクション内の最初の記事のティーザ・イメージが取得されると、次のようにRENDER.GETPAGEURLを使用してその記事のURLが取得されます。

<RENDER.GETPAGEURL PAGENAME="FiscalNews/Article/Variables.ct"
cid="Variables.cid"
c="Article"
p="Variables.p"
OUTSTR="referURL"/>

MainStoryListエレメントによってLeadSummaryのページ・エントリがコールされたときに、Fullに設定されたct変数が渡されたことを思い出してください。そのため、LeadSummaryによってRENDER.GETPAGEURLに渡されるページ名は、実際にはFiscalNews/Article/Fullになります。

RENDER.GETPAGEURLによって、渡された情報に基づいて記事のURLが作成され、OUTSTRパラメータで指定されたとおり、referURLという名前の変数でそのURLがLeadSummaryに返されます。

LeadSummaryによって、次のようにHTML <A HREF>タグ内でreferURL変数が使用され、リンク、記事の概要および署名行が表示されます。

<A class="featurehead" HREF="Variables.referURL" REPLACEALL="Variables.referURL">
<csvar NAME="Variables.asset:description"/></A> 
&nbsp;<BR/>
<span class="thumbtext"><csvar NAME="Variables.asset:abstract"/>
</span><BR/>
<span class="thumbcredit"><csvar NAME="Variables.asset:byline"/>
</span><BR/>

REPLACEALLタグが、<A HREF>というHTMLタグで属性として使用されていることに注意してください。HTMLタグ内でXML変数を使用する場合は、このタグを属性として使用する必要があります。

これでLeadSummaryが終了し、MainStoryListに続きます。

22.1.6 MainStoryListの再開

次に、MainStoryListによって、TopStoriesコレクション内の残りの記事がループされ、それらの記事がSummary Templateを使用して書式設定されます。

ElementCatalog/Article/Summary

MainStoryListが終了すると、Homeに続きます。

22.1.7 Homeの再開

Homeが再開され、WireFeedBoxページ・エントリへのコールが行われます。

22.2 コレクション・アセット内の記事アセットへのリンクのコーディング

動的に提供されるWebCenter Sitesページへのハイパーリンクのリストを作成するために、エレメントでURLが必要な場合は、次の例に示すように、RENDER.GETPAGEURLタグを使用して、コレクション・アセットの記事アセットのリンクをコーディングします。

この例で参照されているエレメントは、次のとおりです。

  • ElementCatalog/FiscalNews/Page/SectionFront

  • ElementCatalog/FiscalNews/Collection/PlainList

この例の目的上、リンクの作成方法に集中できるように、表示されるコードからすべてのエラー・チェックが削除されています。

次の各項では、リンクのコーディング方法について説明します。

22.2.1 SectionFrontエレメント

SectionFrontは、SectionFront TemplateTemplateエレメント(ルート・エレメント)であり、ニュース、市場、株式などのメイン・セクション・ページに割り当てられます。

ElementCatalog/FiscalNews/Page/SectionFront.

SectionFrontエレメントによって書式設定されたページの1つのセクションには、次の図に示すように、そのページ・アセットに関連付けられたSectionHighlightsコレクションからの記事へのリンクのリストが表示されます。

図22-2 記事のリンクのリスト

図22-2の説明が続きます
「図22-2 記事のリンクのリスト」の説明

訪問者がセクションのリンクをクリックすると、SectionFrontエレメントが呼び出されます。まず、SectionFrontによって、次のようにccidの各変数を使用してページ・アセットがロードおよび分散され、それに対してSectionFrontPageという名前が付けられます。

<ASSET.LOAD TYPE="Variables.c" OBJECTID="Variables.cid" 
NAME="SectionFrontPage"/>
<ASSET.SCATTER NAME="SectionFrontPage" PREFIX="asset"/>

cおよびcidの値が、起動元のリンクからSectionFrontエレメントに渡されます。そのリンクは、ホーム・ページまたはその他いくつかの場所のいずれかからのリンクである可能性があります。

SectionFrontには、複数のASSET.CHILDRENタグの後に、SectionHighlightsコレクションを取得する次のタグが含まれます。

<ASSET.CHILDREN NAME="SectionFrontPage" LIST="SectionHighlights" CODE="SectionHighlight"/>

このコードによって、CODE=SectionHighlights文を使用してコレクションが取得され、それがSectionHighlightsという同じ名前でリストとして格納されます。

次に、SectionFrontによって、次のようにPlainListテンプレート(コレクション・テンプレート)のページ・エントリがコールされます。

<RENDER.SATELLITEPAGE 
pagename="FiscalNews/Collection/PlainList"
ARGS_cid="SectionHighlights.oid" ARGS_p="Variables.asset:id"/>

このコードによって、SectionHighlightsコレクションのID (cid)と、SectionFrontPageの名前を割り当てたページ・アセットである現在のページ・アセットのID (p)が渡されます。

22.2.2 PlainListエレメント

PlainListページ・エントリによって、そのルート・エレメント(PlainListテンプレートのテンプレート・エレメント)が呼び出されます。

ElementCatalog/FiscalNews/Collection/PlainList.

PlainListによって、コレクションから記事が抽出され、それぞれの記事のランクに基づいて、記事のサブヘッドラインとともにリスト形式で表示されます。このエレメントは、コレクション内のアセットが記事であることを前提にしています。コレクションをロードおよび分散する手順:PlainListによって、次のように(SectionFrontエレメントから渡された) cおよびcidの値を使用してコレクションがロードされ、分散されます。

<ASSET.LOAD TYPE="Variables.c" OBJECTID="Variables.cid" NAME="PlainListCollection"/>
<ASSET.SCATTER NAME="PlainListCollection" PREFIX="asset"/>

次に、PlainListによって、次のようにct変数がFullに設定されますが、これは、この変数の値が渡されなかったためです(Fullとは、記事テンプレートの名前です)。

<IF COND="IsVariable.ct!=true">
<THEN>
<SETVAR NAME="ct" VALUE="Full"/>
</THEN>
</IF>

続いて、PlainListによって、コレクション・アセット内のすべての子記事のリストが作成され、ランクに基づいて一覧表示され、theArticlesという名前が付けられます。

<ASSET.CHILDREN NAME="PlainListCollection" LIST="theArticles" OBJECTTYPE="Article" ORDER="nrank" CODE=-/>

このASSET.CHILDRENタグでは、OBJECTTYPEパラメータが使用されていることに注意してください。このタグでOBJECTTYPEパラメータを使用する場合、結果として得られる子のリストは、AssetRelationTreeおよび指定したタイプのアセット表(この場合は、Article表),間の結合となり、リストには両方の表からのデータが含まれます。

これで、後続のASSET.LOADタグが不要になります。なぜなら、これらの記事へのリンクを作成するためにPlainListエレメントによって使用されるデータが、Article表に格納されているためです。

PlainListによって、この記事のリストがループされ、RENDER.GETPAGEURLタグを使用して記事ごとにURLが作成されます。この場合(コードでは、子アセットごとに後続のASSET.LOADタグが使用されないため)、このエレメントでは次のようにRENDER.LOGDEPタグがループ内に含まれます。

<LOOP LIST="theArticles">
<RENDER.LOGDEP cid="theArticles.id" c="Article"/>
<RENDER.GETPAGEURL PAGENAME="FiscalNews/Article/
Variables.ct"
cid="theArticles.id"
c="Article"
p="Variables.p"
OUTSTR="referURL"/>

PlainListによって、RENDER.GETPAGEURLタグに対して、コレクション内の記事ごとにcidpagenameが渡され、ctypeを使用してアセット・タイプが渡されます。ct変数がFullに設定されたため、このタグに渡されるページ名は、実際にはFiscalNews/Article/Fullになります。

RENDER.GETPAGEURLタグによって、OUTSTRパラメータで指定されたとおり、コレクション内の記事ごとにreferURL変数が返されます。次に、PlainListによって、referURL変数の値が使用され、<A HREF>というHTMLリンクが記事ごとに作成されます。

このコレクションを取得したASSET.CHILDRENタグによって、AssetRelationTreeおよびArticle表間の結合が作成されたため、PlainListでは、次のように記事のサブヘッドライン・フィールドを使用してリンクを作成できます。

<A class="wirelink" HREF="Variables.referURL"
 REPLACEALL="Variables.referURL">
<csvar NAME="Variables.theArticles:subheadline"/>
</A>
</LOOP>

REPLACEALLタグが、このHTMLタグの属性として使用されていることに注意してください。HTMLタグ内でXML変数を使用する場合は、このタグをHTML属性として使用する必要があります。Oracle Fusion Middleware Oracle WebCenter Sitesリファレンス・タグ・リファレンスを参照してください。

22.3 ct変数の使用

場合によっては、アセットのデフォルトのテンプレートではないテンプレートを使用する必要があります。そのような場合は、ct変数を使用して代替テンプレートの名前を指定します。

アセットの作成時にアセットにテンプレートが割り当てられるため、アセットのテンプレート(デフォルトの承認テンプレートとは異なる)のIDは、ASSET.LOADタグまたはASSET.CHILDRENタグを使用して取得する情報の一部になります。ct変数は、子テンプレートまたは代替テンプレートで使用されます。たとえば、訪問者がFiscal Newsサイトを閲覧する場合、その訪問者が利用できるサイトの大半にはテキスト専用バージョンが用意されています。テキスト専用フォーマットはデフォルトのフォーマットではなく、コンテンツ・プロバイダがテキスト専用フォーマットを各自のアセットに割り当てることはありません。Fiscal Newsページ・エレメントは、代替のテキスト専用テンプレートのIDを適宜提供するようにコーディングされています。

サイト上のすべてのページで、同じエレメント(TextOnlyLinkエレメント)を使用して、そのページのプレーン・テキスト・リンクに埋め込まれたURLが確認されます。TextOnlyLinkエレメントによって、ページごとに正しいURLが返されます(これは、各ページ上のプレーン・テキスト・リンクからTextOnlyエレメントに対して、次のような必要な情報が渡されるためです)。

  • リクエスト元のページのID

  • プレーン・テキスト・リンク用の代替のテキスト専用テンプレート(子テンプレート)。

この例で使用されるエレメントは次のとおりです。

  • ElementCatalog/FiscalNews/Page/SectionFront

  • ElementCatalog/FiscalNews/Page/SectionFrontText

  • ElementCatalog/FiscalNews/Common/TextOnlyLink

  • ElementCatalog/FiscalNews/Page/ColumnistFront

ページをプレーン・テキストとして表示するには、ct変数を使用して代替テンプレートを指定する方法について説明した次のトピックを参照してください。

22.3.1 SectionFrontエレメント

Fiscal NewsサイトのSectionFrontエレメントを次に示します。

ElementCatalog/FiscalNews/Page/SectionFront.

SectionFrontは、ニュース、通貨、株式など、サイト上の標準のセクション・ページに割り当てられるTemplateアセットのTemplateエレメント(ルート・エレメント)です。

このエレメントにはCALLELEMENTタグが含まれます。

<CALLELEMENT NAME="FiscalNews/Common/TextOnlyLink">
<ARGUMENT NAME="ct" VALUE="SectionFrontText"/>
<ARGUMENT NAME="assettype" VALUE="Page"/>
</CALLELEMENT>

TextOnlyLinkは、プレーン・テキスト・リンクを作成するためのエレメントです。SectionFrontによって、このエレメントに対して、代替テンプレートの名前(ct=SectionFrontText)およびアセット・タイプの名前(assettype=Page)が渡されます。

22.3.2 TextOnlyLinkエレメント

TextOnlyLinkエレメントを次に示します。

ElementCatalog/FiscalNews/Common/TextOnlyLink

TextOnlyLinkが実行されると、ctの値があるかどうかがチェックされます。

<IF COND="IsVariable.ct!=true">
<THEN>
<SETVAR NAME="ct" VALUE="Variables.asset:templateText"/>
</THEN>
</IF>

この例では、SectionFrontエレメントによってct=SectionFrontTextが渡されたため、ctの値が存在します。

次に、TextOnlyLinkによって、RENDER.GETPAGEURLタグを使用してプレーン・テキスト・リンクのURLが取得され、SectionFrontからTextOnlyLinkに渡された変数に基づいて連結することでページ名が渡されます。

<RENDER.GETPAGEURL PAGENAME="FiscalNews/Variables.assettype/Variables.ct"
cid="Variables.asset:id"
c="Variables.assettype"
p="Variables.p"
OUTSTR="referURL"/>

TextOnlyLinkでは、ct=SectionFrontTextassettype=Pageであることを認識しています。そのため、FiscalNews/Variables.assettype/Variables.ctは、FiscalNews/Page/SectionFrontTextを意味します。

TextOnlyLinkには、(OUTSTRパラメータで指定されたreferURL変数内に) URLがあるため、次のように<A HREF>というHTMLタグを使用してプレーン・テキスト・リンクを作成できます。

<A class="contentlink" HREF="Variables.referURL"
REPLACEALL="Variables.referURL">
<img src="/futuretense_cs/bf/images/TextOnly.gif" width="22"
height="14" border="0" HSPACE="3"/>Plain Text</A><BR/>

REPLACEALLタグが、このHTMLタグの属性として使用されていることに注意してください。HTMLタグ内でXML変数を使用する場合は、このタグをHTML属性として使用する必要があります。Oracle Fusion Middleware Oracle WebCenter Sitesリファレンス・タグ・リファレンスを参照してください。

続いて、TextOnlyLinkによって、ct変数が消去されます。

<REMOVEVAR NAME="ct"/>

訪問者がプレーン・テキスト・リンクをクリックすると、SectionFrontTextエレメントによって記事が書式設定され、ブラウザに表示されます。

22.3.3 ColumnistFront

ColumnistFrontエレメントを次に示します。

ElementCatalog/FiscalNews/Page/ColumnistFront 

このエレメントによって、Fiscal Newsのコラムニストから提供されたストーリーを表示するWebフォーマット・ページが書式設定されます。

セクション・ページの右上隅にプレーン・テキスト・リンクを作成するために、ColumnistFrontによって、次のようにTextOnlyLinkがコールされます。

<CALLELEMENT NAME="FiscalNews/Common/TextOnlyLink">
<ARGUMENT NAME="ct" VALUE="ColumnistFrontText"/>
<ARGUMENT NAME="assettype" VALUE="Page"/>
</CALLELEMENT>

ここで、TextOnlyLinkによって、ColumnistFrontから渡された情報に基づいて、訪問者をFiscalNews/Page/ColumnistFrontTextに誘導するプレーン・テキスト・リンクが作成されます。

22.4 問合せアセットのテンプレートのコーディング

任意のアセットを表示するには、標準のWebCenter SitesエレメントであるExecuteQueryを使用して、問合せアセットを実行します。

Fiscal Newsでは、いくつかの問合せアセットが使用されています。次の図に、ホーム・ページにワイヤー・フィード・ストーリーを一覧表示するために使用されている、Home Wire Feedという名前の問合せアセットを示します。

図22-3 ワイヤー・フィード・ストーリーを一覧表示する問合せアセット

図22-3の説明が続きます
「図22-3 ワイヤー・フィード・ストーリーを一覧表示する問合せアセット」の説明

この例で使用されるエレメントは次のとおりです。

  • ElementCatalog/FiscalNews/Page/Home

  • ElementCatalog/FiscalNews/Query/WireFeedBox

  • ElementCatalog/OpenMarket/Xcelerate/AssetType/Query/ExecuteQuery

問合せアセットのテンプレートのコーディングについては、次のトピックを参照してください。

22.4.1 Homeエレメント

HomeページのTemplateエレメントを次に示します。

ElementCatalog/FiscalNews/Page/Home

実行されると、まず、Homeによって、次のようにHomeページ・アセットがロードされ、そのアセットにHomePageという名前が付けられて、そのアセットのフィールドに情報が分散されます。

<ASSET.LOAD TYPE="Variables.c" OBJECTID="Variables.cid" NAME="HomePage"/>
<ASSET.SCATTER NAME="HomePage" PREFIX="asset"/>

cおよびcidの値がFiscal NewsのURLから渡されます。

いくつかのCALLELEMENTタグおよびRENDER.SATELLITEPAGEタグを過ぎて、次のASSET.CHILDRENタグがHomeに含まれます。

<ASSET.CHILDREN NAME="HomePage" LIST="WireFeedStories"
CODE="WireFeed"/>

このコード行では、OBJECTTYPEパラメータが使用されていないことに注意してください。WebCenter Sitesでは、CODE=WireFeedは、WireFeedアソシエーションを使用してHomePageアセットに割り当てられた問合せを検索して取得するうえで十分な情報であり、Homeでは問合せのIDのみが必要なので、AssetRelationTreeおよびQuery表間に結合を作成する必要がありません。WireFeed問合せは取得され、WireFeedStoriesとして格納されます。

次に、Homeによって、次のようにWireFeedBox Templateのページ・エントリがコールされ、それに対してWireFeedStoriesとして格納された問合せのcidが渡されます。

<RENDER.SATELLITEPAGE PAGENAME="FiscalNews/Query/WireFeedBox"
ARGS_cid="WireFeedStories.oid"
ARGS_p=Variables.asset:id/>

Homeによって、いくつかの情報(cid=WireFeedStories.oid文を使用した問合せのIDと、p=Variables.asset:id文を使用した元のページ・アセット(Home)のID)が渡されます。

22.4.2 WireFeedBoxエレメント

WireFeedBoxページ・エントリによって、そのルート・エレメント(WireFeedBoxテンプレートのテンプレート・エレメント)が呼び出されます。

ElementCatalog/FiscalNews/Query/WireFeedBox

このエレメントによって、ExecuteQueryエレメントが呼び出されて問合せが実行され、問合せによって返された記事アセットへのリンクのリストが表示されます。

まず、WireFeedBoxによって、次のようにHomeから渡された問合せアセットがロードされ、それに対してWireFeedBoxQueryという名前が付けられて、ASSET.SCATTER文を使用してそのすべてのフィールドから値が取得されます。

<ASSET.LOAD TYPE="Variables.c" OBJECTID="Variables.cid" NAME="WireFeedBoxQuery"/>
<ASSET.SCATTER NAME="WireFeedBox" PREFIX="asset"/>

Variables.cidは、Homeエレメントから渡されたWireFeedStories.oidです。

次に、WireFeedBoxによって、ExecuteQueryエレメントがコールされます。

<CALLELEMENT NAME="OpenMarket/Xcelerate/AssetType/Query/ExecuteQuery">
<ARGUMENT NAME="list" VALUE="ArticlesFromWireQuery"/>
<ARGUMENT NAME="assetname" VALUE="WireFeedBoxQuery"/>
<ARGUMENT NAME="ResultLimit" VALUE="8"/>
</CALLELEMENT>

WireFeedBoxによって、問合せアセット、問合せの結果を保持するために作成するリストの名前、および制限を示す8が渡されます(この数字は、問合せからExecuteQueryエレメントにどれほど多くのアセットが返されても、そのうちの8個のみがExecuteQueryからWireFeedBoxに返されるようにするためです)。

22.4.3 ExecuteQueryエレメント

ExecuteQueryエレメントによって、問合せアセットが実行されます。

ElementCatalog/OpenMarket/Xcelerate/AssetType/Query/ExecuteQuery

ページ・アセットにそのページのWire Feedとして割り当てることが可能な問合せアセットは、アセットのIDのみでなく、フィールド・データも返すようにコーディングされています。そのため、ExecuteQueryによって、WireFeedBoxに対して、最大8個の記事アセットとそれらのフィールドのいくつかからのデータが返されます。

このエレメントの最初のコード行はRENDER.UNKNOWNDEPSですが、これは、どのアセットが返されるかを知る方法がないので、それらの依存性を記録する方法がないためです。

ExecuteQueryが終了すると、WireFeedBoxが再開されます。

22.4.4 WireFeedBoxの再開

WireFeedBoxが再開され、ExecuteQueryから返された記事のリストがループされ、RENDER.GETPAGEURLタグを使用して記事ごとにURLが取得されます。

ExecuteQueryからどの記事アセットが返されるかを知る方法がないため、次のように、パブリッシュ方法がディスクへのエクスポートである場合には、非承認アセットをフィルタで除外するように、ループ内にRENDER.FILTERタグが含められます。

<RENDER.FILTER LIST="ArticlesFromWireQuery" LISTVARNAME="ArticlesFromWireQuery" LISTIDCOL="id"/>
<if COND="ArticlesFromWireQuery.#numRows!=0">
<then>
<LOOP LIST="ArticlesFromWireQuery">
<RENDER.GETPAGEURL PAGENAME="FiscalNews/Article/WireStory"
cid="ArticlesFromWireQuery.id"
c="Article"
p="Variables.p"
OUTSTR="referURL"/>
<A class="wirelink" HREF="Variables.referURL" REPLACEALL="Variables.referURL"><csvar NAME="ArticlesFromWireQuery.subheadline"/></A><P/>
</LOOP>
</then>
</if>

RENDER.GETPAGEURLタグによって、referURLという名前の変数でリスト内の記事ごとのURLが返されます。WireFeedBoxによって、referURL変数からの値を使用して記事へのリンクが作成されます。これには、サブヘッドライン・フィールド(Wire Feed問合せから返されたフィールドの1つ)のコンテンツが、ハイパーリンク化されたテキストとして使用されます。

REPLACEALLタグが、このHTMLタグの属性として使用されていることに注意してください。HTMLタグ内でXML変数を使用する場合は、このタグをHTML属性として使用する必要があります。Oracle Fusion Middleware Oracle WebCenter Sitesリファレンス・タグ・リファレンスを参照してください。

22.5 テンプレートを使用しない記事アセットの表示

FullAltVersionBlockEmailFrontの各エレメントを使用すると、テンプレートなしで記事アセットを表示できます。

次の図に、この記事を友人に電子メールで送信する機能が用意されているFiscal Newsから提供された記事からの電子メール・フォームの例を示します。

図22-4 電子メール・フォーム

図22-4の説明が続きます
「図22-4 電子メール・フォーム」の説明

明らかに、Fiscal News開発者は、Fiscal Newsのコンテンツ・プロバイダが記事のDisplay Style (Template)として電子メール・フォームを記事に割り当てることを望んでいません。そのため、記事の電子メール・フォームを作成するための電子メール・エレメントをポイントするTemplateアセットは用意されていません。

この例で使用されるエレメントは次のとおりです。

  • ElementCatalog/FiscalNews/Article/Full

  • ElementCatalog/FiscalNews/Article/AltVersionBlock

  • ElementCatalog/FiscalNews/Util/EmailFront

テンプレートなしで記事アセットを表示する方法について説明した次のトピックを参照してください。

22.5.1 Fullエレメント

記事のFull Templateを次に示します。

ElementCatalog/FiscalNews/Article/Full

このエレメントによって、記事の全文が表示される場合に記事の書式設定コードが提供されます。これによって、次のようなアイテムが表示されます。

  • サイトのバナー

  • 左側のナビゲーション列

  • 一連の関連ストーリー

  • 記事のテキスト

  • 記事の写真

  • そのストーリーの印刷用リンク

  • そのストーリーの電子メール送信用リンク

いくつかのRENDER.SATELLITEPAGEタグおよびCALLELEMENTタグを過ぎて、次のエレメントがFULLに含まれます。

<CALLELEMENT NAME="FiscalNews/Article/AltVersionBlock"/>

22.5.2 AltVersionBlockエレメント

この例では、記事の印刷バージョンまたは電子メール・バージョンのURLを取得できるAltVersionBlockエレメントを示します。

ElementCatalog/FiscalNews/Article/AltVersionBlock

AltVersionBlockは、2つのRENDER.GETPAGEURLタグで構成される短いエレメントです。最初のRENDER.GETPAGEURLタグによって、記事の印刷バージョンのURLが取得されます。2番目のRENDER.GETPAGEURLタグによって、ストーリーの電子メール・バージョンのURLが取得されます。

Fiscal Newsl開発者は、サイトが静的サイトであっても、ストーリーの電子メール・バージョンには動的URLを望んでいることから、2番目のRENDER.GETPAGEURLタグでDYNAMICパラメータが使用されています。

2番目のRENDER.GETPAGEURLタグには、次のコードが含まれます。

<RENDER.GETPAGEURL PAGENAME="FiscalNews/Util/EmailFront" 
cid="Variables.asset:id" 
c="Article"
DYNAMIC="true"
OUTSTR="referURL"/>

AltVersionBlockによって、EmailFrontページ・エントリのpagenamecの値、およびcidが渡され、DYNAMICパラメータがtrueに設定されます。このタグによって、(パブリッシュ方法がディスクへのエクスポートである場合でも)記事の動的URLが作成され、OUTSTRパラメータで指定されたとおり、referURLという名前の変数でそのURLが返されます。

22.5.3 EmailFrontエレメント

次の例では、EmailFrontは、AltVersionBlockからRENDER.GETPAGEURLエレメントに渡されるページ名です。EmailFrontには対応するテンプレートがないため、WebCenter Sitesでは、デフォルトでEmailFrontSiteCatalog内にページ・エントリが作成されません。Fiscal News開発者は、このエレメントのSiteCatalogエントリをOracle WebCenter Sites Explorerから手動で作成しました。

ElementCatalog/FiscalNews/Util/EmailFront

このエレメントによって、訪問者が電子メール送信対象として選択した記事の最初の段落を表示するフォームが作成されます。

まず、EmailFrontによって、次のように記事アセットがロードされます。

<ASSET.LOAD TYPE="Article" OBJECTID="Variables.cid" NAME="EmailFront"/>
<ASSET.SCATTER NAME="EmailFront" PREFIX="asset"/>

次に、電子メール・フォームが作成される前に、HTML FORMタグを使用して、ページのいくつかの部分が書式設定されます。

<FORM NAME="mailform" onSubmit="return checkEmail();" METHOD="POST" ACTION=...

続いて、EmailFrontによって、次のようにLeadSummaryページ・エントリがコールされて、フォーム内の記事のサマリーが表示されます。

<RENDER.SATELLITEPAGE 
ARGS_pagename="FiscalNews/Article/LeadSummary" 
ARGS_cid="Variables.cid"
ARGS_ct="Full"
ARGS_p="Variables.p"/>

LeadSummaryエレメントの詳細は、「ベーシック・モジュラ・デザインの作成」を参照してください。

22.6 サイト・ナビゲーション情報の表示

SitePlanTree表から情報を抽出するには、WebCenter SitesSITEPLANタグ・ファミリを使用します。SitePlanTree表から構造情報を抽出することで、Fiscal Newsホーム・ページの最上部にナビゲーション・バーが作成されます。

この例で使用されるエレメントは次のとおりです。

  • ElementCatalog/FiscalNews/Article/Home

  • ElementCatalog/Pagelet/Common/SiteBanner

  • ElementCatalog/FiscalNews/Site/TopSiteBar

サイト・ナビゲーション情報を表示する方法について説明した次のトピックを参照してください。

22.6.1 Homeエレメント

Oracle WebCenter Sites Explorerを使用し、Home Templateのテンプレート・エレメントを開いて調べることができます。

ElementCatalog/FiscalNews/Page/Home

このTemplateの最初のRENDER.SATELLITEPAGEタグが続きます。

<RENDER.SATELLITEPAGE PAGENAME="FiscalNews/Pagelet/Common/SiteBanner"/>

22.6.2 SiteBannerエレメント

この例のルート・エレメントを呼び出すSiteBannerページレットを次に示します。

ElementCatalog/FiscalNews/Common/SiteBanner

SiteBannerによって、バナーのイメージ(Fiscal Newsのロゴおよび広告イメージ)が収集され、サイトのメイン・セクションへのナビゲーション・リンクを作成するためのエレメントがコールされます。

SiteBannerエレメントにはCALLELEMENTタグが含まれます。

<CALLELEMENT NAME="Fiscal News/Site/TopSiteBar"/>

22.6.3 TopSiteBarエレメント

この例のTopSiteBarエレメントを次に示します。

ElementCatalog/FiscalNews/Site/TopSiteBar

TopSiteBarが実行され、Fiscal Newsサイトのメイン・セクションへのナビゲーション・リンクが作成されます。

次の各項では、サイト上のページのリンクの作成方法について説明します。

22.6.3.1 「Home」ページのリンクの作成

「Home」ページのリンクを作成するために、まず、TopSiteBarによって、次のように「Home」ページがロードされ、それに対してtargetという名前が付けられて、そのIDフィールドから値が取得され、その値が出力変数pageidに格納されます。

<ASSET.LOAD TYPE="Page" NAME="target" FIELD="name" VALUE="Home" DEPTYPE="exists"/>
<ASSET.GET NAME="target" FIELD="id" OUTPUT="pageid"/>

ASSET.LOADタグによって、DEPTYPEパラメータを使用して依存性タイプがデフォルトのexactからexistsに変更されることに注意してください。このようなリンク(ナビゲーション・バーのリンク)の場合、依存性がexists依存性である方が適しています。

続いて、TopSiteBarによって、次のようにpageidを使用してRENDER.GETPAGEURLから「Home」ページのURLが取得されます。

<RENDER.GETPAGEURL PAGENAME="FiscalNews/Page/Home"
cid="Variables.pageid"
c="Page"
OUTSTR="referURL"/

次に、TopSiteBarによって、次のようにページ・アセットの名前がそのNameフィールドから抽出され、それがハイパーリンクのテキストとして使用されます。

<ASSET.GET NAME="target" FIELD="name" OUTPUT="thepagename"/>
<A class="sectionlinks" HREF="Variables.referURL" REPLACEALL="Variables.referURL"><csvar NAME="Variables.thepagename"/></A>

REPLACEALLタグが、このHTMLタグの属性として使用されていることに注意してください。HTMLタグ内でXML変数を使用する場合は、このタグをHTML属性として使用する必要があります。HTMLタグの変数を参照してください。

22.6.3.2 「Home」ページの子ページへのリンクの作成

コードの次の部分では、TopSiteBarによって、Homeページの子ページへのリンクが作成されます。Homeページの子ページを特定するには、まず、TopSiteBarHomeページのノードIDを特定する必要があります。

ページ・アセットのノードIDは、そのオブジェクトIDとは次の点で異なります。

  • オブジェクトIDは、アセット表からアセットに関する情報を抽出するために使用します。

  • ノードIDは、SitePlanTree表からページ・アセットに関する情報を抽出するために使用します。

まず、TopSiteBarによって、次のようにHomeページのノードIDが特定されます。

<ASSET.GETSITENODE NAME="target" OUTPUT="PageNodeId"/>

続いて、次のように、その情報を使用してHomeページがsiteplanノード・オブジェクトとしてロードされます。

<SITEPLAN.LOAD NAME="ParentNode" NODEID="Variables.PageNodeId"/>

Homeページ・ノードが特定されてロードされると、TopSiteBarによって、次のようにHomeページの子ノードが取得でき、それらがPeerPagesという名前が付けられたリストに格納され、それぞれのランクに基づいて順序付けされます。

<SITEPLAN.CHILDREN NAME="ParentNode" TYPE="PAGE" LIST="PeerPages" CODE="Placed" ORDER="nrank"/>

ここで、TopSiteBarによって、次のように最上位レベルのすべての子ノードがループされ、RENDER.GETPAGEURLタグを使用して各ページへのリンクのURLが作成されます。

<IF COND="IsList.PeerPages=true">
<THEN>
<LOOP LIST="PeerPages">&nbsp;|&nbsp;
<ASSET.LOAD NAME="ThePage" TYPE="Page"
 OBJECTID="PeerPages.oid"/>
<ASSET.GET NAME="ThePage" FIELD="name" 
OUTPUT="thepagename"/>
<ASSET.GET NAME="ThePage" FIELD="template"
OUTPUT="pagetemplate"/>
<RENDER.GETPAGEURL PAGENAME="FiscalNews/Page/
Variables.pagetemplate"
cid="PeerPages.oid"
c="Page"
OUTSTR="referURL"/>
<A class="sectionlinks" HREF="Variables.referURL"
REPLACEALL="Variables.referURL">
<csvar NAME="Variables.thepagename"/>
</A>

この例でページ名がどのように構成されているかに注目してください。2番目のASSET.GET文によって、ページのTemplateの名前がそのtemplateフィールドから取得されます。

<ASSET.GET NAME="ThePage" FIELD="template"
OUTPUT="pagetemplate"/>

続いて、その情報が、RENDER.GETPAGEURLタグに渡されるPAGENAMEパラメータで次のように使用されます。

PAGENAME="FiscalNews/Page/Variables.pagetemplate"/>

したがって、ページ・アセットのテンプレートがSectionFrontの場合は、この引数文によってpagename=FiscalNews/Page/SectionFrontが渡されることになります。また、ページ・アセットのテンプレートがAboutUsの場合は、この引数文によってpagename=FiscalNews/Page/AboutUsが渡されることになります。

22.6.4 SiteBannerの再開

SiteBannerは、TopSiteBarへのコール後に終了します。SiteBannerエレメントが、サイト内の各ページで呼び出されます。

SiteBannerにはSiteCatalog表にページ・エントリがあるため、訪問者が初めてFiscal Newsサイト上でページを要求すると、TopSiteBarによって作成されるナビゲーション・バーの結果がキャッシュされます。これにより、サイトでは、訪問者がその後訪問するページごとにTopSiteBarエレメントを再度呼び出す必要がなくなるため、パフォーマンスの速度が向上します。

22.7 アセット以外の情報の表示

WebCenter Sitesには、WebCenter Sitesデータベースにアセットとして格納されない情報のレンダリングおよび表示に使用できるエレメントが含まれています。たとえば、Fiscal Newsサイトでは、各ページに今日の日付が表示されます。日付は、アセットとして格納できる情報ではありません。

エレメントは次のとおりです。

  • ElementCatalog/FiscalNews/Article/Home

  • ElementCatalog/Common/ShowMainDate

次の各項では、アセット以外の情報を表示する方法について説明します。

22.7.1 Homeエレメント

この例では、Home TemplateTemplateエレメントを次に示します。

ElementCatalog/FiscalNews/Page/Home

このエレメントの3番目のCALLELEMENTタグは、ShowMainDateエレメントを呼び出します。

<CALLELEMENT NAME=FiscalNews/Common/ShowMainDate/>

22.7.2 ShowMainDateエレメント

この例のShowMainDateエレメントを次に示します。

ElementCatalog/FiscalNews/Common/ShowMainDate

ShowMainDateが実行されます。メインのコード行は次のとおりです。

 <span class="dateline"><csvar NAME="CS.Day CS.Mon CS.DDate, CS.Year"/></span>

これによって日付が計算され、その値がHomeエレメントに返され、ページ上部(ナビゲーション・バーの下でストーリーのメイン・リストの上)に表示されます。

このエレメントによって、簡単な計算が実行され、ブラウザのウィンドウにレンダリングされるHTMLコードにその値が出力されます。これによって書式設定されるコンテンツ・アセットも、これをルート・エレメントとして使用するTemplateアセットもありません。また、このエレメントにはSiteCatalogエントリはありません(その結果(日付)が、「Home」ページがレンダリングされるたびに計算される必要があるため)。