Sitecore には、任意のコンテンツ アイテムにアクセスできるように複数のサイトURLを設定するエイリアス機能があります。エイリアスの詳細につきましては、Sitecoreドキュメントをご参照ください。
デフォルトでは、エイリアスの設定はSitecore XPのソリューションにおけるすべてのSitecoreのサイトの間で共有されています。ただし、場合によっては、サイト固有のエイリアスを設定する必要がある可能性があります。例:
- 一部のエイリアスが、特定のサイトでのみ動作するよう設定する必要がある。
- 複数のサイトで、異なるサイト固有のアイテムを指す同じ名称のエイリアスを持つ必要がある。
この記事では、エイリアス機能をカスタマイズしてサイト固有のエイリアスを作成する方法について記載します。
サイト固有のエイリアスを実装するには、下記の方法を実施します:
- 「httpRequestBegin」パイプラインのデフォルトの「AliasResolver」のプロセッサを、エイリアスを解決する際にコンテクスト サイトの名称を考慮するカスタムのプロセッサに置き換えます。下記のコード サンプルは、あくまでも参考としてご参照ください :
- /sitecore/system/Aliasesアイテム下に、サイト固有のエイリアスの対応が必要となる各サイトの名称を持つフォルダを作成します。例えば、アイテムの階層は次のようになります:
sitecore
--system
----aliases
------website
------website2
------website3
これにより、各サイトのフォルダに配置されたエイリアスが、該当するSitecoreサイトにのみ適用されるようになります。
- 該当するサイトのフォルダに手動でエイリアスのアイテムを作成します。または「プレゼンテーション」タブの「エイリアス」ダイアログボックスを使用することもできます。ただし、このダイアログボックスを使用する場合、実際のエイリアスの名称の前に必ず<websiteName>/のプレフィックスを追加してください。
- 全てのサイトと動作するグローバルなエイリアスを作成する必要がある場合、該当するエイリアスのアイテムを各サイトのフォルダに配置します。
備考:
- 上記のカスタマイズを実装すると、各サイトのフォルダに配置されたエイリアスしか解決されません。
- 「Linked Item」フィールドを使用して/sitecore/contentノード下のすべての子アイテムを選択できるようにするには、以下を実施します:
- /sitecore/templates/System/Aliasテンプレートに移動します。
- 「Linked Item」フィールドの「Source」値を/sitecore/contentに変更します。