ステージングされているサイト(例:サイトA)に、別のサイト(例:サイトB)で作成されたコンテンツが参照されている場合があります。
この記事では、 Site A に直接格納されていないコンテンツが、実際には Site Bに格納されており、 Site Aのコンテンツに Staging を使用していることについて説明します。
Site A のみを演出し、 Site Bを演出しない場合、これらの参照はどのように引き継がれるのでしょうか。 Liferay Portalは、Remote Staging、Local Staging、Export/Importに同じフレームワークを使用しているので、依存関係の問題で脆弱にならないようにする必要があります。 つまり、このような他のSiteを参照するようなSiteがあった場合、一貫してコンテンツをステージングできるように処理する必要があるのです。
ここでは、他のサイトのコンテンツを参照する場合のシナリオを例として説明します。
- デザートアイテム の単一ウェブコンテンツ記事が作成されます。
- レストラン の異なる複数のサイトが作成されます。
- ユーザーは、Webコンテンツ表示ポートレットを作成し、各サイトにコピーを作成する代わりに、 レストラン サイトの1つに作成された デザートアイテム のWebコンテンツ記事を参照したいと考えています。
Dessert Items article should just exist in ONE of these Restaurant Sites? 結局のところ、他の レストラン サイトに Web コンテンツ表示ポートレットを作成し、そのポートレットに他のサイトで作成した デザートアイテム のコンテンツを表示するようにスコープを設定すればよいのです。
解像度
サイト上でステージング を使用する予定がない場合、答えは「はい」です。先に進み、サイトの1つにウェブコンテンツ記事を作成し、各サイトにそのコピーを保存せずに他のサイトで記事を参照することができます。
ステージング( )を使用して、異なる環境にサイトを引き継ぐことを計画している場合、「デザートアイテム」を参照している各サイトをステージングすると、ステージング先の各サイトに「デザートアイテム」のコピーが作成されることに留意してください。 つまり、4つのサイト(「Dessert Items」コンテンツが保存されているサイトと、このコンテンツを参照している3つのサイト)がある場合、4つのサイトすべてをステージングすると、4つのライブサイト(またはインポート/ステージングされたコンテンツを受け取るサイト)はそれぞれ「Dessert Items」コンテンツのコピーを持つことになる。 もちろん、サイトの相互参照が多い場合は、その結果がパフォーマンスに悪影響を及ぼす可能性があります。 そのため、すべてのサーバーに存在する「グローバルサイト」を実装しています。 ただし、Liferay 6.1とLiferay 6.2では、Global Siteの使い方が少し異なります:
- Liferay Portal 6.1-発行処理を開始すると、Liferayはグローバルサイトに保存されているコンテンツがあるか、または発行先のサイトに存在するかを確認し、どちらのスコープでも見つからない場合は、対象のサイトにコンテンツを追加します。 つまり、先ほどの例では、「デザート商品」の記事は、各サイトで1回ずつ、計4回作成されることになります。 そのため、ステージング時に複数のサイトで同じコンテンツが重複しないように、グローバルサイトにコンテンツを保存し、他のサイトからその記事を参照する必要があります。 この方法では、Liferayはグローバルサイト上で記事を作成し、公開先のサイトではそのコンテンツのコピーを作成しません。
- Liferay Portal 6.2-プロセスは、コンテンツがグローバルサイトから参照されているかどうかもチェックしますが、リモートサーバーのグローバルサイトで参照された記事が見つからない場合は、ターゲットサイトにコンテンツを作成せず、代わりにプロセスが停止して参照不足のエラーメッセージを表示します。 この制限は、両環境で記事と参考文献が同じになるようにするために実施されました。 つまり、グローバルサイトにコンテンツを保存し、他のサイトから記事を参照して、同じコンテンツが重複しないようにする必要がありますが、これらのサイトを公開する前に、ステージングサーバーのグローバルサイトからリモートサーバーのグローバルサイトへコンテンツをエクスポート/インポートまたはステージングして、正常に公開する必要があります。
まとめると、スコープ外からコンテンツを参照したい場合で、関連するポートレットにステージングを使用している場合は、グローバルスコープにコンテンツを置き、Liferay 6.2の場合は、実際のサイトを公開する前にコンテンツをライブサーバーに移動させる必要があります。