SharePoint でのクロスサイト発行
SharePoint ではクロスサイト発行機能が導入されており、複数のサイト コレクション間でコンテンツを再利用することができます。 組み込みの検索機能を使用することで、発行のシナリオとアーキテクチャが有効になります。 初めて、SharePoint ファームを越えるサイトを設計でき、サイトがイントラネットおよびインターネット間の境界をまたぐことを可能にします。
重要
この機能は SharePoint Online では使用できません。 クロスサイト発行機能は、オンプレミスの展開でのみ使用できます。
複数の発行サイト コレクションをフィードする 1 つの認証サイト コレクション、異なるドメイン、発行検索エンジンによるクロール、検索エンジン最適化 (SEO) が最適化された、1 つのサイトを検討します。 クロスサイト発行により、コンテンツを展開することなく、このシナリオやその他の類似シナリオが可能になります。 クロスサイト発行は次のような一般的なシナリオを考慮して設計されています。
- 発行カタログとしての項目リストまたはページ ライブラリの共有
- 検索からのカタログの使用
- クロスサイト発行とバリエーション機能の結合して、共通認証サイト コレクションから認証多言語サイトを可能にする
カタログ
SharePoint で導入されたカタログには、発行サイトでの使用を検索するために共有されるリストまたはライブラリが含まれています。 カタログを使用すると、サイト コレクション間でコンテンツを発行できます。クロスサイト発行機能はカタログによって異なります。 カタログを使用して、サイト全体、イントラネット サイト、エクストラネット サイト、インターネット サイトの境界を越えてコンテンツを実際に再利用できます。 定義済み検索クエリについては、カタログは検索でフラグが設定されます。 SharePoint のコンテンツ検索 Web パーツを使用して、サイト コレクション間でカタログに格納されているコンテンツを表示できます。
クロスサイト発行を使用するタイミング
クロスサイト発行が効果的ではない、あるいは適切ではないケースがあります。 外部データ ソースがあり、それらに接続するかどうか、バリエーション、サイトの種類、検索データベースの実装、製品カタログの使用はすべて、そのケースの決定に影響を及ぼす要素です。 表 1 はこれらの設計の注意事項についての詳細情報を示します。
表 1. クロスサイト発行の設計の注意事項
設計の注意事項 | 説明 |
---|---|
ラグ タイム |
発行元がページを発行する時間とページがサイトに表示される時間が、ページを使用しているユーザーにとって長すぎる場合には、代わりにコンテンツを展開することが可能です。 |
検索データベースの実装 |
検索データベースを外部データ ソースに接続し、外部 (SharePoint 以外の) コネクタを使用する場合には、クロスサイト発行は使用できません。 ビジネス コネクティビティ サービス (BCS) を使用する場合は、クロスサイト発行を使用できます。 検索エンジンと共にクロスサイト発行を使用することに、意味がない場合があります。 計画中の検索データベースや、カスタム コードの実装もない状況では、クロスサイト発行を使用してソース サイトから直接インターネットに発行しないでください。 |
バリエーションの実装 |
ページ ライブラリ、ドキュメント ライブラリ、いくつかの言語で使用可能な一般のリストを作成する基本的なバリエーション サイトを実装するときに、クロスサイト発行が役に立ちます。 バリエーション サイトで管理ナビゲーションや構造化ナビゲーションの実装を選択する場合にも同じことが言えます。 クロスサイト発行は特定のアーキテクチャでのみ機能します。 たとえば、ソースの SPSite が他のバリエーション サイトやサイト コレクションからのデータを使用しない場合、クロスサイト発行を使用してバリエーションの SPSite からバリエーションが有効化された発行サイトへコンテンツを発行することができます。 |
カタログの実装 |
製品カタログをサイト アーキテクチャに実装し、カタログをどのように実装するかは、クロスサイト発行が最も効果的で適切な選択になるかどうかに影響します。 製品カタログを使用して多言語バリエーション サイトの設定をサポートし、それをインターネット サイトで公開している場合、クロスサイト発行を実装できます。 |
管理ナビゲーション |
クロスサイト発行は管理ナビゲーションと用語ストアのほとんどの実装で動作します。 実装の中には、ナビゲーション メタデータ転送が期待どおりに機能しないこともあります。 たとえば、あるバリエーション サイトがサイト バリエーションを動かすために他のバリエーション サイトのメタデータに依存しており、クロスサイト発行を使用して対象のサイトにコンテンツを発行する場合、ナビゲーション メタデータ転送は期待どおりに機能しないことがあります。 |
カタログの設定方法
カテゴリ ページおよびカタログ アイテム ページは、構造化されたカタログ コンテンツをサイト全体で同じように表示するために使用できるページ レイアウトです。 SharePoint を使用すると、SharePoint Server 以降のページ レイアウトを作成およびカスタマイズできます。 詳細については、「 SharePoint でカタログ ベースのサイトのページ レイアウトをカスタマイズする」を参照してください。
クロスサイト発行の API
SharePoint にはクロスサイト発行の実装をサポートするためにコードへ使用できるクラスが導入されています。 これらの API は .NET サーバー公開ライブラリで利用することができます。 これらの API を使用して、SharePoint がコンテンツの再利用のためにカタログとしてリストを共有する方法や、検索でカタログを使用する方法をカスタマイズします。 次のクラスのメンバーをカスタム コードで使用して、クロスサイト発行タスクをサポートします。
- PublishingCatalogUtility クラスを使用し、利用可能なカタログのリストの取得、カタログ情報とステータス情報の取得、カタログに接続できるリストとライブラリについての情報の取得、カタログ共有の開始と停止を行います。
/// Retrieve available catalogs.
public static List<CatalogConnectionSettings> GetPublishingCatalogs(SPSite site, int startRow, int numberOfRows, string filterText, out int totalNumberOfCatalogs)
///Get catalog information that is saved for a list.
public static bool GetCatalogConfiguration(SPList list, out CatalogShareSettings catalogSettings, out string selectedTaxonomyField)
///Stop sharing a list or library as a publishing catalog for cross-publishing content reuse.
public static void UnPublishCatalog(SPList list)
- CatalogCollectionManager クラスを使用し、検索で取得したカタログを使用します。 カタログが検索に使用する接続を把握し、その接続についての情報を取得します。 カタログの内部コレクションにカタログの追加または削除を行い、 Update メソッドが呼び出されたときに URL を書き換える設定がされた接続をキューに登録する操作をキューに入れます。
/// Add catalog or site source into the internal CatalogInfo collection, but the source is not persisted into the property bag.
public void AddCatalogConnection(CatalogConnectionSettings catalogInfo)
/// Queues an Add operation to add a connection configured to rewrite URLs. The connection is added to the store when the Update method is called.
public void AddCatalogConnection(CatalogConnectionSettings catalogInfo,
string[] orderedPropertiesForUrlRewrite,
string webUrl,
string catalogTaxonomyManagedProperty,
bool isManualRule)
/// Update existing catalog/site source in the internal CatalogInfo collection. Edits are not committed until the Update method is called.
public void UpdateCatalogConnection(CatalogConnectionSettings catalogInfo)
/// Remove a catalog or site source. Deletion is not committed until the Update method is called.
public void DeleteCatalogConnection(string catalogPath)
/// Determine whether a connection exists to this source from the site.
public bool Contains(string catalogPath)
/// Get the settings for a catalog connected to this site.
public CatalogConnectionSettings GetCatalogConnectionSettings(string catalogPath)