在Config文件中,我们为元素中的每个网站设置了开始项(例如StartItem=“/ home”)。我们还可以选择代码中的开始项目。但是我询问的是如何确定任何选定的项目是否是启动项目?

至少我们可以选择开始项目并与给定项目进行比较,但它不是我认为

的优雅代码

有帮助吗?

解决方案

我们通常在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)
.

我支持可能会有清洁的解决方案,但这是一个工作,快速。

记住,在一个站点的多站点解决方案中,您的项目可以是一个开始项目,而另一个站点Sane项目不必是一个开始项目。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top