Schema.org 组织:url,一处是徽标,另一处是社交链接

Schema.org Organization: url, logo in one place and social links in another

所以我刚刚发现 'sameAs' 的 schema.org 组织类型,它可以让您 link 您的社交资料。我的问题是我的 url 和徽标位于一个位置(页眉),而社交 link 位于其他位置(页脚)。

<div class="container custom-top" itemscope itemtype="http://schema.org/Organization">
    <a class="custom-logo" itemprop="url" href="/">
        <img itemprop="logo" alt="sitename" height="40" src="/assets/img/logo-main.png" width="161">
    </a>
</div>

我的社交 link 处于一个完全不同的位置:

<ul class="list-inline">
    <li>
        <a href="https://www.facebook.com/site" data-window="external" data-placement="top" rel="tooltip" title="Facebook"></a>
        <a href="https://twitter.com/site" data-window="external" data-placement="top" rel="tooltip" title="Twitter"></a>
        <a href="https://plus.google.com/site" data-window="external" data-placement="top" rel="tooltip publisher" title="Google+"></a>
    </li>
</ul>

在一个完美的世界中,一切都是 itemtype 的子项,但由于我的设计,这是不可能的。

<span itemscope itemtype="http://schema.org/Organization">
  <a itemprop="url" href="/">
        <img itemprop="logo" src="/assets/img/logo-main.png"
  </a>
  <a itemprop="sameAs" href="http://www.facebook.com/your-company">FB</a>
  <a itemprop="sameAs" href="http://www.twitter.com/YourCompany">Twitter</a>
</span>

那么,除了把所有东西都放在同一个地方之外,还有什么办法可以解决这个问题吗?我读到 itemref 和 link 将项目放在一起,但在使用 Google 的结构化数据测试工具进行测试时无法正常工作。

请不要告诉我让 div 保持打开状态并基本上用组织项目类型跨越整个页面。我希望有一个干净的方法来解决这个问题。 Schema.org 不能指望每个网页上的所有内容都很好地聚集在一起。

Microdata 的 itemref 属性可以是一个解决方案。但这仅在您没有打开其他父 itemtype 时有效(例如,在 body 上)。

<div itemscope itemtype="http://schema.org/Organization" itemref="social-links">
  <a itemprop="url" href="/">
    <img itemprop="logo" alt="sitename" src="logo.png">
  </a>
</div>

<ul id="social-links">
  <li><a itemprop="sameAs" href="https://www.facebook.com/site"></a></li>
  <li><a itemprop="sameAs" href="https://twitter.com/site"></a></li>
  <li><a itemprop="sameAs" href="https://plus.google.com/site"></a></li>
</ul>

Schema.org cannot expect everything to be clustered together nicely on every webpage.

请注意,词汇表 Schema.org 不仅适用于微数据语法。其他语法不一定有这个问题:JSON-LD 独立于标记,RDFa 可以通过使用 URI(例如,通过 resource 属性)并且可能还使用它的 属性 复制机制。 (Microdata 的 itemid 原则上也可以解决这个问题,但我想它并没有为此明确定义并且消费者支持很差。)

<div itemscope itemtype="http://schema.org/Organization">
  <link itemprop="url" href="/">
    <img itemprop="logo" alt="sitename" src="logo.png">

<ul>
  <li><a itemprop="sameAs" href="https://www.facebook.com/site"></a></li>
  <li><a itemprop="sameAs" href="https://twitter.com/site"></a></li>
  <li><a itemprop="sameAs" href="https://plus.google.com/site"></a></li>
</ul>
</div>

试试这个,我没发现他有任何错误。

如果您不需要在您的网站上使用 Schema.org 标记,JSON-LD 是另一种选择。

在 Google 的 documentation sameAs 社交资料功能中,他们包括这个 JSON-LD 代码模板作为示例:

<script type="application/ld+json">
    { "@context" : "http://schema.org",
      "@type" : "Organization",
      "name" : "Your Organization Name",
      "url" : "http://www.your-site.com",
      "sameAs" : [ "http://www.facebook.com/your-profile",
        "http://www.twitter.com/yourProfile",
        "http://plus.google.com/your_profile"] 
    }
</script>

我们现在正在使用这种在我们的网站上包含我们的组织信息的方法,因为我们遇到了与您相同的问题。根据 Google 的 Structured Data Testing Tool.

,此 JSON-LD 结构化数据是有效的