У меня нет проблем с созданием переменных GTM из «простого» dataLayer, пример:
"transactionEntity": "ORDER",
"transactionId": "193552702",
Но не могу понять, как извлечь значения из объекта. В основном мне нужно взять значения из этого dataLayer:
var dataLayer = [({
"productReviews": [{
"name": "Donna S. - Stockton, CA",
"datePublished": "2016-01-01",
"ratingValue": "5",
"reviewBody": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
}, {
"name": "Sharon N. - Belfast, UK",
"datePublished": "2016-02-01",
"ratingValue": "5",
"reviewBody": "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam."
}, {
"name": "Elizabeth M. - Richmond, VA",
"datePublished": "2016-03-01",
"ratingValue": "5",
"reviewBody": "At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos."
}],
})]
И передайте значения name, datePublished, ratingValue, reviewBody в следующую переменную GTM:
<script type="application/ld+json">
{
"review": [{
"@type": "Review",
"author": {
"@type": "Person",
"name": ""
},
"datePublished": "",
"reviewRating": {
"@type": "Rating",
"ratingValue": "",
"bestRating": "5",
"worstRating": "1"
},
"reviewBody": ""
}, {
"@type": "Review",
"author": {
"@type": "Person",
"name": ""
},
"datePublished": "",
"reviewRating": {
"@type": "Rating",
"ratingValue": "",
"bestRating": "5",
"worstRating": "1"
},
"reviewBody": ""
}, {
"@type": "Review",
"author": {
"@type": "Person",
"name": ""
},
"datePublished": "",
"reviewRating": {
"@type": "Rating",
"ratingValue": "",
"bestRating": "5",
"worstRating": "1"
},
"reviewBody": ""
}]
}
</script>
ОБНОВЛЕНИЕ: согласно ответу vinoaj, я сделал следующее:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Product",
"name": "{{dataLayerProductName}}",
"sku": "{{dataLayerProductId}}",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "{{dataLayerRatingValue}}",
"reviewCount": "{{dataLayerReviewCount}}"
},
"review": [
var productReviews = {{dataLayerProductReviews}};
for (i = 0, l = productReviews.length; i < l; i++){
var r = productReviews[i];
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "r.name"
},
"datePublished": "r.datePublished",
"reviewRating": {
"@type": "Rating",
"ratingValue": "r.ratingValue",
"bestRating": "5",
"worstRating": "1"
},
"reviewBody": "r.reviewBody"
},
}]
}
</script>
но это дает и ошибку " Синтаксическая ошибка: ожидаемое значение, объект или массив ."
p.s. Я знаю, что обновление вопроса не является правильным способом сделать это, но нет способа вставить код в комментарии в удобочитаемой форме.