Shopify Отслеживание не работает, total_price всегда возвращает null - PullRequest
0 голосов
/ 16 июня 2020

У меня проблема с магазином Shopify клиента, из-за которого наше отслеживание конверсий PP C внезапно перестало работать, и мы не совсем уверены, почему. У нас есть стандартная установка Google Реклама в разделе «Оформление заказа»> «Дополнительные скрипты», которая выглядит следующим образом:

<!-- Global site tag (gtag.js) - Google Ads: ***** -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-*****"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'AW-*****');
</script>
<!-- Event snippet for Purchase conversion page -->
<script>
  gtag('event', 'conversion', {
      'send_to': 'AW-*****/*****',
      'value': {{ total_price | money_without_currency }},
      'currency': 'USD',
      'transaction_id': '{{order.order_number}}'
  });
</script>
{% endif %}

Это та же установка, которую мы используем в нескольких других магазинах, и она отлично работает. Раньше он работал и на этой витрине до прошлой недели, примерно тогда, когда мы переключились на другой канал продаж (с тех пор он был отключен).

Во время устранения неполадок я проверил исходный код и заметил, что группа переменных shopify теперь возвращает null. В частности, total_price принимает значение null и вызывает следующую ошибку Javascript:

Uncaught SyntaxError: Unexpected token ','

Вот как это выглядит, когда я проверяю исходный код страницы.

<!-- Global site tag (gtag.js) - Google Ads: ***** -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-*****"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'AW-*****');
</script>
<!-- Event snippet for Purchase conversion page -->
<script>
  gtag('event', 'conversion', {
      'send_to': 'AW-*****/*****',
      'value': ,
      'currency': 'USD',
      'transaction_id': '3947'
  });
</script>

Итак, total_price | money_without_currency 'явно не возвращает правильное значение, и это нарушает javascript. Если я выведу деньги в виде валюты, это будет выглядеть так:

// This...
<script>console.log({{ total_price | json }});</script>

// Resolves to this
<script>console.log(null);</script>

Я никогда не видел такой проблемы, когда глобальная переменная shopify просто ничего не возвращает.

I заметил еще одно странное отличие этого магазина от других наших действующих магазинов. Между тегами я заметил, что Shopify.Checkout.token также возвращает null

<script type="text/javascript">
  Shopify = window.Shopify || {};

  if (window.opener) {
    window.opener.postMessage(JSON.stringify({"current_checkout_page": null}), "*");
  }

  Shopify.Checkout = Shopify.Checkout || {};
  Shopify.Checkout.apiHost = "*****.myshopify.com";
  Shopify.Checkout.assetsPath = "\/\/cdn.shopify.com\/s";
  Shopify.Checkout.i18n = {"orders":{"order_updates":{"title":"Order updates"}}};
  Shopify.Checkout.isOrderStatusPage = true;
  Shopify.Checkout.token = null;
</script>

Я не уверен, каким должен быть Shopify.Checkout.token, но я просто заметил, что он определен для нашего другие рабочие витрины. Я перепробовал все, что мог придумать, поэтому любая помощь будет очень признательна.

Спасибо!

1 Ответ

0 голосов
/ 17 июня 2020

Я не знаю, мог ли в какой-то момент в прошлом у вас был доступ к переменной total_price в глобальной области действия, но по состоянию на июнь 2020 года раздел о « Добавление дополнительных скриптов"в официальной документации Shopify написано:

Поле Дополнительные скрипты используется для вставки кода в шаблон для страницы статуса вашего заказа. Вы можете добавить любое из следующего:

...

А объект checkout имеет свойство total_price. Я подозреваю, что если вы обратитесь к этому свойству в пространстве имен оформления заказа, вы получите то, что ищете. 1034 *json фильтр, который автоматически экранирует и автоматически цитирует значения в зависимости от их базовых типов. Очень удобно при работе с жидкостью в- javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...