将 OXID 产品 ID 和价格添加到 Google 标签管理器的数据层
Adding OXID Product ID and Price to datalayer for Google Tag Manager
我想将产品 ID 和价格添加到 OXID Eshop 中的 google 标签管理器数据层。有没有简单的方法可以做到这一点?
我想我可以编辑此处建议的代码:
但是我对氧化代码太陌生了。
这是我尝试过的,例如:
<script>
dataLayer = [{
'product': '$oView->getProduct()',
'price': 'various-price-variables'
}];
</script>
另外:$oViewConf->getActArticleId()
或 oxArticle
和其他变体。显然 none 这些工作。任何帮助将非常感激。
您不能简单地将服务器端 smarty 变量传递给客户端 javascript,因为 smarty 在浏览器接收 html 之前呈现。 Smarty 试图在那里输出 oxArticle 对象的字符串表示,但据我所知,oxArticles 没有 __toString() 方法。
你有两种可能:
- 你可以直接将oxArticle属性映射到你需要的数据层变量,像这样:
(注意 smarty 标签周围的单引号以匹配 javascript 对象属性的数据类型)
var product = {
'name': '[{$oArticle->oxarticles__oxtitle->value}]',
'id': '[{$oArticle->oxarticles__oxartnum->value}]',
'price': [{$oArticle->oxarticles__oxprice->value}]
};
- 您可以 json_encode 整个 $oArticle 对象
var product = [{$oArticle|json_encode}];
但这可能会暴露一些您通常不希望人们看到的产品数据,例如购买价格或实际库存。您只能获得同样存储在数据库中的信息,而不是动态计算的内容,例如实际价格,包括当前折扣或产品 url.
另外,欢迎大家看看我的标签管理器模块:
https://github.com/vanilla-thunder/oxid-module-tag-manager
我想将产品 ID 和价格添加到 OXID Eshop 中的 google 标签管理器数据层。有没有简单的方法可以做到这一点?
我想我可以编辑此处建议的代码:
这是我尝试过的,例如:
<script>
dataLayer = [{
'product': '$oView->getProduct()',
'price': 'various-price-variables'
}];
</script>
另外:$oViewConf->getActArticleId()
或 oxArticle
和其他变体。显然 none 这些工作。任何帮助将非常感激。
您不能简单地将服务器端 smarty 变量传递给客户端 javascript,因为 smarty 在浏览器接收 html 之前呈现。 Smarty 试图在那里输出 oxArticle 对象的字符串表示,但据我所知,oxArticles 没有 __toString() 方法。
你有两种可能:
- 你可以直接将oxArticle属性映射到你需要的数据层变量,像这样: (注意 smarty 标签周围的单引号以匹配 javascript 对象属性的数据类型)
var product = {
'name': '[{$oArticle->oxarticles__oxtitle->value}]',
'id': '[{$oArticle->oxarticles__oxartnum->value}]',
'price': [{$oArticle->oxarticles__oxprice->value}]
};
- 您可以 json_encode 整个 $oArticle 对象
var product = [{$oArticle|json_encode}];
但这可能会暴露一些您通常不希望人们看到的产品数据,例如购买价格或实际库存。您只能获得同样存储在数据库中的信息,而不是动态计算的内容,例如实际价格,包括当前折扣或产品 url.
另外,欢迎大家看看我的标签管理器模块: https://github.com/vanilla-thunder/oxid-module-tag-manager