如何实现" mainEntityOfPage"到这个特定的网站?

时间:2015-12-25 20:08:24

标签: schema.org microdata google-rich-snippets

请看一下:https://developers.google.com/structured-data/testing-tool?url=https%253A%252F%252Fglamourina.net%252Fen%252F

如何正确地将mainEntityOfPage添加到此网站?

在Google文档示例中,我看到类似这样的内容:

<div itemscope itemtype="http://schema.org/NewsArticle">

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

但这是一篇单独的作者博客。它的特色是blogPosts。

<article itemscope itemtype="https://schema.org/BlogPosting" class="singlearticles">

如果我这样更改它会不会很好:

<article itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid="https://linktoarticle"/>

不确定我是否理解mainEntityOfPage用法。如果有人可以建议我如何处理这个特定的案例/网站,我将不胜感激。不一般,因为每个站点可以有不同的mainEntityOfPage,但我需要知道并理解该站点的正确实现。

1 个答案:

答案 0 :(得分:45)

关于Google的Microdata示例

Google的Microdata示例无效。如果meta元素具有itemprop属性,则content属性是必需的(details)。

我描述了different ways how to specify mainEntityOfPage in Microdata,最简单的一个是link元素,它创建了一个URL值(而不是另一个微数据项):

<link itemprop="mainEntityOfPage" href="http://example.com/article-1" />

mainEntity

如果我们首先查看其反向属性mainEntityOfPage,则更容易理解mainEntity的使用。

对于包含WebPage的{​​{1}},我们可以:

BlogPosting

这意味着:有一个<body itemscope itemtype="http://schema.org/WebPage"> <article itemprop="mainEntity" itemscope itemtype="http://schema.org/BlogPosting"> </article> </body> 和一个WebPageBlogPosting是&#34;主要实体&#34;在BlogPosting中描述。如果涉及更多项目,例如描述作者的WebPage,相关帖子的另外五个Person项目,提供一些元数据的BlogPosting项目等,则表示这尤其有意义。感谢WebSite / mainEntity,消费者可以了解该页面上的主要/主要项目(即页面代表的内容)。

mainEntityOfPage

以下带有mainEntityOfPage的示例会产生等效的结构化数据,例如上面带有mainEntityOfPage的示例:

mainEntity

如您所见,<article itemscope itemtype="http://schema.org/BlogPosting"> <div itemprop="mainEntityOfPage" itemscope itemtype="http://schema.org/WebPage"> </div> </article> 项的元素包含BlogPosting项的元素。这当然是相当不寻常的标记。

但是mainEntityOfPage属性不仅期望一个(WebPage)项作为值,它还需要一个URL。因此,不是明确提供CreativeWork项,而是可以提供页面的URL:

WebPage

(这是Google期望的,根据Articles Rich Snippet的文档。)

Excursus:页面与帖子的URL

许多网站不区分网页的网址和博客帖子的网址。对于这些网站,陈述类似

的内容似乎很愚蠢
<article itemscope itemtype="http://schema.org/BlogPosting">
  <link itemprop="mainEntityOfPage" href="http://example.com/article-1" />
</article>
http://example.com/article-1 (the blog post)
is the 'mainEntityOfPage' 
http://example.com/article-1 (the web page) 

但无论如何它都是有用的(例如,选择哪个项目是主要项目,因为其他项目不具有此语句;或者对于空白节点;等等。)

然而,有些网站确实存在差异(特别是对于Linked Data),所以他们可能会说出像

这样的内容
http://example.com/article-1 (the web page) 
has 'mainEntity' 
http://example.com/article-1 (the blog post)
http://example.com/article-1#this (the blog post)
is the 'mainEntityOfPage' 
http://example.com/article-1 (the web page) 

此处,http://example.com/article-1 (the web page) has 'mainEntity' http://example.com/article-1#this (the blog post) 表示博客发布,http://example.com/article-1#this表示包含此发布信息的页面(或发布内容本身)。一个更清晰的例子是一个人和一个关于这个人的页面;或建筑物和关于这栋建筑的页面。请参阅我的答案以获取示例why you might want to do this。 (但是,如上所述,您不必区分;您可以为两者使用相同的URL。)