Pergunta

No arquivo de configuração, definimos o item inicial para cada site no elemento (por exemplostartItem="/Home").E também podemos selecionar o item inicial no código.Mas o que estou perguntando é como determinar se qualquer item selecionado é um item inicial ou não?

Pelo menos podemos selecionar o item inicial e comparar com o item determinado, mas não é um código elegante, eu acho

Foi útil?

Solução

Normalmente temos um método de extensão na classe SiteContext para obter o Home Item:

public static class SiteExtensions
{
    public static Item GetHomeItem(this SiteContext site)
    {
        return Sitecore.Context.Database.GetItem(site.StartPath);
    }
}

Com isso você pode testar qualquer item (não apenas o item Contexto) para ver se é o item inicial.

Item home = Sitecore.Context.Site.GetHomeItem();

if (Sitecore.Context.Item.ID == home.ID) 
{
    // Context item is the home item
}

Outras dicas

Apenas do topo da minha cabeça:

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

Apoio que pode haver uma solução mais limpa, mas esta funciona e é rápida.

Lembre-se de que em soluções multisite para um site, seu item pode ser um item inicial, enquanto para outro site, um item sensato não precisa ser um item inicial.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top