Perché il mio markup itemprop = 'image' non è corretto?


9

Ho sperimentato Microdata e ho pensato di provarlo sul mio blog. Si scopre che il modello che stavo usando ha già aggiunto un po 'di markup. Non è stato grandioso, quindi ho sistemato quello che potevo.

Per tentare la fortuna ho aggiunto più markup al mio ultimo post, ma lo Strumento di test dei dati strutturati (SDTT) di Google non è soddisfatto degli itemprop='image'attributi e non sono sicuro del perché.

Errori dello strumento di test strutturato

Pagina dei risultati .

È mia comprensione, ignorando tutto il codice in mezzo, che ho strutturato i dati in questo modo:

<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>

E questo mi sembra corretto. BlogPostingpuò avere le proprietà articleBodye imagesecondo https://schema.org/BlogPosting , ma secondo SDTT:

L'attributo tipo articolo ha un valore non valido.

In effetti, ho appena provato SDTT con il codice di esempio sopra riportato e non riesce a convalidare.

Codice di esempio nell'SDTT

Quindi mi manca ovviamente qualcosa. Che cosa sto facendo di sbagliato?


Alcuni dei collegamenti in queste domande sono stati rimossi in quanto non sono necessari per la risposta alla domanda.
John Conde

Perché i tag ampiamente utilizzati sono stati rimossi allora?
Ken Sharp,

Risposte:


15

immagine schema.org/BlogPosting consente ImageObject e URL, tuttavia Google consente solo ImageObject , quindi l'errore. Il markup previsto è:

<!-- my code -->
<div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
  <img src="image.jpg" itemprop="url">
</div>

               

Un'altra discrepanza è schema.org/ImageObject raccomanda contentUrl, ma Google consiglia url, quindi il mio utilizzo sopra.


In risposta al codice del tuo commento , la tua struttura è ancora errata. Lo prenderò riga per riga:

<!-- your code -->
<div itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>

Il punto minore, ma a meno che tu non stia per XHTML, itemscope='itemscope'è sbagliato. Usa itemscope(come hai fatto in seguito).

<!-- your code -->
  <div itemprop='articleBody'>
    <div itemscope itemtype="http://schema.org/ImageObject"/>

ImageObject è figlio della proprietà articleBody, ma non è stato associato in questo modo. In questo modo, hai un articoloBody senza proprietà associate e un oggetto ImageObject non associato. Dovresti usare

<!-- my code -->
    <div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">

Inoltre, />non è corretto, anche se stai cercando XHTML in quanto questo elemento ha figli e una chiusura </div>. Basta usare >come ho incluso nel frammento di cui sopra.

<!-- your code -->
      <a href="1.png" itemprop="url"><img itemprop="image sharedContent" src="1.png" /></a>

Cosa sta facendo sharedContent qui? sharedContent prevede un CreativeWork quando viene utilizzato come proprietà di SocialMediaPosting, mai come proprietà di ImageObject e mai su un img.

Anche l' altro frammento di codice che posiziona la proprietà sharedContent come di seguito è errato.

<!-- your code -->
<div itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
  <div itemprop='articleBody'>
    <div itemprop='sharedContent'>
      <div itemscope itemtype="http://schema.org/ImageObject"/>

Sebbene sharedContent sia ora nel posto giusto, deve ancora essere un CreativeWork. ImageObjects non è ancora associato a BlogPosting, come mostrato dallo strumento di test dei dati strutturati.

                                          

Il seguente è il codice corretto.

<!-- my code -->
<div itemscope itemtype="http://schema.org/BlogPosting">
  <div itemprop="articleBody">
    <div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
      <a href="1.png" itemprop="url"><img itemprop="image" src="1.png"></a>
    </div>
    <div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
      <a href="2.png" itemprop="url"><img itemprop="image" src="2.png"></a>
    </div>
    <div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
      <a href="3.png" itemprop="url"><img itemprop="image" src="3.png"></a>
    </div>
  </div>
</div>

Vedo. L'aggiunta ha ImageObjectesito negativo con sharedContentcome figlio: pastebin.com/cSgVZNyE . La rimozione lo sharedContentrende felice: pastebin.com/rieWwSM6 . Avvolgere ciascuno imagein un genitore sharedContent( pastebin.com/AmpBDqJs ) convalida felicemente, ma è perché lo STDD di Google lo ignora? L'STDD è abbastanza contento se contentURLviene utilizzato anche : pastebin.com/23wBvx8F . Quindi sembra che io l'abbia corretto e che Google l'abbia sbagliato? Deve essere il primo. 😉 Immagino di poterli placare tutti aggiungendo tutti i tag pertinenti. Grazie! 😀
Ken Sharp,

1
@Ken Vedi la mia modifica per il mio feedback sul tuo codice.
grg

TS utilizza un tipo di modello base di Blogger, quindi non sarà in grado di utilizzare il codice senza rinnovare l'intero modello. Le modifiche devono essere eseguite a livello di modello, non a livello di dati strutturati.
Evgeniy,

Grazie ancora @grgarside. Sicuramente hai ragione sharedContent: ho sbagliato tutto. L'ho rimosso per ora. Avendo un altro sguardo allo schema vedo che non penso di doverlo usare in a CreativeWork. Basta ignorare il />, è stato digitato in fretta 😉 e il codice originale è XHTML. Ho appena mescolato i due nel mio esempio (da qui le due versioni di itemscope). Il codice finale è corretto, onesto! 😁
Ken Sharp,

@Evgeniy Il modello è in fase di modifica o non funzionerebbe affatto. La mia domanda originale conteneva collegamenti su cui chiunque avrebbe potuto facilmente verificare, ma due wallies ora hanno eliminato i collegamenti e sono stufo di modificarli. Quindi qui mi sto spiegando ancora una volta, come avevo previsto che avrei dovuto.
Ken Sharp,

2

Ho avuto un problema simile con Google Structured Data Tester che ha contrassegnato le mie immagini come non valide. Apparentemente non accetta immagini in cui l'origine è un dominio localhost. Non appena ho distribuito sul server di gestione temporanea, il markup strutturato ha superato la convalida.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.