论坛主题页面的语义标记

Semantic markup for a forum's topic page

我有一个大型论坛,您知道,每个主题有 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 的良好做法吗?我还有更好的选择吗?

每个 post 应该是一个 article。没有其他东西应该是 article。所以线程的标题应该是第一个 post 的一部分,而不是容器的一部分。

您可以将回复嵌套在第一个 post 中,或者将所有 post 置于同一级别。 HTML 5.2 about article:

When article elements are nested, the inner article elements represent articles that are in principle related to the contents of the outer 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>