问题描述
我正在使用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 值用于测试以查看您是否收到了预期值。