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 结构化数据是有效的
所以我刚刚发现 '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 结构化数据是有效的