Ошибки в панели управления search.google

Проблемы с установкой или работой phpBB 3.3.x? Получите помощь здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Kuskow
phpBB 2.0.5
Сообщения: 471
Стаж: 10 лет 1 месяц
Откуда: 🇰🇿 Караганда
Благодарил (а): 29 раз
Поблагодарили: 46 раз

Re: Ошибки в панели управления search.google

Сообщение Kuskow »

Так не получится, потому что:
1) если в сообщении есть и текст, и изображения, внутри одной сущности будет и text, и image, что недопустимо
2) image будет несколько для одной сущности - тоже недопустимо
3) image будет внутри text - тоже недопустимо
Мои разработки в phpBB: php-антибот, антибот Nginx, DiscussionForumPosting.
Аватара пользователя
Perfecthus
phpBB 2.0.14
Сообщения: 954
Стаж: 15 лет 9 месяцев
Откуда: Оттуда
Благодарил (а): 54 раза
Поблагодарили: 103 раза

Re: Ошибки в панели управления search.google

Сообщение Perfecthus »

Я у себя на форуме сделал, много лет назад и все работает по сей день. Да, разбирался долго, но все получилось.
По-факту, чтобы микроразметка работала как нужно и была валидной на 100%, нужно туеву хучу файлов перелопатить, причем даже в расширениях, которые участвуют в формировании сообщения в форуме.
Аватара пользователя
Kuskow
phpBB 2.0.5
Сообщения: 471
Стаж: 10 лет 1 месяц
Откуда: 🇰🇿 Караганда
Благодарил (а): 29 раз
Поблагодарили: 46 раз

Re: Ошибки в панели управления search.google

Сообщение Kuskow »

Тоже разбираюсь потихоньку. Не так страшен чёрт, как я его себе намалевал. Уже понял, как это работает и что нужно исправить - теперь дело за ленью.

А пока проанализировал свои ошибки первой версии, а также огрехи смежного форума, где давно работает эта микроразметка, но сделана совсем иначе (наверное, каким-нибудь тяжёлым расширением). Состряпал и внедрил у себя облегчённый вариант - эдакий DiscussionForumPosting Lite. Прошу покритиковать. Размечаются только темы, но пока не комментарии. Для Гугла вполне достаточно, чтобы он не выводил пердупреждающую надпись:
Google Search Console писал(а):⭕ На ряде страниц вашего форума (1000) отсутствуют структурированые данные для форумов
После того как они будут внедрены, алгоритмы Google смогут выявлять обсуждения на вашем форуме и разными способами показывать их в Google Поиске.

По-прежнему исправляем только один файл styles/prosilver/template/viewtopic_body.html. Там находим строку:

Код: Выделить всё

<div class="content">{postrow.MESSAGE}</div>

И заменяем её на этот код:

Код: Выделить всё

{% set S_FIRST_PAGE = ('start=' not in U_CANONICAL) %}
<!-- IF S_FIRST_PAGE and postrow.S_FIRST_ROW -->
  <div itemscope itemtype="https://schema.org/DiscussionForumPosting">
    <meta itemprop="mainEntityOfPage" content="{U_CANONICAL}" />
    <meta itemprop="url" content="{U_CANONICAL}#p{postrow.POST_ID}" />
    <meta itemprop="headline" content="{TOPIC_TITLE}" />
    <meta itemprop="datePublished" content="{postrow.POST_DATE_RFC3339}" />
    <div itemprop="author" itemscope itemtype="https://schema.org/Person">
      <meta itemprop="url" content="{U_CANONICAL}#user{postrow.POSTER_ID}" />
      <meta itemprop="name" content="{postrow.POST_AUTHOR}" />
    </div>
    {% set total_replies = TOTAL_POSTS|split(' ')|first %}
    <!-- IF total_replies --><meta itemprop="commentCount" content="{total_replies}" /><!-- ENDIF -->
    {% set first_post_img = postrow.MESSAGE|split('src="')|slice(1, 1)|join|split('"')|first %}
    <!-- IF first_post_img --><meta itemprop="image" content="{first_post_img}" /><!-- ENDIF -->
    {% set avatar_img = postrow.POSTER_AVATAR|split('src="')|slice(1, 1)|join|split('"')|first %}
    <!-- IF avatar_img --><meta itemprop="image" content="{avatar_img}" /><!-- ENDIF -->
    <div itemprop="text" class="content">{postrow.MESSAGE}</div>
  </div>
<!-- ELSE -->
  <div class="content">{postrow.MESSAGE}</div>
<!-- ENDIF -->

После редактирования файла нужно очистить кэш форума в админ-панели. Для проверки правильности настройки микроразметки используем Инструмент проверки расширенных результатов Google (Rich Results Test) https://search.google.com/test/rich-results
Там Выбираем проверку по URL и вставляем прямую ссылку на тему. Если страница берётся старая из кэша, можно добавить в конец URL какой-нибудь несуществующий параметр с уникальным значением при каждой проверке, например, &test=1.

Изображение
Мои разработки в phpBB: php-антибот, антибот Nginx, DiscussionForumPosting.
Аватара пользователя
Kuskow
phpBB 2.0.5
Сообщения: 471
Стаж: 10 лет 1 месяц
Откуда: 🇰🇿 Караганда
Благодарил (а): 29 раз
Поблагодарили: 46 раз

Re: Ошибки в панели управления search.google

Сообщение Kuskow »

И для тех, кто вставляет видео в сообщения через [media] добавил обработку видео. Внедрять так же, как в предыдущем сообщении я написал, только код немного другой:

Код: Выделить всё

{% set S_FIRST_PAGE = ('start=' not in U_CANONICAL) %}
{% if S_FIRST_PAGE and postrow.S_FIRST_ROW %}
  <div itemscope itemtype="https://schema.org/DiscussionForumPosting">
    <meta itemprop="mainEntityOfPage" content="{U_CANONICAL}" />
    <meta itemprop="url" content="{U_CANONICAL}#p{postrow.POST_ID}" />
    <meta itemprop="headline" content="{TOPIC_TITLE}" />
    <meta itemprop="datePublished" content="{postrow.POST_DATE_RFC3339}" />
    <div itemprop="author" itemscope itemtype="https://schema.org/Person">
      <meta itemprop="url" content="{U_CANONICAL}#user{postrow.POSTER_ID}" />
      <meta itemprop="name" content="{postrow.POST_AUTHOR}" />
    </div>
    <meta itemprop="commentCount" content="{{ TOTAL_POSTS|split(' ')|first }}" />
    {% set post_img = (postrow.MESSAGE ~ postrow.POSTER_AVATAR)|split('src="')|slice(1, 1)|join|split('"')|first %}
    {% if post_img %}<meta itemprop="image" content="{post_img}" />{% endif %}
    {% set first_post_video = postrow.MESSAGE|split('data-url="')|slice(1, 1)|join|split('"')|first %}
    {% if first_post_video %}
      <div itemprop="sharedContent" itemscope itemtype="https://schema.org/VideoObject">
        <meta itemprop="url" content="{first_post_video}" />
        <meta itemprop="embedUrl" content="{first_post_video}" />
        <meta itemprop="name" content="{postrow.POST_SUBJECT}" />
        <meta itemprop="description" content="Видео в сообщении: {postrow.POST_SUBJECT}" />
        <meta itemprop="uploadDate" content="{postrow.POST_DATE_RFC3339}" />
        <meta itemprop="thumbnailUrl" content="{% if post_img %}{post_img}{% else %}https://youtube.com/img/desktop/yt_1200.png{% endif %}" />
      </div>
    {% endif %}
    <div itemprop="text" class="content">{postrow.MESSAGE}</div>
  </div>
{% else %}
  <div class="content">{postrow.MESSAGE}</div>
{% endif %}

Изображение
Мои разработки в phpBB: php-антибот, антибот Nginx, DiscussionForumPosting.

Вернуться в «Поддержка phpBB 3.3.x»