Добавление идентификатора продукта OXID и цены на уровень данных для Google Tag Manager

Я хотел бы добавить идентификатор продукта и цену в слой данных диспетчера тегов Google в OXID Eshop. Есть ли простой способ сделать это?

Я подумал, что смогу отредактировать код, предложенный здесь: List нескольких продуктов в php datalayer, но я слишком не знаком с оксидным кодом.

Вот что я пробовал, например:

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

дополнительно: $oViewConf->getActArticleId() или oxArticle и другие варианты. Очевидно, что ни один из них не работает. Любая помощь приветствуется.


person NNCCBB    schedule 21.11.2019    source источник


Ответы (1)


Вы не можете просто передать переменные smarty на стороне сервера в javascript на стороне клиента, поскольку smarty отображается до того, как браузер получит html. Smarty пытается вывести там строковое представление объекта oxArticle, но, насколько мне известно, у oxArticles нет метода __toString().

Для вас есть 2 возможности:

  1. вы можете напрямую сопоставить свойства oxArticle с необходимыми вам переменными уровня данных, например: (обратите внимание на одинарные кавычки вокруг умных тегов, чтобы они соответствовали типам данных свойств объекта javascript)
var product = {
    'name': '[{$oArticle->oxarticles__oxtitle->value}]',
    'id': '[{$oArticle->oxarticles__oxartnum->value}]',
    'price': [{$oArticle->oxarticles__oxprice->value}]
};
  1. вы можете json_encode весь объект $oArticle var product = [{$oArticle|json_encode}];, но это может привести к раскрытию некоторых данных о продукте, которые вы обычно не хотите, чтобы люди видели, например, цена покупки или фактический запас. Вы получаете только ту информацию, которая также хранится в базе данных, но не информацию, вычисляемую динамически, например фактическую цену, включая текущие скидки или URL-адрес продукта.

Кроме того, вы можете взглянуть на мой модуль диспетчера тегов: https://github.com/vanilla-thunder/oxid-module-tag-manager

person Marat    schedule 21.11.2019