MainEntityOfPage mới được yêu cầu cho dữ liệu có cấu trúc bài viết


12

Tôi đã xem xét bài viết có cấu trúc dữ liệu theo đề xuất của Google và thấy rằng có một trường bắt buộc và được đề xuất mới, chúng không có ở đó tuần trước. Đây là đường dẫn:

https://developers.google.com/structured-data/rich-snippets/articles

Tài sản đầu tiên trong danh sách là:

  • mainEntityOfPage. @ id (được khuyến nghị)

Tôi không hiểu giá trị của tài sản phải là gì? Tài sản này là gì? Đây có phải là một liên kết đến:

.. hoặc một liên kết đến bài viết blog hiện tại như:

Họ có mã này trong mã mẫu của họ:

<meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid="https://google.com/article" />

Đây là những gì tôi hiện đang có, nó chưa tuân thủ các quy tắc của công cụ kiểm tra - Tôi vẫn đang bận thêm tất cả các thuộc tính cần thiết và đồng thời cố gắng thêm các thuộc tính được đề xuất ở đó:

<div itemscope itemtype="http://schema.org/BlogPosting">
   <h1 itemprop="headline">
      <a href="http:///www.example.com/blog/1001/my-blog-article" itemprop="url">My Blog Article</a>
   </h1>
   <p>Written by
      <span itemprop="author" itemscope itemtype="http://schema.org/Person">
         <span itemprop="name">Mase Kind</span>
      </span> on
      <time itemprop="datePublished" datetime="2015-11-16T15:30:00+02:00">November 16, 2015</time>
      <meta itemprop="dateModified" content="2015-12-10T12:29:00+02:00" />
      <div itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
         <div itemprop="logo" itemscope itemtype="http://schema.org/ImageObject"></div>
         <meta itemprop="name" content="My Company Name" />
      </div>
   </p>
   <div itemprop="articleBody">
      <p>first article body</p>
   </div>
</div>

Tôi cũng có cái này trong tài liệu của mình:

<body itemscope itemtype="http://schema.org/WebPage">
...
</body>

Điều này có mâu thuẫn với mẫu mã do Google cung cấp không?


Chỉ cần nhìn thấy điều tương tự xảy ra với trang web của tôi sáng nay và hạ cánh trên chủ đề này.
dasickle

Câu trả lời:


14

Các mainEntityOfPagetài sản được sử dụng để cung cấp cho các địa chỉ URL của một trang trên đó điều là cơ quan chính. Nó có thể trở nên rõ ràng hơn nếu bạn nhìn vào thuộc tính nghịch đảo mainEntity: điều này mang lại thực thể chính cho một trang ( xem một ví dụ ).

Ví dụ: đối với một trang web có chứa một bài đăng trên blog, bạn có thể cung cấp một trong những điều sau:

  • BlogPostingmainEntityOfPageWebPage
  • WebPagemainEntityBlogPosting

Các thuộc tính này rất hữu ích để truyền đạt nội dung chính trên trang là gì (vì các trang có thể chứa nhiều mục, ví dụ: ItemListvới các WebPagemục liên quan , Personmô tả tác giả, WebSiteđưa ra một số siêu dữ liệu, v.v.).

(Xem câu trả lời của tôi trên Stack Overflow để được giải thích chi tiết hơn.)


hai cách sử dụng mainEntityOfPage:

  • cung cấp URL của trang
  • nhúng / tham chiếu mục trang (thường là a WebPage)

Cách thứ hai thường không có nhiều ý nghĩa (bạn muốn sử dụng thuộc tính nghịch đảo mainEntity) và có thể vì lý do đó, Google khuyến nghị / mong đợi điều đầu tiên.

Để cung cấp URL, bạn chỉ cần sử dụng một linkyếu tố:

<article itemscope itemtype="http://schema.org/BlogPosting">
  <link itemprop="mainEntityOfPage" href="http://example.com/article-1" />
</article>

Công cụ kiểm tra dữ liệu có cấu trúc của Google chấp nhận điều này.

Trong ví dụ Bài viết Rich Snippet , Google đang sử dụng một metayếu tố itemidthay thế:

<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://google.com/article"/>

Đây là HTML5 + Microdata không hợp lệ: Nếu metaphần tử có itempropthuộc tính, nó cũng phải có contentthuộc tính .


Điều gì xảy ra nếu chúng tôi cũng cung cấp nội dung với url trong meta, ví dụ: <meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://google.com/article" content='https://google.com/article' /> Nó sẽ xác thực tiền phạt và không hiển thị lỗi trong công cụ kiểm tra dữ liệu có cấu trúc
StarWars

@ StarWars: Vâng, đó là cách để làm cho metayếu tố này hợp lệ. Lưu ý rằng contentgiá trị sẽ bị bỏ qua, vì vậy bạn có thể cung cấp một giá trị trống.
unor

được rồi, giờ tôi đã thêm nội dung = "" vào thẻ meta.
StarWars

Tại sao google sử dụng metathay vì linktrong các ví dụ của nó? cả hai đều xác nhận trong công cụ kiểm tra dữ liệu có cấu trúc. Mặc dù, bản xem trước là khác nhau. Khi linkđược sử dụng, nó có mainEntityOfPage http://example.com/article-1trong khi trong trường hợp của metanó hiển thị @id@typethuộc tính.
StarWars

@ StarWars: Vâng, đó chính xác là sự khác biệt: metacách tạo ra một mục mới với một loại và URI làm định danh, linkcách chỉ liên kết đến một trang. Tôi không biết tại sao tài liệu của Google sử dụng meta, đặc biệt vì tôi nghĩ linkcách này đơn giản hơn.
unor

2

Tài sản này là gì?

Nó bổ sung cho các thuộc tính urlsameAs, như được mô tả trong mainEntitynền .

Nó có một tên riêng vì nó có thể được áp dụng cho tất cả các loại thuộc loại Thing. Nếu nó chỉ áp dụng cho Articlesnó có thể đã được gọi mainTopic/ mainTopicOfArticlevà rõ ràng hơn.

Tôi không hiểu giá trị của tài sản phải là gì?

Giá trị của tài sản dự kiến ​​sẽ là một loại vật phẩm CreativeWorkhoặc một URLtài liệu tham khảo hoạt động theo Schema.org. Điều đó có nghĩa là nó cũng có thể là một Articlehoặc BlogPostingnhư bạn đã đề cập. Tuy nhiên, nếu bạn đang xây dựng các trang AMP, giá trị sẽ là một URL.

Điều này có mâu thuẫn với mẫu mã do Google cung cấp không?

Bất chấp những gì Công cụ kiểm tra dữ liệu có cấu trúc của Google cho biết tài liệu của họ không còn khuyến nghị sử dụng các trang mainEntityOfPagekhông phải AMP để bạn có thể bỏ qua 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.