如何在sitecore中确定给定项目是否为开始项目?

时间:2014-07-30 13:00:05

标签: sitecore sitecore6 sitecore7

在配置文件中,我们为元素中的每个网站设置了开始项目(例如,startItem =" / Home")。我们也可以在代码中选择开始项目。但我要问的是如何确定任何选定的项目是否是开始项目?

至少我们可以选择开始项目并与给定项目进行比较,但我认为这不是优雅的代码

2 个答案:

答案 0 :(得分:5)

我们通常在SiteContext类上有一个扩展方法来获取Home Item:

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
}

答案 1 :(得分:3)

从我的头顶开始:

bool isStartItem = item.Paths.FullPath.Equals(
    Sitecore.Context.Site.StartPath, StringComparison.OrdinalIgnoreCase)

我支持可能有更清洁的解决方案,但这个有效且速度很快。

请记住,在一个网站的多站点解决方案中,您的商品可以是一个开始商品,而另一个网站优质商品则不必是一个开始商品。