22 ベーシック・アセットのテンプレート・エレメント例
例をいくつか見ていくと、ベーシック・アセットのテンプレートのコーディングについて理解が深まります。このようなアセットには、コレクション、問合せおよび記事があります。また、これらの例を利用して、ベーシック・アセットのサイト・ナビゲーションを作成することもできます。
トピック:
これらのトピックの例では、「テンプレートおよびCSElementのエレメントのコーディング」で示した情報について説明します
ベーシック・モジュラ・デザインの作成
新規コードを記述することなく、ホーム・ページの領域を作成するにはどのようにしますか。モジュール式のサイト・デザインでは、一般的なエレメントを複数の場所またはコンテキストで再利用できます。
5つの別個のエレメントからホーム・ページの領域を作成します。サイトのホーム・ページの次の列には、その日のメイン・ストーリーが表示されます。リスト内のストーリーごとにサマリー段落と署名行があります。ストーリーのタイトルは、そのストーリー全文へのハイパーリンクです。リスト内の最初のストーリーを含むストーリーのいくつかには、次のように写真も表示されます。
この例では、リスト内の最初のストーリーの特定、選択、リスト先頭への配置、および書式設定の方法について説明します。
リスト内の最初のストーリーの書式設定に使用されるエレメントは次のとおりです。
-
FiscalNews/Page/Home
-
FiscalNews/Collection/MainStoryList
-
FiscalNews/Article/LeadSummary
-
FiscalNews/ImageFile/TeaserSummary
トピック:
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 Template
のSiteCatalog
ページ・エントリ内の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が渡されます。
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になります。これは、その記事がリスト内の最初の記事であるためです。
LeadSummaryエレメント
LeadSummary
ページ・エントリによって、そのルート・エレメント(LeadSummary Template
のTemplate
エレメント)が呼び出されます。
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>
TeaserSummaryエレメント
TeaserSummary
ページ・エントリによって、そのルート・エレメント(TeaserSummary Template
のTemplate
エレメント)が呼び出されます。
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
に続きます。
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> <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
に続きます。
MainStoryListの再開
次に、MainStoryList
によって、TopStories
コレクション内の残りの記事がループされ、それらの記事がSummary Template
を使用して書式設定されます。
ElementCatalog/Article/Summary
MainStoryList
が終了すると、Home
に続きます。
コレクション・アセット内の記事アセットへのリンクのコーディング
動的に提供されるWebCenter Sitesページへのハイパーリンクのリストを作成するために、エレメントでURLが必要な場合は、次の例に示すように、RENDER.GETPAGEURL
タグを使用して、コレクション・アセットの記事アセットのリンクをコーディングします。
この例で参照されているエレメントは、次のとおりです。
-
ElementCatalog/FiscalNews/Page/SectionFront
-
ElementCatalog/FiscalNews/Collection/PlainList
この例の目的上、リンクの作成方法に集中できるように、表示されるコードからすべてのエラー・チェックが削除されています。
次の各項では、リンクのコーディング方法について説明します。
SectionFrontエレメント
SectionFront
は、SectionFront Template
のTemplate
エレメント(ルート・エレメント)であり、ニュース、市場、株式などのメイン・セクション・ページに割り当てられます。
ElementCatalog/FiscalNews/Page/SectionFront.
SectionFront
エレメントによって書式設定されたページの1つのセクションには、次の図に示すように、そのページ・アセットに関連付けられたSectionHighlights
コレクションからの記事へのリンクのリストが表示されます。
訪問者がセクションのリンクをクリックすると、SectionFront
エレメントが呼び出されます。まず、SectionFront
によって、次のようにc
とcid
の各変数を使用してページ・アセットがロードおよび分散され、それに対して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
)が渡されます。
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
タグに対して、コレクション内の記事ごとにcid
とpagename
が渡され、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 WebCenter Sitesリファレンス・タグ・リファレンス』を参照してください。
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
変数を使用して代替テンプレートを指定する方法について説明した次のトピックを参照してください。
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
)が渡されます。
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=SectionFrontText
、assettype=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 WebCenter Sitesリファレンス・タグ・リファレンス』を参照してください。
続いて、TextOnlyLink
によって、ct
変数がクリアされます。
<REMOVEVAR NAME="ct"/>
訪問者がプレーン・テキスト・リンクをクリックすると、SectionFrontText
エレメントによって記事が書式設定され、ブラウザに表示されます。
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
に誘導するプレーン・テキスト・リンクが作成されます。
問合せアセットのテンプレートのコーディング
任意のアセットを表示するには、標準のWebCenter SitesエレメントであるExecuteQuery
を使用して、問合せアセットを実行します。
Fiscal Newsでは、いくつかの問合せアセットが使用されています。次の図に、ホーム・ページにワイヤー・フィード・ストーリーを一覧表示するために使用されている、Home Wire Feed
という名前の問合せアセットを示します。
この例で使用されるエレメントは次のとおりです。
-
ElementCatalog/FiscalNews/Page/Home
-
ElementCatalog/FiscalNews/Query/WireFeedBox
-
ElementCatalog/OpenMarket/Xcelerate/AssetType/Query/ExecuteQuery
問合せアセットのテンプレートのコーディングについては、次のトピックを参照してください。
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)が渡されます。
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
に返されるようにするためです)。
ExecuteQueryエレメント
ExecuteQuery
エレメントによって、問合せアセットが実行されます。
ElementCatalog/OpenMarket/Xcelerate/AssetType/Query/ExecuteQuery
ページ・アセットにそのページのWire Feedとして割り当てることが可能な問合せアセットは、アセットのIDのみでなく、フィールド・データも返すようにコーディングされています。そのため、ExecuteQuery
によって、WireFeedBox
に対して、最大8個の記事アセットとそれらのフィールドのいくつかからのデータが返されます。
このエレメントの最初のコード行はRENDER.UNKNOWNDEPS
ですが、これは、どのアセットが返されるかを知る方法がないので、それらの依存性を記録する方法がないためです。
ExecuteQuery
が終了すると、WireFeedBox
が再開されます。
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 WebCenter Sitesリファレンス・タグ・リファレンス』を参照してください。
テンプレートを使用しない記事アセットの表示
Full
、AltVersionBlock
、EmailFront
の各エレメントを使用すると、テンプレートなしで記事アセットを表示できます。
次の図に、この記事を友人に電子メールで送信する機能が用意されているFiscal Newsから提供された記事からの電子メール・フォームの例を示します。
明らかに、Fiscal News開発者は、Fiscal Newsのコンテンツ・プロバイダが記事のDisplay Style
(Template
)として電子メール・フォームを記事に割り当てることを望んでいません。そのため、記事の電子メール・フォームを作成するための電子メール・エレメントをポイントするTemplate
アセットは用意されていません。
この例で使用されるエレメントは次のとおりです。
-
ElementCatalog/FiscalNews/Article/Full
-
ElementCatalog/FiscalNews/Article/AltVersionBlock
-
ElementCatalog/FiscalNews/Util/EmailFront
テンプレートなしで記事アセットを表示する方法について説明した次のトピックを参照してください。
Fullエレメント
記事のFull Template
を次に示します。
ElementCatalog/FiscalNews/Article/Full
このエレメントによって、記事の全文が表示される場合に記事の書式設定コードが提供されます。これによって、次のようなアイテムが表示されます。
-
サイトのバナー
-
左側のナビゲーション列
-
一連の関連ストーリー
-
記事のテキスト
-
記事の写真
-
そのストーリーの印刷用リンク
-
そのストーリーの電子メール送信用リンク
いくつかのRENDER.SATELLITEPAGE
タグおよびCALLELEMENT
タグを過ぎて、次のエレメントがFULL
に含まれます。
<CALLELEMENT NAME="FiscalNews/Article/AltVersionBlock"/>
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
ページ・エントリのpagename
、c
の値、およびcid
が渡され、DYNAMIC
パラメータがtrue
に設定されます。このタグによって、(パブリッシュ方法がディスクへのエクスポートである場合でも)記事の動的URLが作成され、OUTSTR
パラメータで指定されたとおり、referURL
という名前の変数でそのURLが返されます。
EmailFrontエレメント
次の例では、EmailFront
は、AltVersionBlock
からRENDER.GETPAGEURL
エレメントに渡されるページ名です。EmailFront
には対応するテンプレートがないため、WebCenter Sitesでは、デフォルトでEmailFront
のSiteCatalog
内にページ・エントリが作成されません。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
エレメントの詳細は、「ベーシック・モジュラ・デザインの作成」を参照してください。
サイト・ナビゲーション情報の表示
SitePlanTree
表から情報を抽出するには、WebCenter SitesのSITEPLAN
タグ・ファミリを使用します。SitePlanTree
表から構造情報を抽出することで、Fiscal Newsホーム・ページの最上部にナビゲーション・バーが作成されます。
この例で使用されるエレメントは次のとおりです。
-
ElementCatalog/FiscalNews/Article/Home
-
ElementCatalog/Pagelet/Common/SiteBanner
-
ElementCatalog/FiscalNews/Site/TopSiteBar
サイト・ナビゲーション情報を表示する方法について説明した次のトピックを参照してください。
Homeエレメント
Oracle WebCenter Sites Explorerを使用し、Home Template
のテンプレート・エレメントを開いて調べることができます。
ElementCatalog/FiscalNews/Page/Home
このTemplate
の最初のRENDER.SATELLITEPAGE
タグが続きます。
<RENDER.SATELLITEPAGE PAGENAME="FiscalNews/Pagelet/Common/SiteBanner"/>
SiteBannerエレメント
この例のルート・エレメントを呼び出すSiteBanner
ページレットを次に示します。
ElementCatalog/FiscalNews/Common/SiteBanner
SiteBanner
によって、バナーのイメージ(Fiscal Newsのロゴおよび広告イメージ)が収集され、サイトのメイン・セクションへのナビゲーション・リンクを作成するためのエレメントがコールされます。
SiteBanner
エレメントにはCALLELEMENT
タグが含まれます。
<CALLELEMENT NAME="Fiscal News/Site/TopSiteBar"/>
TopSiteBarエレメント
この例のTopSiteBar
エレメントを次に示します。
ElementCatalog/FiscalNews/Site/TopSiteBar
TopSiteBar
が実行され、Fiscal Newsサイトのメイン・セクションへのナビゲーション・リンクが作成されます。
次の各項では、サイト上のページのリンクの作成方法について説明します。
「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タグの変数を参照してください。
「Home」ページの子ページへのリンクの作成
コードの次の部分では、TopSiteBar
によって、Home
ページの子ページへのリンクが作成されます。Home
ページの子ページを特定するには、まず、TopSiteBar
でHome
ページのノード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"> | <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
が渡されることになります。
アセット以外の情報の表示
WebCenter Sitesには、WebCenter Sitesデータベースにアセットとして格納されない情報のレンダリングおよび表示に使用できるエレメントが含まれています。たとえば、Fiscal Newsサイトでは、各ページに今日の日付が表示されます。日付は、アセットとして格納できる情報ではありません。
エレメントは次のとおりです。
-
ElementCatalog/FiscalNews/Article/Home
-
ElementCatalog/Common/ShowMainDate
次の各項では、アセット以外の情報を表示する方法について説明します。
Homeエレメント
この例では、Home Template
のTemplate
エレメントを次に示します。
ElementCatalog/FiscalNews/Page/Home
このエレメントの3番目のCALLELEMENT
タグは、ShowMainDate
エレメントを呼び出します。
<CALLELEMENT NAME=FiscalNews/Common/ShowMainDate/>
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
」ページがレンダリングされるたびに計算される必要があるため)。