質問

設定ファイルでは、要素内の各ウェブサイトの開始項目を設定します(例: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項目が開始項目である必要はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top