我应该为博客使用哪些微数据?

42

这个博客基本上是一个页面,列出了大约10篇文章的摘要,每个项目标题都链接到完整的文章页面。

我看到过:

我应该在哪里使用它们?

现在在单独的文章页面上,我有:

  <article itemscope itemtype="http://schema.org/Article">       

    <h1 itemprop="name"> <a href="..."> A title...  </a> </h1>    

    <div itemprop="articleBody">
       bla bla
    </div>

    ...

  </article>

这还可以,但是文章索引页怎么办?我是在每篇文章中添加这些内容并将itemscope itemtype="http://schema.org/Blog" itemprop="blogPosts" 添加到所有文章的容器元素中吗?因为文档中似乎没有提到文章是博客的子元素...

5个回答

49

我同意其他人说的主题非常模糊。尽管如此,我将尝试表达我的想法,并展示我在博客上如何处理它。

我在同一篇文档中使用了WebPageBlog项目类型来标记不同的内容。

网页

我在body标签上使用了WebPage项目类型(但您也可以使用面包屑的任何其他父级)。通过这样做,我可以标记我的面包屑。

<body itemscope itemtype="http://schema.org/WebPage">
  <ul itemprop="breadcrumb">
    <li>
      <a href="foo">foo</a> 
    </li>

    <li>
      <a href="foo/bar">bar</a>
    </li>

    <li>
      <a href="foo/bar/baz">baz</a>
    </li>
  </ul>
    
    ...
    
</body>

博客文章

当我循环博客文章时,我在包含所有博客文章的外壳中使用了Blog项类型。我用属性blogPosts标记每篇文章,当然使用BlogPosting作为项类型。

<section itemscope itemtype="http://schema.org/Blog">
  <article itemprop="blogPosts" itemscope itemtype="http://schema.org/BlogPosting">
    ...
  </article>
    
  <article itemprop="blogPosts" itemscope itemtype="http://schema.org/BlogPosting">
    ...
  </article>
    
  ...
    
</section>

文章页面

请参阅下面的编辑,了解此观点的更新

在文章落地页上,我没有使用Blog项目类型。但我确实将帖子标记为BlogPosting项目。

<article itemscope itemtype="http://schema.org/BlogPosting">
  ...
</article>

我唯一能想到你希望使用Blog类型标记某些内容的原因,可能是因为它具有blogPosts属性,并且可以表示它是一个博客。但我认为通过将文章标记为BlogPosting,就已经表明它是博客了。 同时,在这种情况下使用该属性也不正确,因为它以复数形式使用。在我看来,这反映了不同的用途领域。


编辑

我不确定架构是否进行了扩展,还是我第一次错过了,但是Blog项目现在有一个名为blogPost的属性,即单数形式的blogPosts。因此,我会建议将主要元素标记为Blog项目,并使用blogPost属性来标记文章,并将其标记为BlogPosting项目。


2
在循环文章中,为什么要使用 itemprop="blogPosts" 而不是 itemprop="blogPost" - Pikk
@Pikk 在集合页面上应该使用复数形式。更好的语义化。 - superhero
1
看起来在https://schema.org/BlogPosting上写着blogPost取代了blogPosts - 所以从我的理解来看,blogPost替换了blogPosts,并且blogPosts被blogPost所取代。 - Pikk
我的看法是,他们解释了一个属性,该属性以单数和复数形式使用。但是,如果两者都被定义,则单数标记会取代复数标记。因此,https://schema.org/Blog不能同时标记这两个属性。 - superhero
标记语言也被谷歌使用,详情请见 https://firebase.googleblog.com/。 - nathan

7

我建议你使用http://schema.org/WebPage来定义整个页面,因为这可以让你定义面包屑/导航等重要元素,无论特定内容如何,这都有助于描述一个网站。

微数据模式还需要大量的工作,你指出了一个缺陷——在我看来,Article和其他任何东西之间似乎没有父子关系(例如“Articleindex”或“Articles”)。

我还没有真正读到任何表明这种父子层次结构非常重要的东西,除非父级表达的属性很重要,所以我认为你可以随便选择。

但是,你没有提到“文章”的类型。如果它们更像新闻文章、研究论文等官方性质的话,我建议你为每篇文章使用http://schema.org/Article,而不必担心文章索引页。否则,为每篇文章使用http://schema.org/Blog http://schema.org/BlogPosting。


6
文章和博客架构描述目前非常模糊,并且在将来可能会更改,但我认为博客架构对于博客来说更加相关(在下面的“更具体的类型”下面甚至暗示了文章架构描述页面)。
因此,您可以从高级架构定义您的主要博客页面开始:
<!DOCTYPE html itemscope itemtype="http://schema.org/Blog">
<meta itemprop="creator" content="Creator of the blog">
<meta itemprop="name" content="Title of your Blog">
<meta itemprop="description" content="Description of your blog">
<meta itemprop="image" content="http://www.yourblog.com/main/image/pic.gif">

您可以使用第二级博客模式BlogPosting来定义您的博客页面,并定义适当的项目属性,如下所示:

<!DOCTYPE html itemscope itemtype="http://schema.org/BlogPosting">
<meta itemprop="author" content="Author of your blog">
<meta itemprop="name" content="Title of your content">
<meta itemprop="description" content="Description of your post">
<meta itemprop="image" content="http://www.yourblog.com/post/image/pic.gif">

哎呀,有点复杂 :P,有成千上万个属性可供使用,但只需关注最重要的几个。


3

糟糕!这段代码出现了错误!

<!DOCTYPE html itemscope itemtype="http://schema.org/Blog">

你应该使用这段代码:
<!DOCTYPE html>

替代:

<!DOCTYPE html itemscope itemtype="http://schema.org/Blog">

当我们声明博客类型时,可以将其添加到 body 标签中:

<body itemscope='' itemtype='http://schema.org/Blog'>

在这个部分中,我们可以使用“Itemprop”作为itemtype的属性。
我们所说的是站点的类型,而不是站点的基本语言。


2
以下是其他重要的itemscopes,与此相关的是it技术。 Person为例。
<div itemscope itemtype="http://schema.org/Person">
     <span itemprop="name">Mahdi Maghrooni</span>
     <img src="http://maghrooni.ir/img/users/FCwNdpWQKGQqiZphN6rj2YuHY3bXrF.jpg" itemprop="image" alt="Maghrooni" />
</div>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接