Семантическая разметка для тематической страницы форума - PullRequest
0 голосов
/ 20 мая 2018

У меня большой форум, вы знаете, темы с n сообщениями на тему.Первое сообщение используется, чтобы иметь основное содержание темы, но иногда некоторые сообщения также очень полезны.Один из распространенных случаев - это когда первое сообщение является вопросом, а затем вы получаете ответы.

Должна ли тема быть элементом article, а элементы messages 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 голосов
/ 20 мая 2018

Каждый пост должен быть article.Ничто другое не должно быть article.Таким образом, заголовок темы должен быть частью первого сообщения, а не контейнера.

Вы можете вложить ответы в первом сообщении или иметь все сообщения на одном уровне. HTML 5.2 о article:

Когда элементы article вложены, внутренние элементы article представляют статьи, которые в принципе связаны с содержимым внешней статьи..

Для панели автора вы можете использовать элемент footer.

Вместо использования типа Article Schema.org вы можете использовать более конкретный DiscussionForumPosting тип (который наследуется от 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...