app/template/raspia/Block/google_ecommerce.twig line 1

Open in your IDE?
  1. <script type="text/javascript">
  2.   dataLayer = window.dataLayer || [];
  3.   dataLayer.push({ ecommerce: null });
  4. {% if app.request.get('_route') == 'product_list' %}
  5.     {# 商品一覧 #}
  6. //        dataLayer.push({ecommerce: null});
  7.         // GA4
  8.         dataLayer.push({
  9.             'event': 'view_item_list',
  10.             'ecommerce': {
  11.                 'items': [
  12.                     {% for Product in pagination %}
  13.                     {
  14.                         'item_name': '{{ Product.name }}',
  15.                         'item_id': '{{ Product.getCodeMin ? Product.getCodeMin : Product.id }}',
  16.                         'price': '{{ Product.getPrice02IncTaxMin }}',
  17.                         '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 %}',
  18.                     }{% if not loop.last %},{% endif %}
  19.                     {% endfor %}
  20.                 ]
  21.             }
  22.         });
  23. {% elseif app.request.get('_route') == 'product_detail' %}
  24.     {# 商品詳細 #}
  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.         //add_cartはdetail.twigに直接記載
  42. {% elseif app.request.get('_route') == 'cart' %}
  43.     {# カートを表示 #}
  44.         // Measure when a product is added to a shopping cart
  45. //        dataLayer.push({ecommerce: null});  // Clear the previous ecommerce object.
  46.         // GA4
  47.         dataLayer.push({
  48.             'event': 'view_cart',
  49.             'ecommerce': {
  50.                 'currency': 'JPY',
  51.                 'value': '{{ totalPrice }}',
  52.                 'items': [
  53.                     {% for CartIndex,Cart in Carts %}
  54.                     {% for CartItem in Cart.CartItems %}
  55.                     {% set ProductClass = CartItem.ProductClass %}
  56.                     {% set Product = ProductClass.Product %}
  57.                     {
  58.                         'item_name': '{{ Product.name }}',
  59.                         'item_id': '{{ Product.getCodeMin ? Product.getCodeMin : Product.id }}',
  60.                         'price': '{{ Product.getPrice02IncTaxMin }}'
  61.                     }{% if not loop.last %},{% endif %}
  62.                     {% endfor %}
  63.                     {% endfor %}
  64.                 ]
  65.             }
  66.         });
  67. {% elseif app.request.get('_route') == 'shopping' %}
  68.     {# 決済開始を表示 #}
  69.         // GA4
  70.         dataLayer.push({
  71.             'event': 'begin_checkout',
  72.             'ecommerce': {
  73.                 'value': '{{ Order.subtotal }}',
  74. //                'tax': '{{ Order.tax }}',
  75. //                'shipping': '{{ Order.delivery_fee_total }}',
  76.                 'currency': 'JPY',                
  77.                 'items': [
  78.                     {% for shipping in Order.shippings %}
  79.                     {% for orderItem in shipping.productOrderItems %}
  80.                     {
  81.                         'item_name': '{{ orderItem.productName }}',
  82.                         'item_id': '{{ orderItem.product.id }}',
  83.                         'price': '{{ orderItem.priceIncTax }}',
  84.                         'quantity': {{ orderItem.quantity }},
  85.                         'affiliation': '{{ BaseInfo.shop_name }}'
  86.                         
  87.                     }{% if not loop.last %},{% endif %}
  88.                     {% endfor %}
  89.                     {% endfor %}
  90.                 ]
  91.             }
  92.         });
  93.         
  94. {% elseif app.request.get('_route') == 'shopping_complete' %}
  95.     {# 購入完了 #}
  96.     {% if Order.id %}
  97.  //           dataLayer.push({ecommerce: null});
  98.             // GA4
  99.             dataLayer.push({
  100.                 'event': 'purchase',
  101.                 'ecommerce': {
  102.                     'transaction_id': '{{ Order.order_no }}',
  103.                     'value': '{{ Order.subtotal }}',
  104.                     'tax': '{{ Order.tax }}',
  105.                     'shipping': '{{ Order.delivery_fee_total }}',
  106.                     'currency': 'JPY',
  107.                     'items': [
  108.                         {% for OrderItem in Order.MergedProductOrderItems %}
  109.                         {
  110.                             'item_name': '{{ OrderItem.product_name }}',
  111.                             'item_id': '{{ OrderItem.product_code ? OrderItem.product_code : OrderItem.product.id }}',
  112.                             'price': '{{ OrderItem.price_inc_tax }}',
  113.                             '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 %}',
  114.                             'quantity': {{ OrderItem.quantity }},
  115.                             'affiliation': '{{ BaseInfo.shop_name }}'
  116.                             
  117.                         }{% if not loop.last %},{% endif %}
  118.                         {% endfor %}
  119.                     ]
  120.                 }
  121.             });
  122.     {% endif %}
  123. {% endif %}
  124. {% if user_id is defined %}
  125.     dataLayer.push({
  126.       user_id: "{{ user_id }}"
  127.     });
  128. {% endif %}
  129. {% if event_name is defined %}
  130.     dataLayer.push({
  131.       event: "{{ event_name }}"
  132.     });
  133. {% endif %}
  134. </script>