Question

dans le fichier de configuration Nous définissons l'élément de démarrage de chaque site Web de l'élément (E.G. startItem="/ home").Et nous pouvons également sélectionner le point de démarrage dans le code.Mais ce que je demande, c'est comment déterminer pour tout élément sélectionné s'il s'agit d'un élément de démarrage ou non?

Au moins, nous pouvons sélectionner un élément de démarrage et comparer avec l'élément donné, mais ce n'est pas un code élégant, je pense

Était-ce utile?

La solution

Nous avons généralement une méthode d'extension sur la classe SITEContext pour obtenir l'article à la maison:

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

Avec cela, vous pouvez tester n'importe quel article (pas seulement l'élément de contexte) pour voir s'il s'agit de l'article à la maison.

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

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

Autres conseils

juste du haut de ma tête:

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

Je supporte qu'il peut y avoir une solution plus propre, mais celle-ci fonctionne et est rapide.

N'oubliez pas que dans les solutions multi-sites pour un site, votre article peut être un élément de démarrage pendant qu'un autre site Sane Sane ne doit pas nécessairement être un élément de démarrage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top