自定义面包屑的GTM变量

Custom GTM Variable for Breadcrumbs

本文关键字:GTM 变量 面包 自定义      更新时间:2023-09-26

我正在尝试创建一个自定义的GTM JavaScript变量,该变量将返回JSON-LD中特定面包屑链接的值。

然而,我写的循环只返回第一个值:

JavaScript (GTM变量)

function() { 
    var bcLink = document.getElementsByClassName("bcLink");
    for (i=0; i<bcLink.length; i++) { 
        return bcLink[i].getAttribute("href");
    }
}

<ul class="breadcrumbs">
    <li><a class="bcLink" href="http://www.site1.com">Home</a></li>
    <li><a class="bcLink" href="http://www.site2.com">Dumpsters</a></li>
    <li><a class="bcLink" href="http://www.site3.com">State</a></li>
    <li><a class="bcLink active" href="http://www.site4.com">City</a></li>
</ul>

输出JSON-LD

{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"http://www.site1.com","name":"Dumpsters"}},{"@type":"ListItem","position":2,"item":{"@id":"http://www.site1.com","name":"Dumpsters"}},{"@type":"ListItem","position":3,"item":{"@id":"http://www.site1.com","name":"Dumpsters"}},{"@type":"ListItem","position":4,"item":{"@id":"http://www.site1.com","name":"Dumpsters"}}]}}

您可以看到只有"http://www.site1.com"被打印为"@id"

任何想法?

您设置的自定义JavaScript变量将只返回第一个值。

这是由于return语句,一旦脚本求值,它将返回当前值,即索引0并关闭循环。因此,它将只返回第一个索引。

由于您不能将值传递给自定义javascript变量,因此您需要返回一个格式化的对象以供使用。

function() { 
var bcLink = document.getElementsByClassName("bcLink");
var data = [];
for (i=0; i<bcLink.length; i++) { 
// you will need to create/format the data suitable to your needs
data.push({ 'url' : bcLink[i].getAttribute("href") });
}
//return the data object to use elsewhere
return data;
}