Javascript 如何使用JSON-LD和变量将Google标记管理器与多个模式产品评论结合使用

Javascript 如何使用JSON-LD和变量将Google标记管理器与多个模式产品评论结合使用,javascript,html,schema,google-tag-manager,json-ld,Javascript,Html,Schema,Google Tag Manager,Json Ld,因此,我正在使用Google Tag Manager将模式JSON-LD产品评论添加到一些页面,我被卡住了,无法找到关于这个问题的任何资源 我遇到的问题是如何告诉GTM有多个元素,它们应该在JSON-LD中重复,每个元素都有其唯一的值 我用来获取值的方法是使用CSS选择器,它们不是唯一的,因为在某些页面上它们可以出现20次,在其他页面上可以出现30次。变量由Google GTM获得 在我添加的所有页面上使用Google Tag Manager自定义HTML (功能(){ 变量数据={ //这只

因此,我正在使用Google Tag Manager将模式JSON-LD产品评论添加到一些页面,我被卡住了,无法找到关于这个问题的任何资源

我遇到的问题是如何告诉GTM有多个元素,它们应该在JSON-LD中重复,每个元素都有其唯一的值

我用来获取值的方法是使用CSS选择器,它们不是唯一的,因为在某些页面上它们可以出现20次,在其他页面上可以出现30次。变量由Google GTM获得

在我添加的所有页面上使用Google Tag Manager自定义HTML


(功能(){
变量数据={
//这只出现一次。
“@context”:”http://schema.org",
“@type”:“产品”,
“名称”:“{name}}”,
“聚合”:
{
“@type”:“聚合”,
“评级值”:“{rating}}”,
“reviewCount”:“{{ratingCount}”
}
//每次找到变量{{customer}}时,都需要重复这段代码
“审查”:[
{
“@type”:“Review”,
“作者”:“{customer}}”,
“datePublished”:“{date}}”,
“名称”:“{desc}}”,
“审阅体”:“{{say}}”,
“复习”:{
“@type”:“评级”,
“ratingValue”:“{{customValue}}”
}]
}
var script=document.createElement('script');
script.type=“应用程序/ld+json”;
script.innerHTML=JSON.stringify(数据);
document.getElementsByTagName('head')[0].appendChild(脚本);
})(文件);
遗憾的是,在测试之后,我无法以统一的方式重复JSON-LD的审查部分。事实上,我无法在JSON中获得超过一个审查周期,显然我的代码和GTM设置有问题

然后使用DOM元素和CSS选择器在Google TAG manager中设置变量,如下所示:

有时页面上会出现多个评论,因此我需要JSON中的多个条目,我当前的代码最多只输出一个条目


问题是,如果页面上有多个产品评论,如何让GTM在JSON-LD中添加另一个评论?

您可以使用自定义JavaScript变量存储值数组,然后将这些数组的元素设置为JSON-LD中的值

例如,要获取H1标记的文本,可以使用以下函数创建自定义JavaScript变量:

function () {return document.querySelector('h1').innerText;}
假设您将这个变量命名为h1,那么您可以在JSON-LD中将这个变量命名为{{h1}}

JSON-LD代码可以存储在自定义HTML标记中,并用上述变量填充

如果页面上有多个H1,则可以使用此变量:

function () {return  document.querySelectorAll('h1');}
它将返回一个元素数组,您可以通过该数组循环获取innerText,或者只查看每个元素,如:

{{h1}}[0].innerText
让我在这篇博客文章示例中展示我的想法-。你可以从页面中获得所有H2标题(或评论或任何内容),如下所示:

var allh2 = document.querySelectorAll('h2');
就GTM而言,它可以是自定义JavaScript变量,也可以使用JSON-LD构建一个自定义HTML标记。接下来,创建空数组来存储这些标题的内部文本,并将所有值作为JSON-LD表示法中的对象推送:

var reviews = [];
for(i = 0; i < allh2.length; i ++){ 
  reviews.push({'review':allh2[i].innerText});
}
var reviews=[];
对于(i=0;i

现在您有了reviews变量,可以在JSON-LD标记中用作“reviews”的值关键。

我们的想法是使用GTM从HTML中获取这些值。自定义JavaScript变量可以让您这样做。请您编辑您的问题,并使用我提供的代码包含代码演示,否则答案质量很低,至少没有多大帮助。我正在代码或权威答案中寻找答案基于GTM文档。好的,我知道你的示例是什么,但是如果在页面上找到多个值,你如何告诉JSON重复?自定义JavaScript变量是GTM中的一种变量类型,我的答案是关于使用这种变量。
var reviews = [];
for(i = 0; i < allh2.length; i ++){ 
  reviews.push({'review':allh2[i].innerText});
}