在Microdata中使用元标记指定复杂结构

时间:2016-06-09 10:26:20

标签: html5 microdata

如何使用微数据格式标记未在页面上显示的信息?

通常情况下,我们不希望在页面上显示发布商/作者信息,但Google要求提供这些信息,而且结构复杂。

我不想把这些数据放在隐藏的span / div或任何东西中,所以我想我会使用meta标签。但是如何使用元数据指定发布者实体的徽标和名称?我是否需要以某种方式使用itemref?

<section itemscope itemtype="http://schema.org/Article">
 <meta itemprop="keywords" content="kw1, kw2" />
 <meta itemprop="publisher" content="© My Company" /><!-- ??-->

我已经看过Using a different image for microdata that isn't displayed in the article?,但是有可能在不使用JSON-LD的情况下实现我的目标吗?如果不是,我可以同时使用JSON-LD和元/标签描述吗?

1 个答案:

答案 0 :(得分:4)

我认为你有两个(在某些情况下是三个)使用Microdata的选项。

meta / link + div

最简单的解决方案是对具有非项目值的属性使用meta / link元素,对具有项目值的属性使用div元素。

<section itemscope itemtype="http://schema.org/Article">
  <meta itemprop="keywords" content="kw1, kw2" />
  <div itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
    <meta itemprop="name" content="My Company" />
  </div>
</section>
默认情况下隐藏了<​​p> meta / link元素,并且除了div / meta元素之外的link个元素都没有显示任何内容

meta / link + itemref

如果您不想使用div元素,则可以使用meta元素来表示项目。但是你必须

  • 提供空content属性(丑陋)和
  • 对要添加到此项目的每个属性使用itemref属性。
<meta itemscope itemprop="publisher" content="" itemtype="https://schema.org/Organization" id="pub" itemref="pub-name" />

<meta itemprop="name" content="My Company" id="pub-name" />

<section itemscope itemtype="http://schema.org/Article" itemref="pub">
  <meta itemprop="keywords" content="kw1, kw2" />
</section>

请注意,这不适用于顶级项目,因为meta元素需要itemprop属性(不能为空)。

meta / link +)itemid

在某些情况下,可能会引用项目的URI(而不是嵌入它们),例如,如果您有另一个页面包含有关发布者的数据。

但请注意,目前尚不清楚Google是否支持此功能。

<section itemscope itemtype="http://schema.org/Article">
  <meta itemprop="keywords" content="kw1, kw2" />
  <link itemprop="publisher" href="/publisher#this" />
</section>
<!-- on the page /publisher -->

<section itemscope itemtype="http://schema.org/Organization" itemid="#this">
  <h1 itemprop="name">My Company</h1>
</section>