Переменные PHP в dataLayer

Я новичок в PHP и dataLayer, но у меня есть приведенный ниже код, который включает в себя dataLayer с кодом PHP. Я хочу использовать переменные уровня данных, чтобы сопоставить их с диспетчером тегов Google, и хотел бы использовать переменные PHP, доступные в приведенном ниже коде. То, что я хотел бы заполнить из переменных PHP, показано ниже.

Имя, цена, категория и количество для заполнения из переменных PHP в структуру уровня данных.

Кроме того, он должен получить все переменные продукта аналогичным образом в зависимости от того, сколько их на странице, где загружается этот код.

Кроме того, необходимо, чтобы значение transactionTotal было заполнено суммой всех цен на отдельные продукты.

var cartItemMap = new Object();
    var cartItem1 = null;
    var cartItem2 = null;
    var cartItem3 = null;
    var cartItem4 = null;
    var cartItem5 = null;
    var cartItem6 = null;
    var cartItem7 = null;
    var cartItem8 = null;
    var cartItem9 = null;
<?php
    $size = 0;
    foreach($_SESSION['product'] as $key => $pro){ 
        $size = $size + 1;
    }
    $i = 1;
    foreach($_SESSION['product'] as $key => $pro){ 

        if($size > 9){
            $size = $size -1;
        }
        else{
?>

dataLayer = [{
    'transactionId': Math.floor((Math.random() * 100) + 1),
    'transactionTotal': 11.99,
    'transactionTax': 1.29,
    'transactionShipping': 5,
    'transactionProducts': [{
        'sku': 121212,
        'name': "Test",
        'category': "Testing Category",
        'price': 33,
        'quantity': 1
    },{
        'sku': 'AA1243544',
        'name': 'Socks',
        'category': 'Apparel',
        'price': 9.99,
        'quantity': 2
    }]
}];

if("<?php echo $pro['product_name'] ?>" != ''){
    cartItem<?php echo $i ?> = new Object();

    cartItem<?php echo $i ?>.productName = "<?php echo $pro['product_name'] ?>";
    cartItem<?php echo $i ?>.productPrice = "<?php echo $pro['product_price'] ?>";
    cartItem<?php echo $i ?>.productQuantity = <?php echo $pro['product_quantity'] ?>;
    cartItem<?php echo $i ?>.productCategory = "<?php echo $pro['product_category'] ?>";
    cartItemMap[<?php echo $key ?>] = cartItem<?php echo $i ?>;
}
<?php
        $i = $i + 1;
    }
}
?>  

Help appreciated.


person kishoremcp    schedule 09.01.2017    source источник
comment
Если вы обнаружите, что нуберируете имена переменных, то вам, возможно, следует рассмотреть возможность использования массива или объекта коллекции вместо этого.   -  person Mark Baker    schedule 09.01.2017
comment
Я совершенно не имею представления о том, как это сделать. Пожалуйста, помогите/объясните.   -  person kishoremcp    schedule 09.01.2017
comment
Ваш код и проблема трудно понять. Где находится ваш уровень данных и что вы пытаетесь сделать?   -  person nerdlyist    schedule 09.01.2017
comment
Мой dataLayer: dataLayer = [{ 'transactionId': Math.floor((Math.random() * 100) + 1), 'transactionTotal': 11,99, 'transactionTax': 1,29, 'transactionShipping': 5, 'transactionProducts' : [{ 'sku': 121212, 'name': Test, 'category': Категория тестирования, 'price': 33, 'quantity': 1 },{ 'sku': 'AA1243544', 'name': 'Носки ', 'категория': 'Одежда', 'цена': 9.99, 'количество': 2 }] }];   -  person kishoremcp    schedule 09.01.2017


Ответы (1)


вы можете попробовать что-то вроде этого:

<script type="text/javascript">
    var cartItems = [
        <?php foreach($_SESSION['product'] as $key => $pro): ?>
        {
            productName: "<?= $pro['product_name']; ?>",
            productPrice: "<?= $pro['product_price']; ?>",
            productQuantity: "<?= $pro['product_quantity']; ?>",
            productCategory: "<?= $pro['product_category']; ?>"
        },
        <?php endforeach; ?>
    ];
</script>

Это создает массив (cartItems) объектов (cartItem)

person Sepultura    schedule 09.01.2017
comment
Привет, Sepultura. Код работает. Спасибо. Теперь я хочу сгенерировать случайное число для каждого из продуктов в массиве, а также я хочу, чтобы общая сумма транзакции была в другой переменной поверх массива (я имею в виду не в массиве), чтобы суммировать общее значение (цена продукта1 + продукт1 Цена...) - person kishoremcp; 09.01.2017
comment
Я думаю, вы можете легко понять это самостоятельно, я здесь не для того, чтобы писать код для вас, извините. - person Sepultura; 09.01.2017
comment
Нет проблем. Спасибо за вашу помощь. Сам попробую. - person kishoremcp; 09.01.2017
comment
Эй, я пытался получить это, но не смог этого сделать. Я добавил строку кода ниже. Он работает только внутри массива, но с нашей стороны массива он не работает. Я думаю, что мне не хватает синтаксиса или какой-то другой проблемы. любые предложения, пожалуйста. итог транзакции: ‹?= $subTotal; ?›, - person kishoremcp; 09.01.2017
comment
@kishoremcp Если его ответ сработал, вы должны принять его и проголосовать. - person nerdlyist; 09.01.2017