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

StackOverflow https://stackoverflow.com//questions/25037501

  •  21-12-2019
  •  | 
  •  

Вопрос

в файле конфигурации мы устанавливаем пункт начала для каждого веб-сайта в элементе (например, 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)
.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top