我看了Google提出的文章“结构化数据”,发现有一个新的必填和推荐字段,上周没有。这是链接:

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

列表中的第一个属性是:


mainEntityOfPage。@ id(推荐)

我不知道该属性的值必须是什么?这是什么财产?它是链接到:


http://schema.org/Article

..还是当前博客帖子的链接,例如:


http://www.example.com/blog/1001/my-blog-article

他们在其示例代码中具有以下内容:

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


我目前所拥有的这还不符合测试工具的规则-我仍在忙于添加所有必需的属性,同时尝试在其中添加推荐的属性好:

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


我的文档中也有此文件:

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


这是否会发生冲突与Google提供的代码示例一起使用?

评论

刚刚看到今天早上我的网站发生了同样的事情,并落在了这个线程上。

#1 楼

mainEntityOfPage属性用于提供以事物为主要实体的页面的URL。如果查看逆属性mainEntity,可能会变得更加清楚:这给出了页面的主要实体(请参见示例)。

例如,对于包含单个博客文章的网页,您可以提供以下其中一项:



BlogPostingmainEntityOfPageWebPage


WebPagemainEntityBlogPosting


这些属性可用于传达页面的主要内容(因为页面可能包含多个项目) ,例如带有相关ItemList项的WebPage,描述作者的Person,提供一些元数据的WebSite等。)

(有关详细说明,请参见我对Stack Overflow的回答。) />

有两种使用mainEntityOfPage的方法:


提供页面的URL
嵌入/引用页面项(通常是WebPage

第二个通常没有多大意义(您宁愿使用inverse属性mainEntity),并且可能因此Google推荐/期望第一个。

要提供网址,您只需使用link元素:


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


Google的结构化数据测试工具接受此。 br />
在“文章丰富摘录”示例中,Google使用的是带有metaitemid元素:


这是无效的HTML5 + Microdata:如果<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://google.com/article"/> 元素具有meta属性,则它也必须具有itemprop属性。

评论


如果我们还通过meta提供带有url的内容怎么办? 它会在结构化数据测试工具中验证正常并且不会显示错误

–光剑
17年4月1日在17:44



@StarWars:是的,这就是使此meta元素有效的方法。请注意,内容值将被忽略,因此您可以提供一个空值。

–未成年
17年4月1日在18:00

好的,我现在将content =“”添加到元标记。

–光剑
17年4月1日在18:54

为什么Google在示例中使用meta而不是link?这些都在结构化数据测试工具中得到验证。虽然,预览是不同的。使用链接时,它具有mainEntityOfPage http://example.com/article-1,而对于meta,它显示@id和@type属性。

–光剑
17年4月1日在19:07

@StarWars:是的,这是完全不同的:元方式创建一个具有类型和URI作为标识符的新项目,链接方式仅链接到页面。我不知道为什么Google的文档使用元数据,特别是因为我认为链接方式更简单。

–未成年
17年4月1日在19:20

#2 楼


此属性是什么?


它是对urlsameAs属性的补充,如mainEntity背景所述。

它具有特有的名称因为它可能适用于Thing类型的所有项目。如果它仅适用于Articles,它本来可以称为mainTopic / mainTopicOfArticle,并且更加清楚。 br />
属性的值应为CreativeWork类型的项或引用Schema.org的URL类型的项。这意味着它也可能是您提到的ArticleBlogPosting。但是,如果要构建AMP页,则该值应为URL。


这是否与Google提供的代码示例有任何冲突?


尽管Google的结构化数据测试工具说了什么,但他们的文档不再建议对非AMP页面使用mainEntityOfPage,因此您可以随意忽略它。