Tại sao đánh dấu itemprop = 'image' của tôi không chính xác?


9

Tôi đã thử nghiệm với Microdata và nghĩ rằng tôi sẽ thử nó trên blog của mình. Hóa ra mẫu tôi đang sử dụng đã được thêm một số đánh dấu. Nó không tuyệt vời và vì vậy tôi đã sửa chữa những gì tôi có thể.

Để thử và thúc đẩy vận may của mình, tôi đã thêm nhiều đánh dấu vào bài đăng mới nhất của mình nhưng Công cụ kiểm tra dữ liệu có cấu trúc (SDTT) của Google không hài lòng về các itemprop='image'thuộc tính và tôi không chắc tại sao.

Lỗi công cụ kiểm tra cấu trúc

Trang kết quả .

Theo hiểu biết của tôi, bỏ qua tất cả các mã ở giữa, tôi đã cấu trúc dữ liệu như vậy:

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

Và điều này có vẻ đúng với tôi. BlogPostingcó thể có các thuộc tính articleBodyimagetheo https://schema.org/BlogPosting , nhưng theo SDTT:

Itemtype thuộc tính có giá trị không hợp lệ.

Thật vậy, tôi vừa thử SDTT với mã ví dụ ở trên và nó không thể xác nhận.

Mã ví dụ trong SDTT

Vì vậy, rõ ràng tôi đang thiếu một cái gì đó. Tôi đang làm gì sai?


Một số liên kết trong câu hỏi này đã bị xóa vì chúng không cần thiết cho câu hỏi được trả lời.
John Conde

Tại sao các thẻ được sử dụng rộng rãi bị loại bỏ sau đó?
Ken Sharp

Câu trả lời:


15

schema.org/BlogPosting hình ảnh cho phép ImageObject và URL, tuy nhiên Google chỉ cho phép ImageObject , vì thế mà lỗi. Đánh dấu dự định là:

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

               

Một sự khác biệt khác là lược đồ.org / ImageObject khuyến nghị contentUrl, nhưng Google khuyến nghị url, do đó tôi sử dụng ở trên.


Đáp lại mã nhận xét của bạn, cấu trúc của bạn vẫn không chính xác. Tôi sẽ đưa nó theo từng dòng:

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

Điểm nhỏ, nhưng trừ khi bạn dùng XHTML, itemscope='itemscope'là sai. Sử dụng itemscope(như bạn đã làm sau này).

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

ImageObject của bạn là con của thuộc tính articleBody, nhưng bạn chưa liên kết nó theo cách này. Giống như thế này, bạn có một articleBody không có thuộc tính liên quan và ImageObject không liên kết. Bạn nên sử dụng

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

Ngoài ra, />không chính xác, ngay cả khi bạn đang thử XHTML vì phần tử này có con và đóng </div>. Chỉ cần sử dụng >như tôi đã bao gồm trong đoạn trích trên.

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

SharedContent đang làm gì ở đây? sharedContent mong đợi CreativeWork khi được sử dụng làm tài sản của SocialMediaPosting - không bao giờ là tài sản của ImageObject và không bao giờ trên img.

Đoạn mã khác của bạn đặt thuộc tính sharedContent như bên dưới cũng sai.

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

Trong khi sharedContent hiện đang ở đúng vị trí, nó vẫn cần phải là CreativeWork. ImageObject của bạn vẫn không được liên kết với BlogPosting, như được hiển thị bởi Công cụ kiểm tra dữ liệu có cấu trúc.

                                          

Sau đây là mã chính xác.

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

Tôi hiểu rồi. Thêm ImageObjectthất bại sharedContentkhi là con của nó: pastebin.com/cSgVZNyE . Xóa sharedContentlàm cho nó hạnh phúc: pastebin.com/rieWwSM6 . Bao bọc từng imagephụ huynh sharedContent( pastebin.com/AmpBDqJs ) xác thực một cách vui vẻ, nhưng điều này có phải vì STD của Google chỉ bỏ qua nó không? STDD khá hạnh phúc nếu contentURLđược sử dụng là tốt : pastebin.com/23wBvx8F . Vì vậy, có vẻ như tôi đã làm đúng và Google đã làm sai? Đó phải là người đầu tiên. Tôi đoán tôi có thể xoa dịu tất cả bằng cách thêm tất cả các thẻ có liên quan. Cảm ơn! 😀
Ken Sharp

1
@Ken Xem chỉnh sửa của tôi cho phản hồi của tôi về mã của bạn.
grg

TS sử dụng một loại mẫu Blogger cơ bản, do đó anh ta sẽ không thể sử dụng mã của bạn mà không tân trang lại toàn bộ mẫu. Các thay đổi phải được thực hiện ở cấp độ mẫu, không phải ở cấp độ dữ liệu có cấu trúc.
Evgeniy

Cảm ơn một lần nữa @grgarside. Bạn chắc chắn đúng về sharedContent- Tôi đã sử dụng tất cả sai. Tôi đã gỡ bỏ nó bây giờ. Có một cái nhìn khác về lược đồ tôi thấy tôi không nghĩ mình cần sử dụng nó trong a CreativeWork. Chỉ cần bỏ qua />, nó đã được gõ vội 😉 và mã ban đầu là XHTML. Tôi chỉ trộn hai trong ví dụ của tôi (do đó là hai phiên bản itemscope). Mã cuối cùng là chính xác, trung thực! 😁
Ken Sharp

@Evgeniy Mẫu đang được chỉnh sửa hoặc nó hoàn toàn không hoạt động. Câu hỏi ban đầu của tôi chứa các liên kết mà bất kỳ ai cũng có thể dễ dàng kiểm tra, nhưng hai wallies hiện đã chỉnh sửa các liên kết đó và tôi phát ngán việc chỉnh sửa nó. Vì vậy, ở đây tôi đang giải thích bản thân mình một lần nữa, như tôi dự đoán tôi sẽ phải làm.
Ken Sharp

2

Tôi gặp vấn đề tương tự với Google Structured Data Tester đánh dấu hình ảnh của tôi là không hợp lệ. Rõ ràng nó không chấp nhận hình ảnh trong đó nguồn là một miền localhost. Ngay khi tôi triển khai đến máy chủ dàn, đánh dấu có cấu trúc đã thông qua xác nhận.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.