Google跟踪代码管理器:在GTM商家代码中使用页面html上定义的Javascript变量?

时间:2017-11-04 13:40:05

标签: javascript php html magento google-tag-manager

我正在尝试通过GTM在商品结帐/收益页面上整合Google商家代码。 Google Merchant代码为:

<script>
 window.renderOptIn = function() {
  window.gapi.load('surveyoptin', function() {
    window.gapi.surveyoptin.render(
    {
      "merchant_id": 12345678,
      "order_id": "ORDER_ID",
      "email": "CUSTOMER_EMAIL",
      "delivery_country": "COUNTRY_CODE",
      "estimated_delivery_date": "YYYY-MM-DD"
     });
   });
 }
</script>

代码需要一些变量(order_id,email,delivery_country,estimated_delivery_date)。但是这些变量值只能通过Magento / Php代码检索为:          var gmorderid =&#34; loadByIncrementId($ this-&gt; getOrderId()) - &gt; getId(); ?&GT;&#34 ;;

var gmcemail = "<?php echo Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId())->getCustomerEmail(); ?>";

var gmcountry = "<?php echo Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId())->getBillingAddress()->getCountry(); ?>";

var gmdate = "<?php echo date('Y-m-d',  strtotime('+5 days',Mage::getModel('core/date')->timestamp())); ?>";
</script>

我已经尝试通过php echo语句将这些变量放在GTM代码中,如上所示。但是当触发GTM标记时,php代码将转换为计划文本。作为一个解决方案,我在页面html中定义了变量,并在GTM代码中插入这些变量,如:

"order_id": gmorderid, //doesnot work. Variable shown as plan text when the code is executed
 "order_id'":'+ gmorderid +'"', // also doesnot work, Variable shown as plan text when the code is executed
"order_id'":'+ {{gmorderid}} +'"', // GTM variable format, this also doesnot work

如何在上面的GTM google商家代码中使用这些变量值,以便GTM代码获取打开页面时所需的所有值?

2 个答案:

答案 0 :(得分:0)

您应该将值保存在全局JavaScript变量或dataLayer中,然后使用GTM JavaScript变量或dataLayer变量检索这些值。

例如,使用您的后端创建全局JavaScript变量order_number并为其指定值12345。

然后在GTM中使用JavaScript变量类型创建一个新变量。此变量应从order_number全局JS变量获取值。假设您将此GTM变量命名为CJS - order_number。

现在您创建自定义HTML标记并使用刚刚创建的GTM JS变量来从order_number全局JS变量传递所需的值。您可以使用{{CJS - order_number}}之类的双花括号表示法来执行此操作。此表示法仅适用于内部GTM变量。

答案 1 :(得分:0)

在Magento (在GTM代码段之后添加js)

dataLayer.push({
  'order_id': '<?php echo $this->getOrderId(); ?>',
  'email': '<?php echo Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId())->getCustomerEmail(); ?>',
  'delivery_country': '<?php echo Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId())->getBillingAddress()->getCountry(); ?>',
  'estimated_delivery_date': '<?php echo date('Y-m-d',  strtotime('+5 days',Mage::getModel('core/date')->timestamp())); ?>'
});

在Google跟踪代码管理器中:

  1. 使用&#34; dataLayer&#34;
  2. 类型添加4个变量
  3. 将变量名称设置为order_id,电子邮件等。
  4. 在您的代码中使用变量{{order_id}}等。