datalayer.push и Ajax

Jarhead

Постоялец
Регистрация
17 Июн 2011
Сообщения
415
Реакции
169
Здравствуйте,

Подключаю google tag manager, там в категории должен выводиться примерно такой код на странице категории с товарами:

HTML:
dataLayer.push({
    "event": "productsImpressions",
    "ecommerce": {
        "impressions": [{
            "name": "Корм для котят DUKE'S FARM утка сух. 2кг",
            "id": "ПР0030753",
            "price": "1450.00",
            "brand": "DUKE'S FARM",
            "category": "Для кошек / Сухой корм",
            "variant": "2kg",
            "list": "Catalog",
            "position": 1
        },{
            "name": "Корм для кошек DUKE'S FARM курица сух. 2кг",
            "id": "ПР0030755",
            "price": "1350.00",
            "brand": "DUKE'S FARM",
            "category": "Для кошек / Сухой корм",
            "variant": "2kg",
            "list": "Catalog",
            "position": 2
        },{

        ......

        }]
    }
});

Если в категории используют фильтр по товарам то новые товары подгружаются по Ajax и после нужно послать новый список товаров при помощи кода выше, список товаров в указанном коде выше я могу послать как html код через ajax, но я совсем не могу понять как выполнить функцию выше с подставленным в нее кодом из html переданным по Ajax...

Может подскажет кто?
 
Пока вот как то так сделал, так правильно?


HTML:
var script = $('<script>' + utf8_decode(result.data_push) + '</' + 'script>');
script.appendTo(document.body);
 
Если я правильно всё понял.
То вам нужно вместе с фильтром передавать НОВЫЙ код счетчика (всё что после "dataLayer.push( ")
И после получения данных из аякс выполнять dataLayer.push с этой переменной/объектом.

Так же возможно собирать код счетчика в объект самостоятельно, так как с аякс ответом Вам передаются товары, которые вы можете собрать и затолкать/запушить в dataLayer
 
Kerm84, то как вы сделали и правильно и неправильно. Правильно, потому что решает задачу. Неправильно, потому что вы вставляете скрипт через скрипт и это не совсем хорошо, но в принципе на это можно забить, если проект ведете только вы и у вас нет никакой команды.

Из того что вы написали, мне ясно следующее:

1. Есть некий массив объектов, который должен передаваться в impressions параметре при вызове push
2. При подгрузке через Ajax добавляются новые товары и их нужно как то запихнуть в массив объектов выше
3. Сделать вызов dataLayer.push() с обновленным массивом объектов.

Задача в том, чтобы получить создать массив объектов после подгрузки через Ajax. То есть что то типа:

Код:
var products = [
{
"name": "Корм для котят DUKE'S FARM утка сух. 2кг",
            "id": "ПР0030753",
            "price": "1450.00",
            "brand": "DUKE'S FARM",
            "category": "Для кошек / Сухой корм",
            "variant": "2kg",
            "list": "Catalog",
            "position": 1
},
{
"name": "Корм для кошек DUKE'S FARM курица сух. 2кг",
            "id": "ПР0030755",
            "price": "1350.00",
            "brand": "DUKE'S FARM",
            "category": "Для кошек / Сухой корм",
            "variant": "2kg",
            "list": "Catalog",
            "position": 2
}
]

Потом каким то волшебным образом, вы ловите список добавленных через AJAX товаров и дополняете свой массив products и делаете вызов

Код:
dataLayer.push({
"ecommerce":
  "impressions": products
});

И что хранится в result.data_push?
 
Назад
Сверху