在配置文件中,我们为元素中的每个网站设置了开始项目(例如,startItem =" / Home")。我们也可以在代码中选择开始项目。但我要问的是如何确定任何选定的项目是否是开始项目?
至少我们可以选择开始项目并与给定项目进行比较,但我认为这不是优雅的代码
答案 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)
我支持可能有更清洁的解决方案,但这个有效且速度很快。
请记住,在一个网站的多站点解决方案中,您的商品可以是一个开始商品,而另一个网站优质商品则不必是一个开始商品。