web-dev-qa-db-fra.com

Comment implémenter "mainEntityOfPage" sur ce site spécifique?

Veuillez jeter un œil ici: https://developers.google.com/structured-data/testing-tool?url=https%253A%252F%252Fglamourina.net%252Fen%252F

Comment puis-je ajouter correctement mainEntityOfPage à ce site?

Dans l'exemple de documentation de Google, je vois quelque chose comme ceci:

<div itemscope itemtype="http://schema.org/NewsArticle">

  <meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid="https://google.com/article"/>

Mais il s'agit d'un blog à auteur unique. Et il comprend blogPosts.

<article itemscope itemtype="https://schema.org/BlogPosting" class="singlearticles">

Serait-ce bien si je le change comme ceci:

<article itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid="https://linktoarticle"/>

Je ne sais pas si je comprends bien l'utilisation de mainEntityOfPage. J'apprécierais si quelqu'un peut suggérer comment je peux faire pour ce cas/site Web spécifique. Pas de manière générique, car chaque site peut avoir un mainEntityOfPage différent, mais j'ai besoin de connaître et de comprendre la bonne implémentation pour ce site.

17
Pikk

À propos de l'exemple de microdonnées de Google

L'exemple de microdonnées de Google n'est pas valide. Si l'élément meta possède l'attribut itemprop, l'attribut content est requis ( détails ).

J'ai décrit différentes façons de spécifier mainEntityOfPage dans les microdonnées , le plus droit étant un élément link qui crée une valeur d'URL (au lieu d'un autre élément de microdonnées):

<link itemprop="mainEntityOfPage" href="http://example.com/article-1" />

mainEntity

Il est plus facile de comprendre l'utilisation de mainEntityOfPage si nous regardons d'abord sa propriété inverse, mainEntity .

Pour un WebPage qui contient un BlogPosting, nous pourrions avoir:

<body itemscope itemtype="http://schema.org/WebPage">
  <article itemprop="mainEntity" itemscope itemtype="http://schema.org/BlogPosting">
  </article>
</body>

Cela signifie: il y a un WebPage et un BlogPosting, et le BlogPosting est "l'entité principale" décrite dans ce WebPage. Pour indiquer cela, il est particulièrement judicieux s'il y a plus d'éléments impliqués, par exemple, un Person décrivant l'auteur, cinq autres BlogPosting éléments pour les articles connexes, un WebSite élément donnant des métadonnées , etc. Grâce à mainEntity/mainEntityOfPage, les consommateurs peuvent savoir quel est l'élément principal/principal de cette page (c'est-à-dire ce que représente la page).

mainEntityOfPage

L'exemple suivant avec mainEntityOfPage entraînerait des données structurées équivalentes comme l'exemple avec mainEntity ci-dessus:

<article itemscope itemtype="http://schema.org/BlogPosting">
  <div itemprop="mainEntityOfPage" itemscope itemtype="http://schema.org/WebPage">
  </div>
</article>

Comme vous pouvez le voir, l'élément pour l'élément BlogPosting contient l'élément pour l'élément WebPage. Il s'agit bien sûr d'un balisage assez inhabituel.

Mais la propriété mainEntityOfPage n'attend pas seulement un élément (CreativeWork) comme valeur, elle attend également une URL. Ainsi, au lieu de fournir explicitement un élément WebPage, vous pouvez fournir l'URL de la page à la place:

<article itemscope itemtype="http://schema.org/BlogPosting">
  <link itemprop="mainEntityOfPage" href="http://example.com/article-1" />
</article>

(C'est ce que Google attend, selon leur documentation pour le Articles Rich Snippet .)

Excursus: URL de la page par rapport au post

De nombreux sites ne font pas de distinction entre l'URL de la page Web et l'URL de l'article de blog. Pour ces sites, il peut sembler idiot de dire quelque chose comme

http://example.com/article-1 (the blog post)
is the 'mainEntityOfPage' 
http://example.com/article-1 (the web page) 
http://example.com/article-1 (the web page) 
has 'mainEntity' 
http://example.com/article-1 (the blog post)

Mais cela peut être utile de toute façon (par exemple, pour choisir quel élément est le principal, parce que les autres éléments n'auront pas cette déclaration; ou pour un nœud vide; etc.).

Cependant, certains sites se différencient (en particulier pour données liées ), ils peuvent donc indiquer quelque chose comme

http://example.com/article-1#this (the blog post)
is the 'mainEntityOfPage' 
http://example.com/article-1 (the web page) 
http://example.com/article-1 (the web page) 
has 'mainEntity' 
http://example.com/article-1#this (the blog post)

Ici, http://example.com/article-1#this représente la publication du blog et http://example.com/article-1 représente la page contenant des informations sur cette publication (ou le contenu de la publication elle-même). Un exemple plus clair serait une personne et une page sur cette personne; ou un bâtiment et une page sur ce bâtiment. Voir ma réponse pour un exemple pourquoi vous voudrez peut-être faire cela . (Mais, comme expliqué ci-dessus, vous n'avez pas à faire de différence; vous pouvez utiliser la même URL pour les deux.)

47
unor