Vérifiez si les éléments existent dans le langage courant?
J'ai un Sitecore solution où il y a 3 langues différentes activé. En haut de la page, il y a un lien pour chaque langue. Lorsque vous cliquez sur ce lien, vous obtenez la page en cours, vous êtes debout sur, dans la langue sélectionnée.
Mais pas toutes les pages sont traduites dans toutes les langues. Donc, si je suis debout sur la page x en langue anglaise, et cette page est uniquement disponible en anglais et en allemand, mais pas Chinois, Chinois lien ne doit pas être montré.
Donc la question est - Comment puis-je vérifier si l'élément en cours a une version d'un langage spécifique?
Vous devez vous connecter pour publier un commentaire.
Pour voir si il y a une version de l'élément actuel, vous pouvez le faire:
Sitecore.Context.Item.Versions.Count > 0
[mise à jour pour le commentaire]
Je ne prétends pas que c'est le moyen le plus efficace pour déterminer si un élément a une version dans une langue, mais cela va fonctionner:
Vous pouvez récupérer une collection (
LanguageCollection
) de l'un des articles de contenu les langues (ie. les langues pour lesquelles l'élément a de contenu).Espère que cela aide 🙂
NB: Ajouter un commentaire mec.. s'il vous plaît ne pas juste faire des modifications à ma réponse. C'est le comble de l'impolitesse.
Edit: Corriger .. s'avère que la méthode ne prend pas en compte les versions de langue existant.---pour clarifier, ItemManager.GetContentLanguages ne vous donne pas la liste des langues sur un élément donné. Il donne la liste de toutes les langues que vous avez choisi d'inclure dans votre environnement. Sous le capot, il n'a que 2 choses (basé sur le code décompilé pour sitecore 7.2):
on ajoute à cela toutes les langues qui ne sont pas déjà ajouté par l'étape 1 en appelant élément.La base de données.DataManager.Source de données.GetLanguages(item.ID);Si vous avez le contexte des éléments dans une liste, utilisez une expression Linq:
Je suis confus quant à pourquoi.x.Version.Nombre ne serait pas la bonne syntaxe vs utilisation de x.Les Versions.Comptent, car le x.Versions inline-documentation indique qu'il renvoie toutes les versions linguistiques de l'article, ce qui signifie que x.Les Versions.Le comte doit retourner un nombre de toutes les versions dans toutes les langues, quand nous avons vraiment ne voulez voir que si l'élément a une version pour le contexte actuel de la langue.
Cela fonctionne comme un charme pour moi:
ont un oeil à ce poste pour une méthode qui renvoie une liste de langues, un élément de a versions: https://stackoverflow.com/a/31351810/551811
J'utilise la suite de la méthode d'extension sur l'Article. Cela suppose que vous avez un élément pour démarrer à partir du cours.
Si vous n'avez pas l'élément dans la mémoire vous pouvez changer ce "normal" de la méthode et de transmettre l'ID de l'élément en tant que second paramètre..
ne pas oublier de Secours option est parfois
serait mieux travailler