app/template/kaorime/Block/ecommerce_gatag.twig line 1

Open in your IDE?
  1. {% if app.request.get('_route') == 'product_list' %}
  2. {# 商品一覧 #}
  3. <script>
  4.     dataLayer.push({ecommerce: null});
  5.     // GA4
  6.     dataLayer.push({
  7.         'event': 'view_item_list',
  8.         'ecommerce': {
  9.             'items': [
  10.                 {% for Product in pagination %}
  11.                 {
  12.                 'item_name': '{{ Product.name }}',
  13.                 'item_id': '{{ Product.getCodeMin ? Product.getCodeMin : Product.id }}',
  14.                 'price': '{{ Product.getPrice02IncTaxMin }}',
  15.                 'item_category': '{% for ProductCategory in Product.ProductCategories %}{% for Category in ProductCategory.Category.path %}{% if ( Category.parent is not null ) %}{{ Category.Parent.name }}:{{ Category.name }}{% endif %}{% endfor %}{% endfor %}',
  16.                 }{% if not loop.last %},{% endif %}
  17.                 {% endfor %}
  18.             ]
  19.         }
  20.     });
  21. </script>
  22. {% elseif app.request.get('_route') == 'product_detail' %}
  23. {# 商品詳細 #}
  24. <script>
  25.     // Measure a view of product details. This example assumes the detail view occurs on pageload,
  26.     dataLayer.push({ecommerce: null});  // Clear the previous ecommerce object.
  27.     // GA4
  28.     dataLayer.push({
  29.         'event': 'view_item',
  30.         'ecommerce': {
  31.             'items': [{
  32.                 'item_name': '{{ Product.name }}',
  33.                 'item_id': '{{ Product.getCodeMin ? Product.getCodeMin : Product.id }}',
  34.                 'price': '{{ Product.getPrice02IncTaxMin }}',
  35.                 'item_category': '{% for ProductCategory in Product.ProductCategories %}{% for Category in ProductCategory.Category.path %}{% if ( Category.parent is not null ) %}{{ Category.Parent.name }}:{{ Category.name }}{% endif %}{% endfor %}{% endfor %}',
  36.                 'quantity': '1'
  37.             }]
  38.         }
  39.     });
  40.     
  41. </script>
  42. {% elseif app.request.get('_route') == 'cart' %}
  43. {# カートに追加 #}
  44. <script>
  45.     // Measure when a product is added to a shopping cart
  46.     dataLayer.push({ecommerce: null});  // Clear the previous ecommerce object.
  47.     // GA4
  48.     dataLayer.push({
  49.         'event': 'add_to_cart',
  50.         'ecommerce': {
  51.             'items': [
  52.                 {% for CartIndex,Cart in Carts %}
  53.                 {% for CartItem in Cart.CartItems %}
  54.                 {% set ProductClass = CartItem.ProductClass %}
  55.                 {% set Product = ProductClass.Product %}
  56.                 {
  57.                 'item_name': '{{ Product.name }}',
  58.                 'item_id': '{{ Product.getCodeMin ? Product.getCodeMin : Product.id }}',
  59.                 'price': '{{ Product.getPrice02IncTaxMin }}'
  60.                 }{% if not loop.last %},{% endif %}
  61.                 {% endfor %}
  62.                 {% endfor %}
  63.             ]
  64.         }
  65.     });
  66. </script>
  67. {% elseif app.request.get('_route') == 'shopping_complete' %}
  68. {# 購入完了 #}
  69. {% if Order.id %}
  70. <script>
  71.     dataLayer.push({ecommerce: null});
  72.     // GA4
  73.     dataLayer.push({
  74.         'event': 'purchase',
  75.         'ecommerce': {
  76.             'transaction_id': '{{ Order.order_no }}',
  77.             'affiliation': '{{ BaseInfo.shop_name }}',
  78.             'value': '{{ Order.subtotal }}',
  79.             'tax': '{{ Order.tax }}',
  80.             'shipping': '{{ Order.delivery_fee_total }}',
  81.             'currency': 'JPY',
  82.             'items': [
  83.                 {% for OrderItem in Order.MergedProductOrderItems %}
  84.                 {
  85.                 'item_name': '{{ OrderItem.product_name }}',
  86.                 'item_id': '{{ OrderItem.product_code ? OrderItem.product_code : OrderItem.product.id }}',
  87.                 'price': '{{ OrderItem.price_inc_tax }}',
  88.                 'item_category': '{% for ProductCategory in OrderItem.Product.ProductCategories %}{% for Category in ProductCategory.Category.path %}{% if ( Category.parent is not null ) %}{{ Category.Parent.name }}:{{ Category.name }}{% endif %}{% endfor %}{% endfor %}',
  89.                 'quantity': {{ OrderItem.quantity }}
  90.                 }{% if not loop.last %},{% endif %}
  91.                 {% endfor %}
  92.             ]
  93.         }
  94.     });
  95. </script>
  96. {% endif %}
  97. {% endif %}