|
プレースホルダとは JSP 内で定義された場所で、BEA 仮想コンテンツ リポジトリから動的に取得した Web コンテンツを一度に 1 つずつ表示します。1 つ以上のコンテンツ クエリがプレースホルダに登録されている場合、プレースホルダは定義されているクエリおよびロジックを使用して、実行するクエリおよび表示するコンテンツ項目を指定します。コンテンツ クエリがデータを返さず、他に登録されているクエリがある場合、プレースホルダはそのクエリを実行します。それぞれのクエリに優先度、つまり重みがあり、表示する具体的なコンテンツを指定します。
たとえば、ペット ショップに対するプレースホルダでは、ユーザが鳥の愛好家かどうかを判断するキャンペーン クエリを使用して、鳥に関する特別なオファーを表示することができます (図 7-1 を参照)。
プレースホルダを作成する際には、表示するコンテンツを選択し、プレースホルダのクエリを選択してから、プレースホルダそのものを作成します。
プレースホルダは、ドキュメントの MIME タイプ属性を使用してブラウザに必要な HTML タグを生成します。デフォルトでは、プレースホルダは次の MIME タイプについてのみ、適切な HTML タグを生成します。
コンテンツを表示する場合、プレースホルダはドキュメントの MIME タイプを参照して、特定のドキュメント タイプに必要となる HTML タグを生成します。たとえば、画像タイプ ドキュメントを表示する場合、広告プレースホルダは、画像の表示に必要な <img>
タグを生成する必要があります。デフォルトでは、広告プレースホルダはイメージやその他の種類のファイルを表示するための MIME タイプ (「プレースホルダ用コンテンツの選択」を参照) についてのみ、適切な HTML タグを生成します。
基本的な Java プログラミングに精通していれば、プレースホルダでその他の MIME タイプ用の HTML を生成できるようにするクラスを書くことも可能です。ビデオ クリップはその他の MIME タイプの一例です。
その他の MIME タイプをプレースフォルダに表示するには、次のタスクを実施する必要があります。
ブラウザが MIME タイプの表示に必要とする HTML を生成するには、Workshop for WebLogic を使用して、アプリケーション内に Java プロジェクトを作成し、その後 com.bea.p13n.ad.AdContentProvider
インタフェースを実装するその Java プロジェクト内に Java クラスを作成およびコンパイルします。このインタフェースの詳細については、Javadoc を参照してください。
クラスを CLASSPATH にあるディレクトリに保存した後は、WebLogic Portal にその存在を知らせる必要があります。これは手動または Administration Console で行うことができます。CLASSPATH にクラスを追加するには、方法 1 または方法 2 を選択します。
CLASSPATH に手動でクラスを追加するには、以下の手順を実行します。
META-INF\wps-config.xml
ファイルのバックアップを作成します。 wps-config.xml
ファイルを開き、<AdService>
要素を検索します。 <AdContentProvider
Name="MIME-type"
Provider="YourClass.class"
Properties="optional-properties-for-your-class"
>
</AdContentProvider>
AdContentProvider
要素に次の値を指定します。
CLASSPATH
環境変数で指定されるディレクトリより下の階層のファイルを保存した場合は、CLASSPATH
ディレクトリより 1 レベル下げたディレクトリから開始するファイルのパス名を含める必要があります。CLASSPATH
に <PORTAL_APP>/classes
を追加した場合、AVI ファイルをサポートするため、クラスを <PORTAL_APP>/classes/myclasses/MimeAvi.class
として保存します。 <AdContentProvider
Name="video/x-msvideo"
Provider="myclasses.MimeAvi"
Properties=""
>
</AdContentProvider>
wps-config.xml
ファイルに保存します。
CLASSPATH へのクラスの追加は、方法 2 の手順を使用しても行えます。
CLASSPATH に手動でクラスを追加する代わりに、コンテンツ プロバイダをアクティブ化すると、Administration Console を使用して以下の手順を実行できます。
com.bea.commerce.platform.ad.adContentProvider
インタフェースを実装する必要があります。
コンテンツをプレースホルダで使用する場合、コンテンツ項目に特定のプロパティを追加できます。「コンテンツの設定」を参照してください。
プレースホルダを作成する際には、次の 2 つの手順を実行します。
<ph:placeholder>
JSP タグを、関連するすべての JSP で使用する。Java クラスの詳細については、Javadoc を参照してください。
各 <ph:placeholder>
JSP タグに「name」属性を指定して、Workshop for WebLogic で作成したプレースホルダを参照する必要があります。
プレースホルダとは、BEA 仮想コンテンツ リポジトリから取得した 1 つの Web コンテンツを表示する JSP 内のあらかじめ決められた場所です。プレースホルダは、コンテンツの取得と表示にクエリを使用します。
デフォルトでは、プレースホルダでサポートしている MIME タイプは HTML、XML、プレーン テキスト、および画像です。プレースホルダでその他の MIME タイプを表示するには、「プレースホルダでのその他の MIME タイプの表示」を参照してください。
プレースホルダから返されるコンテンツは、ポートレットに表示されます。ユーザが、プレースホルダを含むポートレットまたはポータル デスクトップを参照すると、プレースホルダのルールおよびバックエンド ロジックがクエリを実行し、そのクエリに合致する 0 以上のコンテンツを取得し、返された項目の 1 つを表示します。取得されたコンテンツがなければ、何も表示されません。
プレースホルダのクエリは、2 つの異なった場所から実行されます。
プレースホルダには複数のクエリを含めることができるため、プレースホルダでは、ユーザがプレースホルダを含む JSP にアクセスするたびに異なったコンテンツを表示できます。以下の手順には、あるクエリの優先順位を設定して、プレースホルダ内にある他のクエリと比べてそのクエリが実行される機会を増やしたり減らしたりできる手順が含まれます。
プレースホルダはエンタープライズ アプリケーションを有効範囲としているため、プレースホルダはエンタープライズ アプリケーション内の任意の JSP に含めることができます。
注意 : | この章で示す手順は、[パッケージ・エクスプローラ] ビューの data\src フォルダに関係します。data ディレクトリおよび src ディレクトリは、名前が変更されている可能性があります。 |
data\src\placeholders
フォルダを右クリックし、[新規|その他] を選択します。ヒント : | メニューをカスタマイズして、[新規] メニューの選択肢として [コンテンツ プレースホルダ] を表示することができます。詳細については、『ポータル開発ガイド』を参照してください。 |
.pla
は、そのまま使用します。
この方法でプレースホルダに追加するクエリはすべて、デフォルトのクエリです (キャンペーン以外)。キャンペーンではこのプレースホルダにクエリを追加することができます。ただし、プレースホルダ自体にキャンペーン クエリを定義することはできません。キャンペーン クエリはキャンペーンで定義されます。
注意 : | [パレット] タブが表示されていない場合には、[リストの表示] をクリックして、非表示になっているその他のタブを確認します (図 7-3)。 |
注意 : | 選択するプロパティは、ユーザ プロファイル プロパティやセッション プロパティのようなプロパティ セット プロパティではなく、コンテンツ プロパティ (タイプ) です。 |
高
] にマークされているコンテンツを取得するようにクエリを設定できます。図 7-5 の例では、BEA Web サイトの adTargetUrl を取得するようにクエリが設定されます。<ph:placeholder>
タグを追加します。プレースホルダ ファイル名をプレースホルダ タグに追加し、JSP を実行して結果を確認する必要があります。 注意 : | プレースホルダの代わりに <ad:adTarget> JSP タグを使用して、タグ内のコンテンツ クエリをハードコード化できます。詳細については、「プレースホルダに代わる <ad:adTarget> の使用」を参照してください。 |
プレースホルダは、デフォルト クエリとキャンペーン クエリの 2 つのタイプのクエリを実行できます。
どちらのタイプのクエリも構造は同じですが、別の場所から実行されます。
プレースホルダを含むページをユーザがロードするたびに、プレースホルダはデフォルト クエリを 1 つ実行できます。たとえば、特定のシェルのヘッダに、プレースホルダを含む JSP ファイルを定義します。そのプレースホルダにデフォルト クエリが含まれている場合、ユーザがデスクトップを表示または更新するたびに、ヘッダに異なるコンテンツが表示されます。
キャンペーンがプレースホルダも対象としている場合には、プレースホルダを設定して、キャンペーンのコンテンツのみを表示したり、キャンペーン コンテンツとデフォルト クエリ コンテンツを統合したりできます。
ヒント : | プレースホルダにはコンテンツ項目が必ず表示されるので、プレースホルダにデフォルト クエリを設定することをお勧めします。 |
図 7-6 は、プレースホルダがデフォルト クエリまたはキャンペーン クエリから取得した画像をページ上のどこに表示するかを示しています。これは、クエリによって BEA の仮想コンテンツ リポジトリから取得された画像です。プレースホルダはさまざまな係数を使用して、実行するクエリを決定し、次に表示する取得済みのコンテンツ項目を決定します。
コンテンツ クエリを構築する場合には、Workshop for WebLogic で WebLogic Portal Expression 言語を使用できます。詳細なクエリ構築ウィンドウは、プレースホルダ、キャンペーン、およびコンテンツ セレクタのクエリを構築する際に、コンテンツに関連する JSP タグから利用できます。
複数のコンテンツ クエリがプレースホルダに登録されている場合、プレースホルダは定義されているクエリおよびロジックを使用して、実行するクエリおよび表示するコンテンツ項目を指定します。コンテンツ クエリがデータを返さず、他に登録されているクエリがある場合、プレースホルダはそのクエリを実行します。それぞれのクエリに優先度、つまり重みがあり、表示する具体的なコンテンツを指定します。
クエリには、<property> <comparator> <value>
の 3 つの部分が含まれます。
コンテンツでは、次の 2 つのタイプのプロパティが利用できます。クエリでは両方のプロパティを使用できます。
詳細および明示的なコンテンツ プロパティ一覧については、「条件式を使用するコンテンツ クエリの構築」を参照してください。
比較演算子は、クエリのプロパティと入力した値を比較するロジックを持っています。コンテンツ項目がクエリの条件と一致する場合には、そのコンテンツ項目が返されます。詳細については、「比較演算子の使用」を参照してください。
値は、クエリが返す必要のあるコンテンツを表します。クエリに値を指定することにより、コンテンツ項目に格納されている値に基づいて取得または無視するコンテンツをクエリに指示します。詳細については、「値の入力」を参照してください。
複数の独立したクエリ句を and (&&
) や or (||
) ロジックで結合し、代数式の評価順序を括弧で制御することができます。これにより、複雑なクエリを作成することができます。詳細およびサンプル クエリについては、『コンテンツ管理ガイド』を参照してください。
プレースホルダが表示するコンテンツを選択するときは 2 つの処理が行われます。この節では、次のタスクについて説明します。
プレースホルダにデフォルト クエリを追加するか、Workshop for WebLogic でキャンペーン クエリを作成した場合、各クエリに優先度 (highest
、high
、normal
、low
、または lowest
) を割り当てることができます。優先度が高いクエリほど、実行される可能性が他のクエリより高くなります。
クエリがドキュメントを検出しなかった場合、プレースホルダは別のクエリを選択して実行します。
キャンペーン クエリがある場合はデフォルト クエリを実行しないように定義することもできます。詳細については、「プレースホルダの変更」を参照してください。
クエリの対象範囲、およびコンテンツ管理システム内のドキュメントの数によっては、クエリが複数のコンテンツ項目を返す場合があります。デフォルトでは、プレースホルダは表示するコンテンツ項目をランダムに選択します。この選択を制御するために、adWeight というプロパティをコンテンツ項目に追加できます (「コンテンツの優先度の決定」を参照)。
コンテンツ項目に割り当てる adWeight の数値が大きいほど、そのコンテンツ項目がクエリで取得されたときにプレースホルダで表示される可能性が高くなります。
Workshop for WebLogicでプレースホルダ ファイルを作成した後で、以下のいずれかの方法を使用して、Workshop for WebLogic でプレースホルダを JSP に追加することができます。
include
文が自動的に追加されます。<ph:placeholder>
JSP タグ ([Portal Content Placeholder] カテゴリにある) を、開いている JSP にドラッグし、タグの「name」属性を手動で入力する。タグ ライブラリの include
文は自動的に追加されます。図 7-7 は、「foo
」というプレースホルダ ファイルと、そのプレースホルダ ファイルを参照する JSP タグを示しています。
プレースホルダを変更してパフォーマンスを向上させるには、「パフォーマンスを最適化するためのプレースホルダの管理」を参照してください。
JSP にコンテンツ項目を表示するには <ad:adTarget>
JSP タグを使用することもできます。このタグは、プレースホルダのように定義ファイルには依存しません。タグの query 属性を使用してクエリを追加するだけです。クエリは 1 つまたは複数のコンテンツ項目 (プレースホルダが表示できるコンテンツ項目と同じタイプ) を取得し、タグは <ph:placeholder>
タグと同じ方法で表示するコンテンツ項目を選択します。キャンペーンはクエリを <ad:adTarget>
タグに入れないため、タグはパーソナライズされたコンテンツを表示できません。また、<pz:contentQuery>
および <cm:search>
を使用して、ランタイム クエリを実行して表示可能なコンテンツを返すこともできます。
ヒント : | 1 つのコンテンツ項目を選んで、それ以降のリクエストで一致する項目を循環表示すると、バナースタイルのコンテンツを循環表示することができます。<ad:adTarget> JSP タグを使用できます。このタグは、表示するコンテンツを選択するために AdConflictResolver を使用します。各ノードの adWeight プロパティ (数値に変換されます) を、各ノードの相対的な重みとして取得し、次に、乱数を使用して使用するノードを選択します。重みが大きいほど、そのノードが表示される確率が高くなります。項目に adWeight プロパティがない場合、値は 1 であると見なされます。 |
<ad:adTarget>
JSP タグのクラスの詳細については、Javadoc を参照してください。
次のコード例は、循環バナースタイル コンテンツの設定手順を示しています。
<%@ taglib uri="http://www.bea.com/servers/portal/tags/ad" prefix="ad"%>
<ad:adTarget query=" color == userProperty('GeneralInfo', 'FavoriteColor') "/>