Недопустимый тип объекта в поле "itemReviewed"

Narberal Gamma

Проверенные
Сообщения
747
Решения
11
Реакции
203
Баллы
375
Недопустимый тип объекта в поле "itemReviewed"
Дата обнаружения: 12.02.2021
Статус: Ошибка

Здарова. Такая ошибка у меня появилась второй раз. Я так понимаю, что это связано с тем, что я ресурсы сам оцениваю которые свои опубликовал. Конечно, я без описание ставлю 5-4-3-2-1 звезду в менеджере ресурсов.

Это критическая ошибка? Она повлияет сильно и как с ней бороться. Оставлять материалы без оценки (рецензии).
 

Вложения

  • Screenshot_2021-07-04-14-14-07-071_com.android.chrome.jpg
    Screenshot_2021-07-04-14-14-07-071_com.android.chrome.jpg
    348.3 KB · Просмотры: 32
Я так понимаю, что это связано с тем, что я ресурсы сам оцениваю которые свои опубликовал
Нет. Это связано с тем как гугл определил микроразметку.
Чья оценка для него не важно.

Это критическая ошибка? Она повлияет сильно и как с ней бороться
Нет.
Просто звездочек не будет в выдаче гугла на оцененных ресурсах.
Что-бы гугл воспринял разметку как корректную ее нужно немного изменить.
В сети есть примеры разметок.
 
Недавно обратил внимание у себя на эту ошибку, изучив вопрос, то разраб Крис ( и ) говорит, что это не ошибка, а так хрень и забейте на неё😆. Гуглу то всё равно и будет долбить, так что по возможности решаем вариантом ниже. Да и ошибка влияет именно на отображение системы оценки в отзывах ресурса на поиске гугла, если игнорите ошибку, то просто гугл не будет выводить отзывы, только и всего. На общую работу оно никак не сказывается.

Создаем модификатор.
Шаблон: xfrm_resource_view
Найти: "@type": "CreativeWork",
Заменить: "@type": "CreativeWorkseries",
После в консоли гугла запускаем проверку и после анализа получим, что результата проверки начался, что говорит о том, что нужное изменение увидел.
Снимок экрана 2025-04-05 094701.png
После этого, прогоните тесты URL на работу тут:
или
Чтобы убедиться, что нет других ошибок, а если есть, то разбираться дальше.

Спустя где-то 2-3 дня получим приятный отчёт:
1744048643969.png

Помимо этого, у гугла есть список схем, которые он допускает, вы можете попробовать поставить любой из подходящих вам:
Код:
http://schema.org/Book
http://schema.org/Course
http://schema.org/CreativeWorkSeason
http://schema.org/CreativeWorkSeries
http://schema.org/Episode
http://schema.org/Event
http://schema.org/Game
http://schema.org/HowTo
http://schema.org/LocalBusiness
http://schema.org/MediaObject
http://schema.org/Movie
http://schema.org/MusicPlaylist
http://schema.org/MusicRecording
http://schema.org/Organization
http://schema.org/Product
http://schema.org/Recipe
http://schema.org/SoftwareApplication

А так, сам скрипт в шаблоне выглядит так на xf 2.2: (Ошибка ругается именно на type от schema)
Код:
<xf:page option="ldJsonHtml">
    <script type="application/ld+json">
    {
        "@context": "https://schema.org",
        "@type": "CreativeWork",
        "@id": "{{ link('canonical:resources', $resource)|escape('json') }}",
        "name": "{$resource.title|escape('json')}",
        "headline": "{$resource.title|escape('json')}",
        "alternativeHeadline": "{$resource.tag_line|escape('json')}",
        "description": "{$descSnippet|escape('json')}",
        <xf:if is="$resource.isVersioned()">
            "version": "{$resource.CurrentVersion.version_string|escape('json')}",
        </xf:if>
        <xf:if is="$xf.options.xfrmAllowIcons AND $resource.icon_date">
            "thumbnailUrl": "{{ $resource.getIconUrl('s', true)|escape('json') }}",
        </xf:if>
        "dateCreated": "{{ date($resource.resource_date, 'c')|escape('json') }}",
        "dateModified": "{{ date($resource.last_update, 'c')|escape('json') }}",
        <xf:if is="$resource.rating_count">"aggregateRating": {
            "@type": "AggregateRating",
            "ratingCount": "{$resource.rating_count|escape('json')}",
            "ratingValue": "{$resource.rating_avg|escape('json')}"
        },</xf:if>
        <xf:if is="$resource.hasViewableDiscussion()">
            "discussionUrl": "{{ link('canonical:threads', $resource.Discussion)|escape('json') }}",
        </xf:if>
        "author": {
            "@type": "Person",
            "name": "{{ ($resource.User ? $resource.User.username : $resource.username)|escape('json') }}"
        }
    }
    </script>
</xf:page>
 
Последнее редактирование:
В xf 2.3.x другой код

Код:
<xf:page option="ldJsonHtml">
    <script type="application/ld+json">
        {{ $resource.getLdStructuredData()|json(true)|raw }}
    </script>
</xf:page>
 
В xf 2.3.x другой код

Код:
<xf:page option="ldJsonHtml">
    <script type="application/ld+json">
        {{ $resource.getLdStructuredData()|json(true)|raw }}
    </script>
</xf:page>
Как проверил информацию.
Начиная с версии 2.3, эти данные хранятся не в шаблоне, а в файле
\src\addons\XFRM\Entity\ResourceItem.php
И что строку {{ $resource.getLdStructuredData()|json(true)|raw }} можно просто переделать.
Об этом тут указывают
А вот как правильно, хз. Может формат с 2.2 подойдёт... сложно сказать
Нужная часть скрипта из \src\addons\XFRM\Entity\ResourceItem.php:
Код:
        $mainEntity = [
            '@type' => 'CreativeWork',
            '@id' => $resourceLink,
            'headline' => $this->title,
            'alternativeHeadline' => $this->tag_line,
            'dateCreated' => gmdate('c', $this->resource_date),
            'dateModified' => $this->last_update
                ? gmdate('c', $this->last_update)
                : null,
            'keywords' => implode(', ', array_column($this->tags, 'tag')),
            'url' => $resourceLink,
            'thumbnailUrl' => $options->xfrmAllowIcons && $this->icon_date
                ? $this->getIconUrl('s', true)
                : null,
            'version' => $this->isVersioned()
                ? $this->CurrentVersion->version_string
                : null,
            'discussionUrl' => $this->hasViewableDiscussion()
                ? $this->Discussion->getContentUrl(true)
                : null,
            'description' => $strFormatter->snippetString(
                $this->Description->message,
                0,
                ['stripBbCode' => true]
            ),
            'author' => [
                '@type' => 'Person',
                '@id' => $userLink,
                'name' => $this->User->username ?? $this->username,
                'url' => $userLink,
            ],
            'interactionStatistic' => [
                [
                    '@type' => 'InteractionCounter',
                    'interactionType' => 'https://schema.org/LikeAction',
                    'userInteractionCount' => $this->Description->reaction_score,
                ],
                [
                    '@type' => 'InteractionCounter',
                    'interactionType' => 'https://schema.org/ViewAction',
                    'userInteractionCount' => $this->view_count,
                ],
            ],
        ];
Код:
        $mainEntity = [
            '@type' => 'CreativeWork',
            '@id' => $resourceLink,
            'headline' => $this->title,
            'alternativeHeadline' => $this->tag_line,
            'dateCreated' => gmdate('c', $this->resource_date),
            'dateModified' => $this->last_update
                ? gmdate('c', $this->last_update)
                : null,
            'keywords' => $this->tags
                ? implode(', ', array_column($this->tags, 'tag'))
                : null,
            'url' => $resourceLink,
            'thumbnailUrl' => $options->xfrmAllowIcons && $this->icon_date
                ? $this->getIconUrl('s', true)
                : null,
            'version' => $this->isVersioned()
                ? $this->CurrentVersion->version_string
                : null,
            'discussionUrl' => $this->hasViewableDiscussion()
                ? $this->Discussion->getContentUrl(true)
                : null,
            'description' => $strFormatter->snippetString(
                $this->Description->message,
                0,
                ['stripBbCode' => true]
            ),
            'author' => [
                '@type' => 'Person',
                '@id' => $userLink,
                'name' => $this->User->username ?? $this->username,
                'url' => $userLink,
            ],
            'interactionStatistic' => [
                [
                    '@type' => 'InteractionCounter',
                    'interactionType' => 'https://schema.org/LikeAction',
                    'userInteractionCount' => $this->Description->reaction_score,
                ],
                [
                    '@type' => 'InteractionCounter',
                    'interactionType' => 'https://schema.org/ViewAction',
                    'userInteractionCount' => $this->view_count,
                ],
            ],
        ];
Я в этом не шибко уже разбираюсь, будут у кого какие мысли на тему решения на 2.3?
Хотя может проще на офе спросить.

В общем, для решения на 2.3, нужно писать плагин. Иначе не решить без нарушения целостности. Либо отрубить у себя оценки на ресурсы. Так что, решайте сами или просто забейте на проблему, как Крис и предлагает))) Но по мне, это уже распиздяйство со стороны разработчиков.
 
Последнее редактирование:
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу