J'ai expérimenté avec des microdonnées et j'ai pensé que je pourrais l'essayer sur mon blog. Il s'avère que le modèle que j'utilisais a déjà ajouté un balisage. Ce n'était pas génial et j'ai donc arrangé ce que je pouvais.
Pour essayer de pousser ma chance, j'ai ajouté plus de balisage à mon dernier article, mais l'outil de test de données structurées (SDTT) de Google n'est pas satisfait des itemprop='image'
attributs et je ne sais pas pourquoi.
C'est ma compréhension, en ignorant tout le code entre les deux, que j'ai structuré les données ainsi:
<div itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
<div itemprop='articleBody'>
<a href="1.png" itemprop="url"><img itemprop="image sharedContent" src="1.png" /></a>
<a href="2.png" itemprop="url"><img itemprop="image sharedContent" src="2.png" /></a>
<a href="3.png" itemprop="url"><img itemprop="image sharedContent" src="3.png" /></a>
</div>
</div>
Et cela me semble correct.
BlogPosting
peut avoir les propriétés articleBody
et image
selon https://schema.org/BlogPosting , mais selon le SDTT:
L'attribut itemtype a une valeur non valide.
En effet, je viens d'essayer le SDTT avec l'exemple de code ci-dessus et il ne parvient pas à valider.
Il me manque donc manifestement quelque chose. Qu'est-ce que je fais mal?
Réponses:
schema.org/BlogPosting image autorise ImageObject et URL, mais Google autorise uniquement ImageObject , d'où l'erreur. Le balisage prévu est:
Une autre différence est schema.org/ImageObject recommande
contentUrl
, mais Google recommandeurl
, d'où mon utilisation ci-dessus.En réponse au code de votre commentaire , votre structure est toujours incorrecte. Je vais le prendre ligne par ligne:
Point mineur, mais à moins que vous ne choisissiez XHTML,
itemscope='itemscope'
c'est faux. Utilisezitemscope
(comme vous l'avez fait plus tard).Votre ImageObject est un enfant de la propriété articleBody, mais vous ne l'avez pas associé de cette manière. Comme cela, vous avez un articleBody sans propriétés associées et un ImageObject non associé. Tu devrais utiliser
En outre,
/>
est incorrect, même si vous essayez pour XHTML car cet élément a des enfants et une fermeture</div>
. Utilisez simplement ce>
que j'ai inclus dans l'extrait ci-dessus.Que fait SharedContent ici? sharedContent attend un CreativeWork lorsqu'il est utilisé en tant que propriété de SocialMediaPosting - jamais en tant que propriété d'ImageObject et jamais sur un img.
Votre autre extrait de code qui place la propriété sharedContent comme ci-dessous est également incorrect.
Alors que sharedContent est maintenant au bon endroit, il doit toujours être un CreativeWork. Vos ImageObjects ne sont toujours pas associés à BlogPosting, comme le montre l'outil de test de données structurées.
Voici le code correct.
la source
ImageObject
échoue avecsharedContent
comme enfant: pastebin.com/cSgVZNyE . La suppression lesharedContent
rend heureux: pastebin.com/rieWwSM6 . Envelopper chacunimage
dans un parentsharedContent
( pastebin.com/AmpBDqJs ) se valide heureusement, mais est-ce parce que le STDD de Google l'ignore? Le DRTP est très heureux si l'contentURL
on utilise ainsi : pastebin.com/23wBvx8F . Il semble donc que je l'ai fait correctement et que Google l'a fait incorrectement? Ça doit être une première. 😉 Je suppose que je peux tous les apaiser en ajoutant toutes les balises pertinentes. Merci! 😀sharedContent
- j'ai mal utilisé tout ça. Je l'ai supprimé pour l'instant. Ayant un autre regard sur le schéma, je vois que je ne pense pas avoir besoin de l'utiliser dans un fichierCreativeWork
./>
Ignorez simplement le , il a été tapé à la hâte 😉, et le code original est XHTML. Je viens de mélanger les deux dans mon exemple (d'où les deux versions deitemscope
). Le code final est correct, honnête! 😁J'ai rencontré un problème similaire avec Google Structured Data Tester marquant mes images comme non valides. Apparemment, il n'accepte pas les images dont la source est un domaine localhost. Dès que j'ai déployé sur le serveur de transfert, le balisage structuré a réussi la validation.
la source