将 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() 方法。

你有两种可能:

  1. 你可以直接将oxArticle属性映射到你需要的数据层变量,像这样: (注意 smarty 标签周围的单引号以匹配 javascript 对象属性的数据类型)
var product = {
    'name': '[{$oArticle->oxarticles__oxtitle->value}]',
    'id': '[{$oArticle->oxarticles__oxartnum->value}]',
    'price': [{$oArticle->oxarticles__oxprice->value}]
};
  1. 您可以 json_encode 整个 $oArticle 对象 var product = [{$oArticle|json_encode}]; 但这可能会暴露一些您通常不希望人们看到的产品数据,例如购买价格或实际库存。您只能获得同样存储在数据库中的信息,而不是动态计算的内容,例如实际价格,包括当前折扣或产品 url.

另外,欢迎大家看看我的标签管理器模块: https://github.com/vanilla-thunder/oxid-module-tag-manager