Так как я не умею делать расширения, а лёгкого готового не нашёл (все какие-то слишком универсальные), пришлось сделать самому. Мы в соавторстве с Google-ai применили динамическую изоляцию сущностей через условия S_FIRST_ROW на трех ключевых участках файла
styles/prosilver/template/viewtopic_body.html. Стартовый пост размечается как тема (itemscope), последующие сообщения — как комментарии (Comment). Прошу критиковать для причёсывания и вылизывания.
Осторожно: Код сырой, проверялся плохо, тестируем вместе. Перед исправлением сделайте копию файла для быстрого восстановления работоспособности форума.
Микроразметка Schema.org (DiscussionForumPosting) в phpBB 3.3
1. Начало цикла сообщений
Находим начало цикла
<!-- BEGIN postrow --> и в нём перед тегом
<div id="p{postrow.POST_ID}" *****> добавляем:
Код: Выделить всё
<!-- IF postrow.S_FIRST_ROW -->
<div itemscope itemtype="https://schema.org/DiscussionForumPosting">
<meta itemprop="mainEntityOfPage" content="{U_VIEW_TOPIC}" />
<meta itemprop="url" content="{U_VIEW_TOPIC}" />
<span itemprop="commentCount" style="display:none;">{NUM_POSTS}</span>
<!-- ENDIF -->
Внутри этого тега
<div id="p{postrow.POST_ID}" *****> перед закрывающей угловой скобкой вставляем:
Код: Выделить всё
<!-- IF not postrow.S_FIRST_ROW -->itemprop="comment" itemscope itemtype="https://schema.org/Comment"<!-- ENDIF -->
А после этого тега
<div id="p{postrow.POST_ID}" *****> добавляем:
Код: Выделить всё
<meta itemprop="headline" content="{postrow.POST_SUBJECT}" />
2. Контент сообщения
Находим
{postrow.MESSAGE} и вместе с окружающим тегом
<div class="content"> заменяем на этот вариант:
Код: Выделить всё
<div class="content" itemprop="text">{postrow.MESSAGE}</div>
3. Информация об авторе
Находим строку с выводом автора сообщения
Код: Выделить всё
<!-- IF not postrow.U_POST_AUTHOR --><strong>{postrow.POST_AUTHOR_FULL}</strong><!-- ELSE -->{postrow.POST_AUTHOR_FULL}<!-- ENDIF -->
И оборачиваем её в разметку сущности Person
Код: Выделить всё
<span itemprop="author" itemscope itemtype="https://schema.org/Person"><span itemprop="name">
<!-- IF not postrow.U_POST_AUTHOR --><strong>{postrow.POST_AUTHOR_FULL}</strong><!-- ELSE -->{postrow.POST_AUTHOR_FULL}<!-- ENDIF -->
</span></span>
4. Дата публикации сообщения
Находим строку с выводом даты и времени сообщения:
Код: Выделить всё
<time datetime="{postrow.POST_DATE_RFC3339}">{postrow.POST_DATE}</time>
И заменяем на строку с атрибутом
itemprop="datePublished":
Код: Выделить всё
<time datetime="{postrow.POST_DATE_RFC3339}" itemprop="datePublished">{postrow.POST_DATE}</time>
5. Конец цикла сообщений
Находим завершение цикла
<!-- END postrow --> и перед ним
<!-- EVENT viewtopic_body_postrow_post_after --> и вот уже перед этой строкой добавляем:
Код: Выделить всё
<!-- IF postrow.S_FIRST_ROW --></div><!-- ENDIF -->
6. Проверка исправлений
После редактирования файла очистите кэш форума в админ-панели.
Для проверки правильности настройки микроразметки используйте официальный инструмент от Google.
Перейдите по ссылке: Инструмент проверки расширенных результатов Google (Rich Results Test)
https://search.google.com/test/rich-results
Выберите проверку по URL и вставьте прямую ссылку на любую страницу темы вашего форума. Если страница берётся из кэша, добавляйте в конец URL какой-нибудь несуществующий параметр с уникальным значением при каждой проверке, например,
&test=1.