Модуль Поддержка разметки JSON-LD в карточках товаров

therion.kiev

Постоялец
Регистрация
27 Фев 2014
Сообщения
80
Реакции
50
Маленькая доработка для сиплы. Суть - поддержка разметки JSON-LD в карточках товаров (помимо обычной микроразметки schema.org и opengraph)
( Для просмотра ссылки Войди или Зарегистрируйся | Для просмотра ссылки Войди или Зарегистрируйся )
Видимо такая разметка будет влиять на SEO и ранжирование сайта, раз google добавил инструменты для работы с ней в консоль. Google вообще ничего просто так не делает =)
П.С: Яндекс тоже поддерживает такой формат разметки ( Для просмотра ссылки Войди или Зарегистрируйся )

Установка:
1) Открываем файл product.tpl
2) В конце страницы вставляем код под спойлером
3) Проверяем результат в инструментах гугла
4) Радуемся

Код:
{* Расширенные подсказки Google *}
{literal}
    <script type="application/ld+json">
    {
      "@context": "http://schema.org/",
      "@type": "Product",
      "name": "{/literal}{$product->name|escape}{literal}",
      "image": "{/literal}{$product->image->filename|resize:330:300}{literal}",
      "description": "{/literal}{$product->annotation|strip_tags}{literal}",
      "mpn": "{/literal}{if $product->variant->sku}{$product->variant->sku}{else}Не вказано{/if}{literal}",
      "brand": {
        "@type": "Thing",
        "name": "{/literal}{$brand->name|escape}{literal}"
      },
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": "{/literal}{$product->rating|string_format:'%.1f'}{literal}",
        "reviewCount": "{/literal}{$product->votes|string_format:'%.0f'}{literal}"
      },
      "offers": {
        "@type": "Offer",
        "priceCurrency": "{/literal}{$currency->code|escape}{literal}",
        "price": "{/literal}{$product->variant->price|convert|replace:',':'.'}{literal}",
        "priceValidUntil": "{/literal}{$smarty.now|date_format:'%Y-%m-%d'}{literal}",
        "itemCondition": "http://schema.org/UsedCondition",
        "availability": "http://schema.org/InStock",
        "seller": {
          "@type": "Organization",
          "name": "{/literal}{$settings->company_name}{literal}"
        }
      }
    }
    </script>
{/literal}
{* @Расширенные подсказки Google *}
 
Последнее редактирование:

babahalki

Постоялец
Регистрация
6 Май 2016
Сообщения
247
Реакции
107
Маленькая доработка для сиплы. Суть - поддержка разметки JSON-LD в карточках товаров (помимо обычной микроразметки schema.org и opengraph)
( Для просмотра ссылки Войди или Зарегистрируйся | Для просмотра ссылки Войди или Зарегистрируйся )
Видимо такая разметка будет влиять на SEO и ранжирование сайта, раз google добавил инструменты для работы с ней в консоль. Google вообще ничего просто так не делает =)
П.С: Яндекс тоже поддерживает такой формат разметки ( Для просмотра ссылки Войди или Зарегистрируйся )

Установка:
1) Открываем файл products.tpl
2) В конце страницы вставляем код под спойлером
3) Проверяем результат в инструментах гугла
4) Радуемся

Код:
{* Расширенные подсказки Google *}
{literal}
    <script type="application/ld+json">
    {
      "@context": "http://schema.org/",
      "@type": "Product",
      "name": "{/literal}{$product->name|escape}{literal}",
      "image": "{/literal}{$product->image->filename|resize:330:300}{literal}",
      "description": "{/literal}{$product->annotation|strip_tags}{literal}",
      "mpn": "{/literal}{if $product->variant->sku}{$product->variant->sku}{else}Не вказано{/if}{literal}",
      "brand": {
        "@type": "Thing",
        "name": "{/literal}{$brand->name|escape}{literal}"
      },
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": "{/literal}{$product->rating|string_format:'%.1f'}{literal}",
        "reviewCount": "{/literal}{$product->votes|string_format:'%.0f'}{literal}"
      },
      "offers": {
        "@type": "Offer",
        "priceCurrency": "{/literal}{$currency->code|escape}{literal}",
        "price": "{/literal}{$product->variant->price|convert|replace:',':'.'}{literal}",
        "priceValidUntil": "{/literal}{$smarty.now|date_format:'%Y-%m-%d'}{literal}",
        "itemCondition": "http://schema.org/UsedCondition",
        "availability": "http://schema.org/InStock",
        "seller": {
          "@type": "Organization",
          "name": "{/literal}{$settings->company_name}{literal}"
        }
      }
    }
    </script>
{/literal}
{* @Расширенные подсказки Google *}

Нашел ошибку. В таком виде гугл не может распознать цену, необходимо убрать convert, тогда все ок.
 

vit2010

Постоялец
Регистрация
9 Дек 2017
Сообщения
85
Реакции
69
Доброе время суток.
Вы не могли бы пояснить...
"2) В конце страницы вставляем код под спойлером"
нужно скопипастить этот код в конце кода в файле product.tpl?
У меня установлен 1.6.1.22.
Код в файле заканчивается строками:
784{addJsDefL name='product_fileButtonHtml'}{l s='Choose File' js=1}{/addJsDefL}
785{/strip}
786{/if}

Выше приведенный код вставлял после этих строк. После этого любая страница товара открывалась с ошибкой 500.
Код вставлял с полным отключением кеширования.

Вставил скрипт в <body></body> в header.tpl. Но цена не работает, отображается 0.
Так же привел строку к виду:
"price": "{$product->variant->price|replace:',':'.'}",
В таком виде
"price": "{$product->variant->price|convert|replace:',':'.'}",
и в таком виде
"price": "{/literal}{$product->variant->price|convert|replace:',':'.'}{literal}",
сайт выдает ошибку 500.
 
Последнее редактирование модератором:

koperator

Писатель
Регистрация
3 Июл 2019
Сообщения
6
Реакции
5
По инструкции выше протестировал на 2 своих сайтах
1. Версия Simpla 2.2.4 - работает
Код:
<script type="application/ld+json">
    {
      "@context": "http://schema.org/",
      "@type": "Product",
      "name": "Кофе в зернах арабика Бразилия Бурбон (500 г)",
      "image": "https://coffeestore.in.ua/files/products/%D0%91%D1%80%D0%B0%D0%B7%D0%B8%D0%BB%D0%B8%D1%8F-%D0%91%D1%83%D1%80%D0%B1%D0%BE%D0%BD.330x300.png?96889ebe289a322e7cae1d7fc2314f3c",
      "description": "",
      "mpn": "2422",
      "brand": {
        "@type": "Thing",
        "name": "Wiener Kaffee"
      },
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": "0.0",
        "reviewCount": "0"
      },
      "offers": {
        "@type": "Offer",
        "priceCurrency": "UAH",
        "price": "277",
        "priceValidUntil": "2019-07-09",
        "itemCondition": "http://schema.org/UsedCondition",
        "availability": "http://schema.org/InStock",
        "seller": {
          "@type": "Organization",
          "name": "CoffeStore.in.ua"
        }
      }
    }
    </script>

1. Версия Simpla 2.3.7 - работает
Код:
    <script type="application/ld+json">
    {
      "@context": "http://schema.org/",
      "@type": "Product",
      "name": "Набор в детскую кроватку Руно Карапузик салатовый",
      "image": "https://sonna.com.ua/files/products/977ku_salatovij.330x300.jpg?00f52e865d697a6f889bdbbe05d2a959",
      "description": " Размер: детское (младенцам)  Ткань: бязь&nbsp;гладкокрашенная и бязь набивная, 100% хлопок  Наполнитель: силикон, 100% полиэстер  Пододеяльник: 112х147 см. (1 шт)  Простынь:120х60 см. на резинке (1 шт)  Наволочки: 40х60 см. (1 шт)  Защитное ограждение: 360х39 см.  Цвет: салатовый  Производитель: Украина  Упаковка: сумка ПВХ ",
      "mpn": "977КУ_Салатовий",
      "brand": {
        "@type": "Thing",
        "name": "Руно"
      },
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": "0.0",
        "reviewCount": "0"
      },
      "offers": {
        "@type": "Offer",
        "priceCurrency": "UAN",
        "price": "610",
        "priceValidUntil": "2019-07-09",
        "itemCondition": "http://schema.org/UsedCondition",
        "availability": "http://schema.org/InStock",
        "seller": {
          "@type": "Organization",
          "name": "sonna.com.ua"
        }
      }
    }
    </script>
 

vit2010

Постоялец
Регистрация
9 Дек 2017
Сообщения
85
Реакции
69
Спасибо за ответ.
Моя проблема была в том, что я использовал переменные из этой инструкции в другом скрипте, который нашел на Github.
В этом скрипте используется также настройка для комбинаций товаров, что и у меня присутствует тоже.
(скрипт перенастроил под свои задачи, это не оригинал)
 

vit2010

Постоялец
Регистрация
9 Дек 2017
Сообщения
85
Реакции
69
Всем доброго дня.
Прошу помощи в настройке
"@type": "AggregateRating",
"ratingValue": "{/literal}{$product->rating|string_format:'%.1f'}{literal}",
"reviewCount": "{/literal}{$product->votes|string_format:'%.0f'}{literal}"
В таком виде выдает ошибку 500.

"@type": "AggregateRating",
"ratingValue": "{$product->rating|string_format:'%.1f'}",
"reviewCount": "{$product->votes|string_format:'%.0f'}"
в таком виде ошибки нет, но в гугловском тестере значения не отображаются.
в разметке microdata Для просмотра ссылки Войди или Зарегистрируйся" все работает.
Для отзывов используется модуль gsnippetsreviews 4.2.1. PS 1.6.1.22.
Прописал переменные из модуля, получилось следующее:
{if isset($iCountReviews) && $iCountReviews && $aReview.rating.note}"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "{$aReview.rating.note}",
"reviewCount": "{$iCountReviews}"
},{/if}
Тоже не работает.
 

vit2010

Постоялец
Регистрация
9 Дек 2017
Сообщения
85
Реакции
69
Доброе утро.
Спасибо за ответ!
Я на данный момент использую скрипт из поста #5.
В чем именно косяк с тегом {literal}?
Должно быть так?
"ratingValue": "{literal}{$product->rating|string_format:'%.1f'}{/literal}",
"reviewCount": "{literal}{$product->votes|string_format:'%.0f'}{/literal}"
 

new_bember

Создатель
Регистрация
1 Сен 2009
Сообщения
23
Реакции
6
По инструкции выше протестировал на 2 своих сайтах
1. Версия Simpla 2.2.4 - работает
Код:
<script type="application/ld+json">

        "priceCurrency": "UA[B]N[/B]",
        "price": "277",
        "priceValidUntil": "2019-07-09",
        "itemCondition": "http://schema.org/[B]Used[/B]Condition",

[/QUOTE]
Во втором с валютой что-то. А почему не почитать про схему разметки и на фига тупо копировать? Поставь: "itemCondition": "http://schema.org/[B]New[/B]Condition"
 

vit2010

Постоялец
Регистрация
9 Дек 2017
Сообщения
85
Реакции
69
Всем доброго времени суток!
PS 1.7.6.5
Подскажите:
правильно ли размещение микроразметки json+ld в сайт/themes/тема/templates/_partials/head.tpl?
правильно ли выражение проверки страницы товара "{if $page_name == 'product'}" или в 1.7 это по другому пишется?
Спасибо!
 
Сверху