Como determinar no sitecore se determinado item é item inicial?
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
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.