Qu'est-ce que l'utilisation correcte de schema.org SiteNavigationElement?
En termes SEO...
Est-il préférable de mettre le système sur le parent contenant tous les liens?
<nav itemscope="itemscope" itemtype="http://www.schema.org/SiteNavigationElement">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
</nav>
...ou chaque lien doit être considéré comme son propre élément?
<nav>
<span itemscope="itemscope" itemtype="http://www.schema.org/SiteNavigationElement">
<a itemprop="url" href="#">
<span itemprop="name">Link 1</span>
</a>
</span>
<span itemscope="itemscope" itemtype="http://www.schema.org/SiteNavigationElement">
<a itemprop="url" href="#">
<span itemprop="name">Link 2</span>
</a>
</span>
<span itemscope="itemscope" itemtype="http://www.schema.org/SiteNavigationElement">
<a itemprop="url" href="#">
<span itemprop="name">Link 3</span>
</a>
</span>
</nav>
Vous devez vous connecter pour publier un commentaire.
Si
SiteNavigationElement
est destiné à l'ensemble de la navigation (c'est à dire, un lien de navigation de la liste), votre premier exemple est correct.Si
SiteNavigationElement
est conçu pour une navigation unique d'entrée (c'est à dire, un lien de navigation dans la liste de liens), votre deuxième exemple est correct.Je pense Schema.org ne pas définir sans ambiguïté que la variante est destinée, comme ils ne le disent:
Cependant, le type parent
WebPageElement
est défini comme:Aussi, tous les autres types enfants (comme
Table
ouWPFooter
) semble être utilisé pour l'ensemble de la chose, et non des parties spécifiques de la chose.Si cela semble suggérer que l'ensemble de la navigation devrait être marqué vers le haut, et non pas chaque seul lien:
Dans ce cas, tous les biens appartiennent à l'ensemble de la navigation, ce qui signifie que le
url
propriété de spécifier une URL pour ce de navigation (et pas l'Url des liens dans cette navigation!).WebPageElement
et de ses sous-types, comme laSiteNavigationElement
.<body id="app-layout" itemscope itemtype="http://schema.org/WebPage">
, Dois-je ajouteritemprop
à la navigation? et si oui ,quelle serait la valeur deitemprop
de navigation?SiteNavigationElement
élément, vous pouvez utiliser lehasPart
propriété:WebPage hasPart SiteNavigationElement
. Mais à moins d'avoir une raison particulière, je vous recommande de ne pas fournirSiteNavigationElement
à tous.SiteNavigationElement
?Selon Moteur De Recherche Des Terres, il est censé ressembler à ceci:
name
eturl
ambigu. Cela représente ce que la valeur réelle ou tout simplement une place de titulaire en montrant au spectateur des informations est censé apparaître.url
identifie l'URL etname
identifie le nom (c'est à dire le Lien 2). Donc non, ils ne sont pas des espaces réservés.url
etname
sont singleton propriétés deSiteNavigationElement
. Cette majoration a trois de chaque, ce qui les rend ambiguë. Qui seulname
eturl
devrait moteurs de recherche devraient utiliser?name
peut être déduit à partir du corps de laa
donc il n'y a pas besoin spécifiquement de la marquer. En outre, il n'est pas nécessaire d'utiliserli
dans la navigation mais il peut avoir certains avantages pour l'accessibilité de l'API. Aussinav
élément doit être utilisé pour l'emballage.li
mais c'est pas une mauvaise pratique. Et oui, il peut sans aucun doute être enveloppé dans unnav
; n'hésitez pas à modifier. Avez-vous sérieusement downvote basé sur ces opinions?Première réponse est correcte, mais je préfère mélanger les deux pour (HTML5)sémantique:
schema.org/SiteNavigationElement s'étend WebPageElement et peut être utilisé pour marquer les liens, ce qui arrivait souvent de faire de bons liens contextuels. Vous pouvez utiliser ce schéma pour votre menu de la page.
Envisager l'extrait de code suivant, adapté de la source de la page de habd.comme:
Lorsqu'il y a plusieurs navigations comme indiqué ci-dessus, l'utilisation de
SiteNavigationElement
à groupe éléments de navigation permet l'utilisation dename
tel que le groupement lui-même peut être étiquetés. Les étiquettes pour les éléments individuels au sein des groupes peuvent être obtenus en utilisant le contenu des liens eux-mêmes.
Donc, votre premier exemple est plus correct malgré les affirmations contraires.
OP question d'origine contient un bon exemple de code. aucune des réponses ne sont que ...
Il semble que tout le monde a jeté un peu aléatoire de réponse ... Vous pouvez tester votre schéma de microdonnées code à l'aide de la suite de officiel de google outil search.google.com/structured-data/testing-tool.
Si vous exécutez les réponses proposées dans cet outil, vous remarquerez qu'aucun de vous donner le résultat attendu: une liste de
SiteNavigationElement
avec un nom & urlCertains pourraient faire valoir qu'un menu entier pourrait être considéré comme un "élément de navigation", mais je pense que c'est plus logique pour cette dénomination pour désigner un seul lien de navigation. De Plus, si nous utilisons le
SiteNavigationElement
comme un marqueur pour le menu, nous n'avons aucun moyen d'associer des noms avec des Url dans le code html.Pour ce faire, vous devez avoir chaque lien est encapsulé par un
itemscope
bien et ils ont tous besoin de leur proprename
eturl
itemprop
(ce sont singleton, comme mentionné par @David Harkness, donc ils doivent apparaître qu'une seule fois paritemprop
)Le code ci-dessus va production de deux différents éléments de navigation, chacun avec un nom et une URL.
Remarque: le
itemprop="url"
attribut utilise l'ancrehref
attribut de la valeura
organes contiennent déjà les nœuds de texte, le nom de la valeur liquidative des liens. Je l'ai fait essayer et de regarder pour une Baidu outil, mais je ne suis pas compétent en Chinois. Je me sens comme ARIA va jouer un rôle dans tout cela dans l'avenir.Je pense que le plus elegent solution serait d'utiliser la hasPart propriété.
À l'aide de Google Structure De L'Outil De Test Des Données informe que ces liens sont une partie de la SiteNavigationElement et que Google devrait suivre les liens vers ces articles: