Как определить в sitecore, является ли данный элемент стартовым?

В файле конфигурации мы устанавливаем начальный элемент для каждого веб-сайта в элементе (например, startItem="/Home"). И мы также можем выбрать начальный элемент в коде. Но я спрашиваю о том, как определить для любого выбранного элемента, является ли он начальным элементом или нет?

По крайней мере, мы можем выбрать начальный элемент и сравнить с данным элементом, но я думаю, что это не элегантный код.


person Dzianis Yafimau    schedule 30.07.2014    source источник


Ответы (2)


Обычно у нас есть метод расширения в классе 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
}
person Derek Dysart    schedule 30.07.2014
comment
Да, у нас тоже есть это. И это еще более элегантное решение, так что на данный момент вы в выигрыше ) - person Dzianis Yafimau; 30.07.2014
comment
@ddysart Возможно, вы захотите использовать site.StartItem вместо site.StartPath. - person Richard Hauer; 27.05.2016

Просто из головы:

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

Я поддерживаю, что может быть более чистое решение, но это работает и работает быстро.

Помните, что в мультисайтовых решениях для одного сайта ваш элемент может быть начальным элементом, а для другого сайта нормальный элемент не обязательно должен быть начальным элементом.

person Marek Musielak    schedule 30.07.2014
comment
Спасибо, я использовал то же решение. Возможно, это лучший. - person Dzianis Yafimau; 30.07.2014