论坛主题页面的语义标记

时间:2018-05-20 09:31:24

标签: html forum semantic-markup microdata

我知道有一个大型论坛,每个主题都包含 n 条消息。第一条消息用于获取主题的主要内容,但有时一些消息也非常有用。一个常见的情况是,当第一条消息是一个问题,然后你就会得到答案。

主题应该是article元素吗?消息article元素是否继承自主题文章?在这种情况下,第一条消息是否应出现在每个消息的页面中作为参考?然后,如何处理重复的内容?

一个例子:

<article itemscope itemtype="http://schema.org/Article">
   <header>
      <h1 itemprop="name">My topic title</h1>
   </header>
   <article itemscope itemtype="http://schema.org/Article">
      <div class="author" itemprop="author">Message author's name</div>
      <div class="message-body" itemprop="articleBody">
         message text bla bla
      </div>
      <p class="post-date" itemprop="dateModified" content="date">date</p>
   </article>
   <article itemscope itemtype="http://schema.org/Article">
      <div class="author" itemprop="author">Message 2 author's name</div>
      <div class="message-body" itemprop="articleBody">
         message 2 text bla bla
      </div>
      <p class="post-date" itemprop="dateModified" content="date">date</p>
   </article>
   ... more messages ...
</article>

这是语义,可访问性和SEO的好习惯吗?我能做更好的选择吗?

1 个答案:

答案 0 :(得分:0)

每个帖子都应该是article。其他任何东西都不应该是article。所以线程的标题应该是第一篇文章的一部分,而不是容器的一部分。

您可以将回复嵌套在第一篇文章中,也可以将所有帖子放在同一级别上。 HTML 5.2 about article

  

article元素嵌套时,内部article元素表示原则上与外部文章内容相关的文章。

对于作者窗格,您可以使用footer元素。

您可能希望使用更具体的DiscussionForumPosting类型(继承自Article),而不是使用Schema.org的Article类型。

嵌套

<article>
  <h2>My topic title</h2>
  <footer>…</footer>
  <div>…</div>

  <article>
    <h3>Reply: My topic title</h3>
    <footer>…</footer>
    <div>…</div>
  </article>

  <article>
    <h3>Reply: My topic title</h3>
    <footer>…</footer>
    <div>…</div>
  </article>

</article>

相同级别

<article>
  <h2>My topic title</h2>
  <footer>…</footer>
  <div>…</div>
</article>

<article>
  <h2>Reply: My topic title</h2>
  <footer>…</footer>
  <div>…</div>
</article>

<article>
  <h2>Reply: My topic title</h2>
  <footer>…</footer>
  <div>…</div>
</article>