0

我想将产品 ID 和价格添加到 OXID Eshop 中的谷歌标签管理器数据层。有没有一种简单的方法可以做到这一点?

我想我也许可以编辑这里建议的代码:List of multiple products into php datalayer 但我对氧化代码太不熟悉了。

这是我尝试过的,例如:

<script>
  dataLayer = [{
    'product': '$oView->getProduct()',
    'price': 'various-price-variables'
  }];
</script>

另外:$oViewConf->getActArticleId()oxArticle和其他变体。显然这些都不起作用。任何帮助将非常感激。

4

1 回答 1

1

您不能简单地将服务器端 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. 您可以对整个 $oArticle 对象进行 json_encode 编码var product = [{$oArticle|json_encode}];,但这可能会暴露一些您通常不希望人们看到的产品数据,例如购买价格或实际库存。您只能获得也存储在数据库中的信息,而不是动态计算的内容,例如实际价格,包括当前折扣或产品 url。

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

于 2019-11-21T12:51:57.630 回答