指定された項目が開始されたかどうかをSitecoreで決定する方法
質問
設定ファイルでは、要素内の各ウェブサイトの開始項目を設定します(例:StartItem="/ Home")。また、コードの開始項目を選択できます。しかし、私が尋ねているのは、選択されたアイテムの場合は、任意の項目であるかどうか、あるいはそうでないかどうかを判断する方法です。
少なくともスタートアイテムを選択して、特定の項目と比較することができますが、それは私が考えるエレガントなコードではありません
解決
通常、Home Itemを取得するには、SiteContextクラスに拡張方法があります。
public static class SiteExtensions
{
public static Item GetHomeItem(this SiteContext site)
{
return Sitecore.Context.Database.GetItem(site.StartPath);
}
}
.
これを使用すると、それがホームアイテムであるかどうかを確認するために(コンテキストアイテムだけでなく)任意の項目をテストできます。
Item home = Sitecore.Context.Site.GetHomeItem();
if (Sitecore.Context.Item.ID == home.ID)
{
// Context item is the home item
}
. 他のヒント
私の頭の上から:
bool isStartItem = item.Paths.FullPath.Equals(
Sitecore.Context.Site.StartPath, StringComparison.OrdinalIgnoreCase)
.
私はクリーンなソリューションがあるかもしれませんが、これは機能し、速いです。
1つのサイトのマルチサイトソリューションでは、別のサイトの場合はSANE項目が開始項目である必要はありません。
所属していません StackOverflow