Я использую Инструмент тестирования структурированных данных Google для проверки моей схемы.Эта страница является хорошим примером: https://www.bigmazda.com/new-mazda-cx-9-longwood-fl.html.
Я использую Google Tag Manager на вышеуказанном сайте.В GTM я создал пользовательский тег HTML и поместил следующий код:
<script>
(function(){
var schemaData = {
"@context": "http://schema.org/",
"@type": "Product",
"name": "{{schemaName}}",
"image": "{{schemaImage}}",
"description": "{{schemaDescription}}",
"brand": {
"@type": "Thing",
"name": "{{schemaBrandName}}"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "{{schemaRatingValue}}",
"reviewCount": "{{schemaReviewCount}}",
},
"offers": {
"@type": "Offer",
"priceCurrency": "USD",
"price": "{{schemaPrice}}",
"itemCondition": "http://schema.org/NewCondition",
"availability": "http://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "{{schemaSellerName}}"
}
}
}
var script = document.createElement('script');
script.type = "application/ld+json";
script.innerHTML = JSON.stringify(schemaData);
document.getElementsByTagName('head')[0].appendChild(script);
})(document);
</script>
Также в том же пользовательском HTML я включил «Support document.write».
Приведенный выше код имеет восемьПеременные GTM, но следующие четыре доставляют мне неприятности:
{{schemaRatingValue}}
{{schemaReviewCount}}
{{schemaPrice}}
{{schemaName}}
ПРИМЕЧАНИЕ : я получаю остальные четыре переменные нормально, и они проверяются с помощью инструмента тестирования структурированных данных.
Для каждого пункта выше, вот какЯ использую пользовательскую переменную JavaScript в GTM, чтобы получить каждое значение:
function(){
var schemaRatingValue = Number(document.getElementsByClassName('model-review')[0].innerText.split(" ")[1]);
return schemaRatingValue;
}
function(){
var review = document.getElementsByClassName('model-review')[0].innerText.split(" ")[2].replace(/[{()}]/g, '');
var schemaReviewCount = Number(review);
return schemaReviewCount;
}
function(){
var schemaPrice = Number(document.getElementsByClassName('mrPriceRange')[0].innerText.split(" ")[0].replace(/[$,]+/g, ''));
return schemaPrice;
}
function() {
var schemaName = document.getElementsByTagName('h1')[0].getElementsByTagName('span')[0].innerText;
return schemaName;
}
При использовании режима предварительного просмотра GTM я вижу схему, как и ожидалось:
![Inspector View of Product Schema using Chrome in the head section](https://i.stack.imgur.com/Aw5Jn.png)
Однако при использовании тестирования структурированных данныхИнструмент, я вижу это:
![Structured Data Testing Tool Product Schema preview with errors](https://i.stack.imgur.com/KbELC.png)
ПРИМЕЧАНИЕ: С помощью консоли я проверил, что {{schemaRatingValue}}
, {{schemaReviewCount}}
и {{schemaPrice}}
являются typeof целыми числами.Когда дело доходит до {{schemaName}}
, я не уверен, почему это не отображается, потому что это простая строка.
ПРИМЕЧАНИЕ: {{schemaPrice}}
не показывает ошибку, НО показывает 0, он должен отображать 33335, основываясь на снимке экрана инспектора.