Mengapa markup itemprop = 'gambar' saya salah?

9

Saya telah bereksperimen dengan Microdata dan berpikir saya akan mencobanya di blog saya. Ternyata templat yang saya gunakan sudah menambahkan beberapa markup. Itu tidak bagus dan jadi saya memperbaiki apa yang saya bisa.

Untuk mencoba dan mendorong keberuntungan saya, saya telah menambahkan markup lebih banyak ke posting terbaru saya tetapi Alat Pengujian Data Terstruktur Google (SDTT) tidak senang dengan itemprop='image'atribut dan saya tidak yakin mengapa.

Kesalahan Alat Pengujian Terstruktur

Halaman hasil .

Ini adalah pemahaman saya, mengabaikan semua kode di antaranya, bahwa saya telah menyusun data sebagai berikut:

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

Dan ini terlihat benar bagi saya. BlogPostingdapat memiliki properti articleBodydan imagemenurut https://schema.org/BlogPosting , tetapi menurut SDTT:

Atribut tipetype memiliki nilai yang tidak valid.

Memang, saya baru saja mencoba SDTT dengan kode contoh di atas dan gagal memvalidasi.

Contoh kode di SDTT

Jadi saya jelas kehilangan sesuatu. Apa yang saya lakukan salah?

Ken Sharp
sumber
Beberapa tautan dalam pertanyaan ini telah dihapus karena tidak perlu dijawab.
John Conde
Mengapa tag yang banyak digunakan dihapus?
Ken Sharp

Jawaban:

15

schema.org/BlogPosting gambar memungkinkan ImageObject dan URL, namun Google hanya mengizinkan ImageObject , karena itu kesalahannya. Markup yang dimaksud adalah:

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

               

Perbedaan lainnya adalah schema.org/ImageObject merekomendasikan contentUrl, tetapi Google merekomendasikan url, maka penggunaan saya di atas.


Menanggapi kode komentar Anda, struktur Anda masih salah. Saya akan mengambilnya baris demi baris:

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

Poin minor, tetapi kecuali Anda menggunakan XHTML, itemscope='itemscope'itu salah. Gunakan itemscope(seperti yang Anda lakukan nanti).

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

ImageObject Anda adalah anak dari properti articleBody, tetapi Anda belum mengaitkannya dengan cara ini. Seperti ini, Anda memiliki artikelBody tanpa properti terkait dan ImageObject yang tidak terkait. Kamu harus menggunakan

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

Juga, />tidak benar, bahkan jika Anda mencoba XHTML karena elemen ini memiliki anak dan penutup </div>. Cukup gunakan >seperti yang saya sertakan dalam cuplikan di atas.

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

Apa yang sharedContent lakukan di sini? sharedContent mengharapkan CreativeWork bila digunakan sebagai properti dari SocialMediaPosting - tidak pernah sebagai properti dari ImageObject dan tidak pernah di img.

Cuplikan kode Anda yang lain yang menempatkan properti sharedContent seperti di bawah ini juga salah.

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

Sementara sharedContent sekarang di tempat yang tepat, itu masih perlu menjadi CreativeWork. ImageObjects Anda masih tidak terkait dengan BlogPosting, seperti yang ditunjukkan oleh Alat Pengujian Data Terstruktur.

                                          

Berikut ini adalah kode yang benar.

<!-- 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>
grg
sumber
Saya melihat. Menambahkan ImageObjectgagal dengan sharedContentsebagai anak itu: pastebin.com/cSgVZNyE . Menghapus sharedContentmembuatnya senang: pastebin.com/rieWwSM6 . Membungkus masing-masing imagedalam orangtua sharedContent( pastebin.com/AmpBDqJs ) divalidasi dengan gembira, tetapi apakah ini karena STDD Google mengabaikannya? STDD cukup senang jika contentURLdigunakan juga : pastebin.com/23wBvx8F . Jadi sepertinya saya melakukannya dengan benar dan Google melakukannya dengan salah? Itu pasti yang pertama. 😉 Saya rasa saya bisa menenangkan mereka semua dengan menambahkan semua tag yang relevan. Terima kasih! 😀
Ken Sharp
1
@ Ken Lihat edit saya untuk umpan balik saya pada kode Anda.
grg
TS menggunakan jenis templat Blogger dasar, sehingga ia tidak akan dapat menggunakan kode Anda tanpa mengubah keseluruhan templat. Perubahan harus dilakukan pada tingkat templat, bukan pada tingkat data terstruktur.
Evgeniy
Terima kasih lagi @grgarside. Anda tentu benar tentang sharedContent- Saya telah menggunakan itu semua salah. Saya sudah menghapusnya sekarang. Memiliki orang lain melihat skema saya melihat saya pikir saya tidak perlu menggunakannya dalam CreativeWork. Abaikan saja />, itu diketik terburu-buru 😉, dan kode aslinya adalah XHTML. Saya hanya mencampur keduanya dalam contoh saya (karenanya dua versi itemscope). Kode terakhir benar, jujur! 😁
Ken Sharp
@ Evgeniy Templat sedang diedit atau tidak akan berfungsi sama sekali. Pertanyaan awal saya berisi tautan yang bisa diperiksa siapa saja dengan mudah, tetapi dua Wallary sekarang telah mengedit tautan dan saya muak mengeditnya. Jadi di sini saya menjelaskan diri saya lagi, seperti yang saya prediksi saya harus.
Ken Sharp
2

Saya memiliki masalah yang sama dengan Google Structured Data Tester menandai gambar saya sebagai tidak valid. Tampaknya itu tidak menerima gambar di mana sumbernya adalah domain host lokal. Segera setelah saya ditempatkan ke server panggung, markup terstruktur melewati validasi.

Mike
sumber