J'essaie de comprendre comment mettre en œuvre Schema.org correctement, et depuis le tout début, j'ai été confronté à des problèmes et je serais très heureux si vous le précisiez plus clairement.
Tout d’abord, la structure de base de la page principale:
<body>
<main>
<article>
<h2><a href="/title_1.html">Title #1</a></h2>
<img>
<p>Excerpt</p>
</article>
<article>
<h2><a href="/title_2.html">Title #2</a></h2>
<img>
<p>Excerpt</p>
</article>
<article>
<h2><a href="/title_3.html">Title #3</a></h2>
<img>
<p>Excerpt</p>
</article>
<footer>Pagination 1..2..3</footer>
</main>
<aside>
<div>banners and widgets</div>
</aside>
</body>
La page d’accueil est donc essentiellement un ensemble d’aperçus d’articles contenant des images, des titres et un paragraphe court + quelques éléments supplémentaires omis dans cet exemple.
Le problème, c’est que si j’ai bien compris, je ne devrais pas appliquer de schéma détaillé aux titres, images, extraits, mais je devrais simplement indiquer l’URL de l’emplacement de l’article complet, non? Alors j'ai fait quelque chose comme ça:
<body itemscope itemtype="https://schema.org/WebPage">
<main itemprop="mainEntity">
<article itemscope itemtype="https://schema.org/Article">
<link itemprop="mainEntityOfPage" href="/title_1.html">
<h2><a href="/title_1.html" itemprop="url">Title #1</a></h2>
<img>
<p>Excerpt</p>
</article>
<article itemscope itemtype="https://schema.org/Article">
<link itemprop="mainEntityOfPage" href="/title_2.html">
<h2><a href="/title_2.html" itemprop="url">Title #2</a></h2>
<img>
<p>Excerpt</p>
</article>
<article itemscope itemtype="https://schema.org/Article">
<link itemprop="mainEntityOfPage" href="/title_3.html">
<h2><a href="/title_3.html" itemprop="url">Title #3</a></h2>
<img>
<p>Excerpt</p>
</article>
<footer>Pagination 1..2..3</footer>
</main>
<aside>
<div>banners and widgets</div>
</aside>
</body>
L'outil de structure Google apparaît avec de nombreuses erreurs: auteur manquant, titre, image, date de publication, etc. Non seulement je n'ai pas cette information sur la page principale, mais si j'essaie de la définir manuellement via une méta-tag, je rencontre un problème. Le type "author" peut accepter le type "Person" ou "Organization", mais pas le texte, donc
<meta itemprop="author" content="Author Name">
ne sera pas correct. Je n'ai donc aucune idée de la manière de définir tous les champs requis par Google.
Vous ne pouvez pas utiliser la propriété mainEntity
comme ça. Il doit prendre un élément (avec itemscope
) en tant que valeur, mais vous lui donnez le contenu textContent de l'élément main
en tant que valeur. L'entité principale de votre page semble être une liste de teasers d'articles. Vous pouvez donc utiliser le type ItemList
:
<main itemprop="mainEntity" itemscope itemtype="http://schema.org/ItemList">
Pour ajouter chaque élément (c.-à-d. Chaque teaser d'article) à cette liste, vous devez fournir des propriétés supplémentaires (voir les propriétés de la page de type ItemList
).
Vous pouvez bien sûr également omettre la propriété mainEntity
.
Au lieu de fournir un élément link
pour la propriété mainEntityOfPage
, vous pouvez utiliser l'élément a
existant et lui attribuer les deux propriétés suivantes:
<a href="/title_1.html" itemprop="mainEntityOfPage url">Title #1</a>
Le problème, c’est que, si j’ai bien compris, je ne devrais pas appliquer de schéma détaillé aux titres, images, extraits, mais je devrais simplement indiquer l’URL de l’emplacement complet de l’article, non?
La meilleure pratique consiste à baliser le contenu que vous fournissez. Donc, si le teaser contient une image, vous pouvez utiliser la propriété appropriée, etc.
Fournir uniquement la propriété url
peut avoir un sens si vous tenez à la taille du fichier ou si vous devez modifier le balisage manuellement et si vous préférez devoir le mettre à jour à un seul endroit (c'est-à-dire la page de l'article proprement dit).
L'outil de structure Google apparaît avec de nombreuses erreurs
Ce ne sont pas des erreurs réelles. Ce ne sont que les propriétés requises pour l’un des résultats les plus riches de Google. Rien de grave ne se passe si vous ne les fournissez pas, sauf que vous n'obtiendrez pas un résultat riche pour cette page, bien sûr.
Notez que Google n’affiche pas leur résultat riche en articles pour les pages teaser, même si vous fournissez toutes les propriétés nécessaires.
Si vous souhaitez fournir l’auteur du teaser, mais que vous ne souhaitez pas afficher le nom de l’auteur (ce n’est pas une bonne pratique, mais une possibilité), le moyen le plus simple consiste à utiliser les éléments span
et meta
(masqués visuellement par défaut):
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="name" content="" />
</span>