Google跟踪代码管理器数据层变量未定义-Shopify

问题描述

我正在使用Shopify变量尝试通过数据层推送数据以在特定页面的Schema中使用。我用一个代码段来做到这一点:

<!-- GTM Product @R_983_4045@ion via Data Layer -->

{% if product.url contains 'products' %}
{%- assign current_variant = product.selected_or_first_available_variant -%}
  <script>
   window.dataLayer = window.dataLayer || [];
   window.dataLayer.push({
      'gtm_product_url': '{{ product.url }}','gtm_product_title' : '{{ product.title }}','gtm_product_image' : '{{ product.featured_image }}','gtm_product_description' : '{{ product.description | strip_html | strip_newlines | replace: '"','' }}','gtm_date' : '{{'Now' | date: '%Y-%m-%d' }}','gtm_sku' : '{{ current_variant.sku }}'
   });
  </script>
{% endif %}


{% if page.url contains 'pages' %}
  <script>
   window.dataLayer = window.dataLayer || [];
   window.dataLayer.push({
      'gtm_page_title': '{{ page.title }}','gtm_page_published': {{ page.published_at }},'gtm_page_image' : {{ page_image | img_url }},'gtm_page_description' : {{ page_description }}
   });
  </script>
{% endif %}

我在Google跟踪代码管理器中添加了变量。数据很好地显示页面上(使用Shopify变量)。产品页面实际上正在将数据推送到GTM。

我的问题出在“页面”上。我在Shopify的页面上看到了数据,并且已将变量添加到GTM中,但是当我尝试将其添加到GTM时,它们都显示为未定义。

我不确定我在做什么错。任何见解将不胜感激!

解决方法

您的代码工作正常,但是如果您没有注意到,则无需将值括在页面部分的引号中。您现有的不带引号的代码

未捕获的SyntaxError:意外令牌':'

包装引号,应该可以正常工作。

{% if page.url contains 'pages' %}
  <script>
   window.dataLayer = window.dataLayer || [];
   window.dataLayer.push({
      'gtm_page_title': "{{ page.title }}",'gtm_page_published': "{{ page.published_at }}",'gtm_page_image' : "{{ page_image | img_url }}",'gtm_page_description' : "{{ page_description }}"
   });
  </script>
{% endif %}

此外, console.log 值用于测试以查看您是否收到了预期值。