Advertisement
Shoporama

Tracking top

Aug 16th, 2021 (edited)
2,708
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Smarty 68.98 KB | None | 0 0
  1. <{* Template: tracking_top.html
  2.    Function: Tracking through dataLayer and GTM for GA4
  3.    Reference: https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtm
  4.         https://developers.google.com/analytics/devguides/collection/ga4/reference/events?client_type=gtm
  5.         https://support.google.com/analytics/answer/9267735
  6.         https://support.google.com/analytics/answer/9234069
  7.         https://www.simoahava.com/analytics/google-analytics-4-ecommerce-guide-google-tag-manager/
  8.    Author: Nicolai Teglskov
  9.    Author e-mail: info@nicolaiteglskov.dk
  10.    Author URL: https://nicolaiteglskov.dk
  11.    Last Updated: 2022/08/10
  12. *}>
  13. <{strip}>
  14.     <{if $webshop->getEnableTracking()}>
  15.  
  16.         <{* Theme settings pushed to dataLayer start *}>
  17.             <script>
  18.                 window.dataLayer = window.dataLayer || [];
  19.                 window.dataLayer.push({
  20.                     'event': 'ShopOramaSettings',
  21.                     <{if $webshop->getFbId()}>
  22.                         'settings.Facebook.Pixel_ID': '<{$webshop->getFbId()}>',
  23.                     <{/if}>
  24.                     <{if $webshop->getGaId()}>
  25.                         'settings.Google.Analytics_Tracking_ID': '<{$webshop->getGaId()}>',
  26.                     <{/if}>
  27.                     <{if $webshop->getGoogleAdsConversionId()}>
  28.                         'settings.Google.Ads_Conversion_ID': '<{$webshop->getGoogleAdsConversionId()}>',
  29.                     <{/if}>
  30.                     <{if $webshop->getGoogleAdsConversionLabelOrder()}>
  31.                         'settings.Google.Ads_Conversion_Label_Order': '<{$webshop->getGoogleAdsConversionLabelOrder()}>',
  32.                     <{/if}>
  33.                     <{if $webshop->getGoogleMerchantId()}>
  34.                         'settings.Google.Merchant_Center_ID': '<{$webshop->getGoogleMerchantId()}>',
  35.                     <{/if}>
  36.                     <{if $webshop->getGoogleMerchantDeliveryDays()}>
  37.                         'settings.Google.Merchant_Center_Delivery_Days': '<{$webshop->getGoogleMerchantDeliveryDays()}>',
  38.                     <{/if}>
  39.                     <{if $webshop->getGoogleTagManagerId()}>
  40.                         'settings.Google.Tag_Manager_Containder_ID': '<{$webshop->getGoogleTagManagerId()}>',
  41.                     <{/if}>
  42.                     <{if $webshop->getGA4MeasurementID()}>
  43.                         'settings.Google.GA4_Measurement_ID': '<{$webshop->getGA4MeasurementID()}>',
  44.                     <{/if}>
  45.                     <{if $webshop->getGooglePlaceID()}>
  46.                         'settings.Google.Place_ID': '<{$webshop->getGooglePlaceID()}>',
  47.                     <{/if}>
  48.                     <{if $webshop->getPinterestTagID()}>
  49.                         'settings.Pinterest.Tag_ID': '<{$webshop->getPinterestTagID()}>',
  50.                     <{/if}>
  51.                     <{if $webshop->getSnapPixelID()}>
  52.                         'settings.Snap.Pixel_ID': '<{$webshop->getSnapPixelID()}>',
  53.                     <{/if}>
  54.                     <{if $webshop->getTikTokPixelID()}>
  55.                         'settings.TikTok.Pixel_ID': '<{$webshop->getTikTokPixelID()}>',
  56.                     <{/if}>
  57.                     <{if $webshop->getLinkedInID()}>
  58.                         'settings.LinkedIn.Insight_Tag': '<{$webshop->getLinkedInID()}>',
  59.                     <{/if}>
  60.                     <{if $webshop->getKlaviyoPublicKey()}>
  61.                         'settings.Klaviyo.PublicKey': '<{$webshop->getKlaviyoPublicKey()}>',
  62.                     <{/if}>
  63.                     <{if $webshop->getCompany()}>
  64.                         <{assign var="company" value=$webshop->getCompany()}>
  65.                         'settings.webshopName': '<{$company->getName()|escape}>',
  66.                     <{/if}>
  67.                     <{if $webshop->getCurrency()}>
  68.                         'settings.currencyCode': '<{$webshop->getCurrency()}>'
  69.                     <{/if}>
  70.                 });
  71.             </script>
  72.         <{* Theme settings pushed to dataLayer end *}>
  73.  
  74.         <{* Customer Information start *}>
  75.             <{if $customer && $customer->getEmail()}>
  76.                 <script>
  77.                     window.dataLayer = window.dataLayer || [];
  78.                     window.dataLayer.push({
  79.                         event: 'customerInfo',
  80.                         'user.loggedIn': true
  81.                         ,'user.email': '<{$customer->getEmail()|escape}>'
  82.                         <{if $customer->getCustomerId()}>
  83.                             ,'user.ID': '<{$customer->getCustomerId()|escape}>'
  84.                         <{/if}>
  85.                         <{if $customer->getSubscriptionId()}>
  86.                             ,'user.subscriptionId': '<{$customer->getSubscriptionId()|escape}>'
  87.                         <{/if}>
  88.                         <{if $customer->getPhone()}>
  89.                             ,'user.phone': '<{$customer->getPhone()|escape}>'
  90.                         <{/if}>
  91.                         <{if $customer->getName()}>
  92.                             <{assign var="names" value=" "|explode:$customer->getName()|escape}>
  93.                             ,'user.name': '<{$customer->getName()|escape}>'
  94.                             ,'user.firstName': '<{$names[0]|ucfirst}>'
  95.                             ,'user.lastName': '<{$names[1]|ucfirst}>'
  96.                         <{/if}>
  97.                         <{if $customer->getCompany()}>
  98.                             ,'user.companyName': '<{$customer->getCompany()|escape}>'
  99.                         <{/if}>
  100.                         <{if $customer->getVatNumber()}>
  101.                             ,'user.companyVat' : '<{$customer->getVatNumber()|escape}>'
  102.                         <{/if}>
  103.                         <{if $customer->getAddress()}>
  104.                             ,'user.address': '<{$customer->getAddress()|escape}>'
  105.                         <{/if}>
  106.                         <{if $customer->getZipcode()}>
  107.                             ,'user.zipcode': '<{$customer->getZipcode()|escape}>'
  108.                         <{/if}>
  109.                         <{if $customer->getCity()}>
  110.                             ,'user.city': '<{$customer->getCity()|escape}>'
  111.                         <{/if}>
  112.                         <{if $customer->getCountry()}>
  113.                             <{assign var="usercountry" value=$customer->getCountry()}>
  114.                             ,'user.country': '<{$usercountry->getName()|escape}>'
  115.                         <{/if}>
  116.                         <{if $webshop->paidOrders($customer->getEmail())}>
  117.                             ,'user.paidOrders': <{$webshop->paidOrders($customer->getEmail())}>
  118.                         <{/if}>
  119.                     });
  120.                 </script>
  121.             <{elseif $order && $order->getEmail()}>
  122.                 <script>
  123.                     window.dataLayer = window.dataLayer || [];
  124.                     window.dataLayer.push({
  125.                         event: 'orderInfo',
  126.                         'user.loggedIn': false
  127.                         ,'user.email': '<{$order->getEmail()|escape}>'
  128.                         <{if $order->getPhone()}>
  129.                             ,'user.phone': '<{$order->getPhone()|escape}>'
  130.                         <{/if}>
  131.                         <{if $order->getOrderName()}>
  132.                             <{assign var="names" value=" "|explode:$order->getOrderName()|escape}>
  133.                             ,'user.name': '<{$order->getOrderName()|escape}>'
  134.                             ,'user.firstName': '<{$names[0]|ucfirst}>'
  135.                             ,'user.lastName': '<{$names[1]|ucfirst}>'
  136.                         <{/if}>
  137.                         <{if $order->getOrderCompanyName()}>
  138.                             ,'user.companyName': '<{$order->getOrderCompanyName()|escape}>'
  139.                         <{/if}>
  140.                         <{if $order->getVatNumber()}>
  141.                             ,'user.companyVat' : '<{$order->getVatNumber()|escape}>'
  142.                         <{/if}>
  143.                         <{if $order->getOrderAddress()}>
  144.                             ,'user.address': '<{$order->getOrderAddress()|escape}>'
  145.                         <{/if}>
  146.                         <{if $order->getOrderZipcode()}>
  147.                             ,'user.zipcode': '<{$order->getOrderZipcode()|escape}>'
  148.                         <{/if}>
  149.                         <{if $order->getOrderCity()}>
  150.                             ,'user.city': '<{$order->getOrderCity()|escape}>'
  151.                         <{/if}>
  152.                         <{if $order->getOrderCountry()}>
  153.                             ,'user.country': '<{$order->getOrderCountry()|escape}>'
  154.                         <{/if}>
  155.                         <{if $order->getDelCountry()}>
  156.                             ,'user.delCountry': '<{$order->getDelCountry()|escape}>'
  157.                         <{/if}>
  158.                         <{if $webshop->paidOrders($order->getEmail())}>
  159.                             ,'user.paidOrders': <{$webshop->paidOrders($order->getEmail())}>
  160.                         <{/if}>
  161.                     });
  162.                 </script>
  163.             <{elseif $session_order && $session_order.email}>
  164.                 <script>
  165.                     window.dataLayer = window.dataLayer || [];
  166.                     window.dataLayer.push({
  167.                         event: 'sessionInfo',
  168.                         'user.loggedIn': false
  169.                         ,'user.email': '<{$session_order.email|escape}>'
  170.                         <{if $session_order.phone}>
  171.                             ,'user.phone': '<{$session_order.phone|escape}>'
  172.                         <{/if}>
  173.                         <{if $session_order.name}>
  174.                             <{assign var="names" value=" "|explode:$session_order.name|escape}>
  175.                             ,'user.name': '<{$session_order.name|escape|ucfirst}>'
  176.                             ,'user.firstName': '<{$names[0]|ucfirst}>'
  177.                             ,'user.lastName': '<{$names[1]|ucfirst}>'
  178.                         <{/if}>
  179.                         <{if $session_order.company_name}>
  180.                             ,'user.companyName': '<{$session_order.company_name|escape}>'
  181.                         <{/if}>
  182.                         <{if $session_order.vat_number}>
  183.                             ,'user.companyVat': '<{$session_order.vat_number|escape}>'
  184.                         <{/if}>
  185.                         <{if $session_order.address}>
  186.                             ,'user.address': '<{$session_order.address|escape}>'
  187.                         <{/if}>
  188.                         <{if $session_order.zipcode|escape}>
  189.                             ,'user.zipcode': '<{$session_order.zipcode|escape}>'
  190.                         <{/if}>
  191.                         <{if $session_order.city}>
  192.                             ,'user.city': '<{$session_order.city|escape|ucfirst}>'
  193.                         <{/if}>
  194.                         <{if $session_order.country_name}>
  195.                             ,'user.country': '<{$session_order.country_name|escape|ucfirst}>'
  196.                         <{/if}>
  197.                         <{if $webshop->paidOrders($session_order.email)}>
  198.                             ,'user.paidOrders': <{$webshop->paidOrders($session_order.email)}>
  199.                         <{/if}>
  200.                     });
  201.                 </script>
  202.             <{/if}>
  203.         <{* Customer Information end *}>
  204.  
  205.         <{* Category dataLayer start *}>
  206.             <{if $category}>
  207.                 <{if $category->isFront()}>
  208.                     <{assign var="products" value=$category->getOnlineProducts()}>
  209.                 <{/if}>
  210.  
  211.                 <{* GA4 View item list:
  212.                 https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtm#view_item_list
  213.                 https://developers.google.com/analytics/devguides/collection/ga4/reference/events?client_type=gtm#view_item_list
  214.                 https://www.simoahava.com/analytics/google-analytics-4-ecommerce-guide-google-tag-manager/#view_item_list
  215.                 *}>
  216.                 <script>
  217.                     window.dataLayer = window.dataLayer || [];
  218.                     window.dataLayer.push({ ecommerce: null });
  219.                     window.dataLayer.push({
  220.                         event: 'view_item_list',
  221.                         ecommerce: {
  222.                             items: [
  223.                                 <{section name='catimpr' loop=$products max=10}>
  224.                                     {
  225.                                         <{if $products[catimpr]->getProductId()}>
  226.                                             item_id: '<{$products[catimpr]->getProductId()}>',
  227.                                         <{/if}>
  228.                                         <{if $products[catimpr]->getName()}>
  229.                                             item_name: '<{$products[catimpr]->getName()|escape}>',
  230.                                         <{/if}>
  231.                                         <{if $webshop->getName()}>
  232.                                             affiliation: '<{$webshop->getName()|escape}>',
  233.                                         <{/if}>
  234.                                         currency: '<{$webshop->getCurrency()}>',
  235.                                         index: <{$smarty.section.catimpr.index}>,
  236.                                         <{if $products[catimpr]->getBrand()}>
  237.                                             item_brand: '<{$products[catimpr]->getBrandName()|escape}>',
  238.                                         <{/if}>
  239.                                         <{if $products[catimpr]->getMainCategory()}>
  240.                                             <{assign var="prodmaincat" value=$products[catimpr]->getMainCategory()}>
  241.                                             <{if $prodmaincat->getParents()}>
  242.                                                 <{assign var="prodmaincatparents" value=$prodmaincat->getParents()}>
  243.                                                 <{assign var="catlevel" value=0}>
  244.                                                 <{section name="parents" loop=$prodmaincatparents max=5}>
  245.                                                     <{math assign="catlevel" equation=x+1 x=$catlevel}>
  246.                                                     <{if $smarty.section.parents.first}>
  247.                                                         item_category: '<{$prodmaincatparents[parents]->getName()|escape}>',
  248.                                                     <{else}>
  249.                                                         item_category<{$catlevel}>: '<{$prodmaincatparents[parents]->getName()|escape}>',
  250.                                                     <{/if}>
  251.                                                 <{/section}>
  252.                                                 <{math assign="catlevel" equation=x+1 x=$catlevel}>
  253.                                                 item_category<{$catlevel}>: '<{$products[catimpr]->getMainCategoryName()|escape}>',
  254.                                             <{else}>
  255.                                                 item_category: '<{$products[catimpr]->getMainCategoryName()|escape}>',
  256.                                             <{/if}>
  257.                                         <{elseif $products[catimpr]->getCategory()}>
  258.                                             <{assign var="prodcat" value=$products[catimpr]->getCategory()}>
  259.                                             <{if $prodcat->getParents()}>
  260.                                                 <{assign var="prodcatparents" value=$prodcat->getParents()}>
  261.                                                 <{assign var="catlevel" value=0}>
  262.                                                 <{section name="parents" loop=$prodcatparents max=5}>
  263.                                                     <{math assign="catlevel" equation=x+1 x=$catlevel}>
  264.                                                     <{if $smarty.section.parents.first}>
  265.                                                         item_category: '<{$prodcatparents[parents]->getName()|escape}>',
  266.                                                     <{else}>
  267.                                                         item_category<{$catlevel}>: '<{$prodcatparents[parents]->getName()|escape}>',
  268.                                                     <{/if}>
  269.                                                 <{/section}>
  270.                                                 <{math assign="catlevel" equation=x+1 x=$catlevel}>
  271.                                                 item_category<{$catlevel}>: '<{$products[catimpr]->getCategoryName()|escape}>',
  272.                                             <{else}>
  273.                                                 item_category: '<{$products[catimpr]->getCategoryName()|escape}>',
  274.                                             <{/if}>
  275.                                         <{/if}>
  276.                                         <{if $category->getCategoryId()}>
  277.                                             item_list_id: '<{$category->getCategoryId()}>',
  278.                                         <{/if}>
  279.                                         <{if $category->getName()|escape}>
  280.                                             item_list_name: '<{$category->getName()|escape}>',
  281.                                         <{/if}>
  282.                                         <{if $webshop->getGooglePlaceID()}>
  283.                                             location_id: '<{$webshop->getGooglePlaceID()}>',
  284.                                         <{/if}>
  285.                                         <{if $products[catimpr]->getRealPrice()}>
  286.                                             price: <{$products[catimpr]->getRealPrice()|number_format:2:".":""}>,
  287.                                         <{/if}>
  288.                                         quantity: 1
  289.                                     }
  290.                                     <{if !$smarty.section.catimpr.last}>,<{/if}>
  291.                                 <{/section}>
  292.                             ]
  293.                         }
  294.                     });
  295.                 </script>
  296.             <{/if}>
  297.         <{* Category dataLayer end *}>
  298.  
  299.         <{* Landingpage dataLayer start *}>
  300.             <{if $landing_page}>
  301.                 <{* GA4 View item list:
  302.                 https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtm#view_item_list
  303.                 https://developers.google.com/analytics/devguides/collection/ga4/reference/events?client_type=gtm#view_item_list
  304.                 https://www.simoahava.com/analytics/google-analytics-4-ecommerce-guide-google-tag-manager/#view_item_list
  305.                 *}>
  306.                 <script>
  307.                     window.dataLayer = window.dataLayer || [];
  308.                     window.dataLayer.push({ ecommerce: null });
  309.                     window.dataLayer.push({
  310.                         event: 'view_item_list',
  311.                         ecommerce: {
  312.                             items: [
  313.                                 <{section name='lpimpr' loop=$products max=10}>
  314.                                     {
  315.                                         <{if $products[lpimpr]->getProductId()}>
  316.                                             item_id: '<{$products[lpimpr]->getProductId()}>',
  317.                                         <{/if}>
  318.                                         <{if $products[lpimpr]->getName()}>
  319.                                             item_name: '<{$products[lpimpr]->getName()|escape}>',
  320.                                         <{/if}>
  321.                                         <{if $webshop->getName()}>
  322.                                             affiliation: '<{$webshop->getName()|escape}>',
  323.                                         <{/if}>
  324.                                         currency: '<{$webshop->getCurrency()}>',
  325.                                         index: <{$smarty.section.lpimpr.index}>,
  326.                                         <{if $products[lpimpr]->getBrand()}>
  327.                                             item_brand: '<{$products[lpimpr]->getBrandName()|escape}>',
  328.                                         <{/if}>
  329.                                         <{if $products[lpimpr]->getMainCategory()}>
  330.                                             <{assign var="prodmaincat" value=$products[lpimpr]->getMainCategory()}>
  331.                                             <{if $prodmaincat->getParents()}>
  332.                                                 <{assign var="prodmaincatparents" value=$prodmaincat->getParents()}>
  333.                                                 <{assign var="catlevel" value=0}>
  334.                                                 <{section name="parents" loop=$prodmaincatparents max=5}>
  335.                                                     <{math assign="catlevel" equation=x+1 x=$catlevel}>
  336.                                                     <{if $smarty.section.parents.first}>
  337.                                                         item_category: '<{$prodmaincatparents[parents]->getName()|escape}>',
  338.                                                     <{else}>
  339.                                                         item_category<{$catlevel}>: '<{$prodmaincatparents[parents]->getName()|escape}>',
  340.                                                     <{/if}>
  341.                                                 <{/section}>
  342.                                                 <{math assign="catlevel" equation=x+1 x=$catlevel}>
  343.                                                 item_category<{$catlevel}>: '<{$products[lpimpr]->getMainCategoryName()|escape}>',
  344.                                             <{else}>
  345.                                                 item_category: '<{$products[lpimpr]->getMainCategoryName()|escape}>',
  346.                                             <{/if}>
  347.                                         <{elseif $products[lpimpr]->getCategory()}>
  348.                                             <{assign var="prodcat" value=$products[lpimpr]->getCategory()}>
  349.                                             <{if $prodcat->getParents()}>
  350.                                                 <{assign var="prodcatparents" value=$prodcat->getParents()}>
  351.                                                 <{assign var="catlevel" value=0}>
  352.                                                 <{section name="parents" loop=$prodcatparents max=5}>
  353.                                                     <{math assign="catlevel" equation=x+1 x=$catlevel}>
  354.                                                     <{if $smarty.section.parents.first}>
  355.                                                         item_category: '<{$prodcatparents[parents]->getName()|escape}>',
  356.                                                     <{else}>
  357.                                                         item_category<{$catlevel}>: '<{$prodcatparents[parents]->getName()|escape}>',
  358.                                                     <{/if}>
  359.                                                 <{/section}>
  360.                                                 <{math assign="catlevel" equation=x+1 x=$catlevel}>
  361.                                                 item_category<{$catlevel}>: '<{$products[lpimpr]->getCategoryName()|escape}>',
  362.                                             <{else}>
  363.                                                 item_category: '<{$products[lpimpr]->getCategoryName()|escape}>',
  364.                                             <{/if}>
  365.                                         <{/if}>
  366.                                         <{if $landing_page->getLandingPageId()}>
  367.                                             item_list_id: '<{$landing_page->getLandingPageId()}>',
  368.                                         <{/if}>
  369.                                         <{if $landing_page->getName()}>
  370.                                             item_list_name: '<{$landing_page->getName()|escape}>',
  371.                                         <{/if}>
  372.                                         <{if $webshop->getGooglePlaceID()}>
  373.                                             location_id: '<{$webshop->getGooglePlaceID()}>',
  374.                                         <{/if}>
  375.                                         <{if $products[lpimpr]->getRealPrice()}>
  376.                                             price: <{$products[lpimpr]->getRealPrice()|number_format:2:".":""}>,
  377.                                         <{/if}>
  378.                                         quantity: 1
  379.                                     }
  380.                                     <{if !$smarty.section.lpimpr.last}>,<{/if}>
  381.                                 <{/section}>
  382.                             ]
  383.                         }
  384.                     });
  385.                 </script>
  386.             <{/if}>
  387.         <{* Landingpage dataLayer end *}>
  388.  
  389.         <{* Search dataLayer start *}>
  390.             <{if $inc == "search.html"}>
  391.                 <{* GA4 search:
  392.                 https://developers.google.com/analytics/devguides/collection/ga4/reference/events?client_type=gtm#search
  393.                 *}>
  394.                 <script>
  395.                     window.dataLayer = window.dataLayer || [];
  396.                     window.dataLayer.push({ ecommerce: null });
  397.                     window.dataLayer.push({
  398.                         event: 'search',
  399.                         search_term: '<{$get.search}>'
  400.                     });
  401.                 </script>
  402.             <{/if}>
  403.         <{* Search dataLayer end *}>
  404.  
  405.         <{* Product dataLayer start *}>
  406.             <{if $product}>
  407.                 <{* GA4 View item:
  408.                 https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtm#view_item
  409.                 https://developers.google.com/analytics/devguides/collection/ga4/reference/events?client_type=gtm#view_item
  410.                 https://www.simoahava.com/analytics/google-analytics-4-ecommerce-guide-google-tag-manager/#view_item
  411.                 *}>
  412.                 <script>
  413.                     window.dataLayer = window.dataLayer || [];
  414.                     window.dataLayer.push({ ecommerce: null });
  415.                     window.dataLayer.push({
  416.                         event: 'view_item',
  417.                         ecommerce: {
  418.                             items: [{
  419.                                 <{if $product->getProductId()}>
  420.                                     item_id: '<{$product->getProductId()}>',
  421.                                 <{/if}>
  422.                                 <{if $product->getName()}>
  423.                                     item_name: '<{$product->getName()|escape}>',
  424.                                 <{/if}>
  425.                                 <{if $webshop->getName()}>
  426.                                     affiliation: '<{$webshop->getName()|escape}>',
  427.                                 <{/if}>
  428.                                 currency: '<{$webshop->getCurrency()}>',
  429.                                 index: 0,
  430.                                 <{if $product->getBrand()}>
  431.                                     item_brand: '<{$product->getBrandName()|escape}>',
  432.                                 <{/if}>
  433.                                 <{if $product->getMainCategory()}>
  434.                                     <{assign var="prodmaincat" value=$product->getMainCategory()}>
  435.                                     <{if $prodmaincat->getParents()}>
  436.                                         <{assign var="prodmaincatparents" value=$prodmaincat->getParents()}>
  437.                                         <{assign var="catlevel" value=0}>
  438.                                         <{section name="parents" loop=$prodmaincatparents max=5}>
  439.                                             <{math assign="catlevel" equation=x+1 x=$catlevel}>
  440.                                             <{if $smarty.section.parents.first}>
  441.                                                 item_category: '<{$prodmaincatparents[parents]->getName()|escape}>',
  442.                                             <{else}>
  443.                                                 item_category<{$catlevel}>: '<{$prodmaincatparents[parents]->getName()|escape}>',
  444.                                             <{/if}>
  445.                                         <{/section}>
  446.                                         <{math assign="catlevel" equation=x+1 x=$catlevel}>
  447.                                         item_category<{$catlevel}>: '<{$product->getMainCategoryName()|escape}>',
  448.                                     <{else}>
  449.                                         item_category: '<{$product->getMainCategoryName()|escape}>',
  450.                                     <{/if}>
  451.                                 <{elseif $product->getCategory()}>
  452.                                     <{assign var="prodcat" value=$product->getCategory()}>
  453.                                     <{if $prodcat->getParents()}>
  454.                                         <{assign var="prodcatparents" value=$prodcat->getParents()}>
  455.                                         <{assign var="catlevel" value=0}>
  456.                                         <{section name="parents" loop=$prodcatparents max=5}>
  457.                                             <{math assign="catlevel" equation=x+1 x=$catlevel}>
  458.                                             <{if $smarty.section.parents.first}>
  459.                                                 item_category: '<{$prodcatparents[parents]->getName()|escape}>',
  460.                                             <{else}>
  461.                                                 item_category<{$catlevel}>: '<{$prodcatparents[parents]->getName()|escape}>',
  462.                                             <{/if}>
  463.                                         <{/section}>
  464.                                         <{math assign="catlevel" equation=x+1 x=$catlevel}>
  465.                                         item_category<{$catlevel}>: '<{$product->getCategoryName()|escape}>',
  466.                                     <{else}>
  467.                                         item_category: '<{$product->getCategoryName()|escape}>',
  468.                                     <{/if}>
  469.                                 <{/if}>
  470.                                 <{* TODO: add item_variant for products with attribute in URL *}>
  471.                                 <{if $webshop->getGooglePlaceID()}>
  472.                                     location_id: '<{$webshop->getGooglePlaceID()}>',
  473.                                 <{/if}>
  474.                                 <{if $product->getRealPrice()}>
  475.                                     price: <{$product->getRealPrice()|number_format:2:".":""}>,
  476.                                 <{/if}>
  477.                                 quantity: 1
  478.                             }]
  479.                         }
  480.                     });
  481.                 </script>
  482.                 <{* GA4 Add to cart:
  483.                 https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtm#add_to_cart
  484.                 https://developers.google.com/analytics/devguides/collection/ga4/reference/events?client_type=gtm#add_to_cart
  485.                 https://www.simoahava.com/analytics/google-analytics-4-ecommerce-guide-google-tag-manager/#add_to_cart
  486.                 *}>
  487.                 <script>
  488.                     document.addEventListener("DOMContentLoaded", function (event) {
  489.                         var formId = document.querySelector('#basket_form');
  490.                         var quantityId = document.querySelector('#qty');
  491.                         formId.addEventListener("submit", function(evt) {
  492.                             <{if $product->hasVariant()}>
  493.                                 var variantList = document.getElementById('attributes');
  494.                                 var variantName = variantList.options[variantList.selectedIndex].dataset.item_variant;
  495.                             <{/if}>
  496.                             window.dataLayer = window.dataLayer || [];
  497.                             window.dataLayer.push({ ecommerce: null });
  498.                             window.dataLayer.push({
  499.                                 event: 'add_to_cart',
  500.                                 ecommerce: {
  501.                                     currency: '<{$webshop->getCurrency()}>',
  502.                                     value: <{$product->getRealPrice()|number_format:2:".":""}> * quantityId.value,
  503.                                     items: [{
  504.                                         <{if $product->hasVariant()}>
  505.                                             item_id: '<{$product->getProductId()}>:' + variantList.value,
  506.                                             item_variant: variantName,
  507.                                         <{elseif $product->getProductId()}>
  508.                                             item_id: '<{$product->getProductId()}>',
  509.                                         <{/if}>
  510.                                         <{if $product->getName()}>
  511.                                             item_name: '<{$product->getName()|escape}>',
  512.                                         <{/if}>
  513.                                         <{if $webshop->getName()}>
  514.                                             affiliation: '<{$webshop->getName()|escape}>',
  515.                                         <{/if}>
  516.                                         currency: '<{$webshop->getCurrency()}>',
  517.                                         index: 0,
  518.                                         <{if $product->getBrand()}>
  519.                                             item_brand: '<{$product->getBrandName()|escape}>',
  520.                                         <{/if}>
  521.                                         <{if $product->getMainCategory()}>
  522.                                             <{assign var="prodmaincat" value=$product->getMainCategory()}>
  523.                                             <{if $prodmaincat->getParents()}>
  524.                                                 <{assign var="prodmaincatparents" value=$prodmaincat->getParents()}>
  525.                                                 <{assign var="catlevel" value=0}>
  526.                                                 <{section name="parents" loop=$prodmaincatparents max=5}>
  527.                                                     <{math assign="catlevel" equation=x+1 x=$catlevel}>
  528.                                                     <{if $smarty.section.parents.first}>
  529.                                                         item_category: '<{$prodmaincatparents[parents]->getName()|escape}>',
  530.                                                     <{else}>
  531.                                                         item_category<{$catlevel}>: '<{$prodmaincatparents[parents]->getName()|escape}>',
  532.                                                     <{/if}>
  533.                                                 <{/section}>
  534.                                                 <{math assign="catlevel" equation=x+1 x=$catlevel}>
  535.                                                 item_category<{$catlevel}>: '<{$product->getMainCategoryName()|escape}>',
  536.                                             <{else}>
  537.                                                 item_category: '<{$product->getMainCategoryName()|escape}>',
  538.                                             <{/if}>
  539.                                         <{elseif $product->getCategory()}>
  540.                                             <{assign var="prodcat" value=$product->getCategory()}>
  541.                                             <{if $prodcat->getParents()}>
  542.                                                 <{assign var="prodcatparents" value=$prodcat->getParents()}>
  543.                                                 <{assign var="catlevel" value=0}>
  544.                                                 <{section name="parents" loop=$prodcatparents max=5}>
  545.                                                     <{math assign="catlevel" equation=x+1 x=$catlevel}>
  546.                                                     <{if $smarty.section.parents.first}>
  547.                                                         item_category: '<{$prodcatparents[parents]->getName()|escape}>',
  548.                                                     <{else}>
  549.                                                         item_category<{$catlevel}>: '<{$prodcatparents[parents]->getName()|escape}>',
  550.                                                     <{/if}>
  551.                                                 <{/section}>
  552.                                                 <{math assign="catlevel" equation=x+1 x=$catlevel}>
  553.                                                 item_category<{$catlevel}>: '<{$product->getCategoryName()|escape}>',
  554.                                             <{else}>
  555.                                                 item_category: '<{$product->getCategoryName()|escape}>',
  556.                                             <{/if}>
  557.                                         <{/if}>
  558.                                         <{if $webshop->getGooglePlaceID()}>
  559.                                             location_id: '<{$webshop->getGooglePlaceID()}>',
  560.                                         <{/if}>
  561.                                         <{if $product->getRealPrice()}>
  562.                                             price: <{$product->getRealPrice()|number_format:2:".":""}>,
  563.                                         <{/if}>
  564.                                         quantity: quantityId.value
  565.                                     }]
  566.                                 }
  567.                             });
  568.                         });
  569.                     });
  570.                 </script>
  571.             <{/if}>
  572.         <{* Product dataLayer end *}>
  573.  
  574.         <{* Product listing pages start *}>
  575.             <{if $category || $landing_page || $inc == "search.html" || $inc == "basket.html" || $inc == "product.html"}>
  576.                 <{* GA4 Select item:
  577.                 https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtm#select_item
  578.                 https://www.simoahava.com/analytics/google-analytics-4-ecommerce-guide-google-tag-manager/#select_item
  579.                 https://medium.com/@sbuckpesch/2-steps-to-a-complete-enhanced-e-commerce-conversion-setup-in-google-analytics-using-google-tag-50cc9d09ab51
  580.                 *}>
  581.                 <script type="application/javascript">
  582.                     document.addEventListener("click", function(event) {
  583.                         if (event.target.classList.contains('productEntityClick') || event.target.parentNode.parentNode.classList.contains('productEntityClick')) {
  584.                             trackProductClickEvent(event.target, 'select_item')
  585.                         }
  586.                         if (event.target.classList.contains('productEntityAddToCart')) {
  587.                             trackProductClickEvent(event.target, 'add_to_cart')
  588.                         }
  589.                         if (event.target.classList.contains('productEntityRemoveFromCart')) {
  590.                             trackProductClickEvent(event.target, 'remove_from_cart')
  591.                         }
  592.                         if (event.target.classList.contains('productEntityIncreaseCart')) {
  593.                             trackProductClickEvent(event.target, 'IncreaseCart')
  594.                         }
  595.                         if (event.target.classList.contains('productEntityDecreaseCart')) {
  596.                             trackProductClickEvent(event.target, 'DecreaseCart')
  597.                         }
  598.                     });
  599.                     function findAncestor(el, selector) {
  600.                         while ((el = el.parentElement) && !((el.matches || el.matchesSelector).call(el, selector))) ;
  601.                         return el;
  602.                     }
  603.                     function trackProductClickEvent(clickedElement, event) {
  604.                         var productEntity = findAncestor(clickedElement, '.productEntity');
  605.                         if (productEntity) {
  606.                             var productKeyMapping = {
  607.                                 'item_id': 'item_id',
  608.                                 'item_name': 'item_name',
  609.                                 'affiliation': 'affiliation',
  610.                                 'currency': 'currency',
  611.                                 'index': 'index',
  612.                                 'item_brand': 'item_brand',
  613.                                 'item_category': 'item_category',
  614.                                 'item_category2': 'item_category2',
  615.                                 'item_category3': 'item_category3',
  616.                                 'item_category4': 'item_category4',
  617.                                 'item_category5': 'item_category5',
  618.                                 'item_list_id': 'item_list_id',
  619.                                 'item_list_name': 'item_list_name',
  620.                                 'item_variant': 'item_variant',
  621.                                 'location_id': 'location_id',
  622.                                 'price': 'price',
  623.                                 'quantity': 'quantity'
  624.                             };
  625.                             var productData = {};
  626.                             var keys = Object.keys(productKeyMapping);
  627.                             keys.forEach(function (key) {
  628.                                 if (typeof productEntity.dataset[key] !== 'undefined') {
  629.                                     productData[productKeyMapping[key]] = productEntity.dataset[key];
  630.                                 }
  631.                             });
  632.                             var ecommerceData = {};
  633.                             switch (event) {
  634.                                 case 'select_item':
  635.                                     ecommerceData = {
  636.                                         items: [productData]
  637.                                     };
  638.                                     window.dataLayer = window.dataLayer || [];
  639.                                     window.dataLayer.push({ ecommerce: null });
  640.                                     window.dataLayer.push({
  641.                                         'event': event,
  642.                                         'ecommerce': ecommerceData
  643.                                     });
  644.                                 break;
  645.                                 case 'add_to_cart':
  646.                                     productData.quantity = 1;
  647.                                     ecommerceData = {
  648.                                         items: [productData],
  649.                                         currency: '<{$webshop->getCurrency()}>',
  650.                                         value: [productData.price] * [productData.quantity]
  651.                                     };
  652.                                     window.dataLayer = window.dataLayer || [];
  653.                                     window.dataLayer.push({ ecommerce: null });
  654.                                     window.dataLayer.push({
  655.                                         'event': event,
  656.                                         'ecommerce': ecommerceData
  657.                                     });
  658.                                 break;
  659.                                 case 'remove_from_cart':
  660.                                     ecommerceData = {
  661.                                         items: [productData],
  662.                                         currency: '<{$webshop->getCurrency()}>',
  663.                                         value: [productData.price] * [productData.quantity]
  664.                                     };
  665.                                     window.dataLayer = window.dataLayer || [];
  666.                                     window.dataLayer.push({ ecommerce: null });
  667.                                     window.dataLayer.push({
  668.                                         'event': event,
  669.                                         'ecommerce': ecommerceData
  670.                                     });
  671.                                 break;
  672.                                 case 'IncreaseCart':
  673.                                     productData.quantity = 1;
  674.                                     ecommerceData = {
  675.                                         items: [productData],
  676.                                         currency: '<{$webshop->getCurrency()}>',
  677.                                         value: [productData.price] * [productData.quantity]
  678.                                     };
  679.                                     window.dataLayer = window.dataLayer || [];
  680.                                     window.dataLayer.push({ ecommerce: null });
  681.                                     window.dataLayer.push({
  682.                                         'event': 'add_to_cart',
  683.                                         'ecommerce': ecommerceData
  684.                                     });
  685.                                 break;
  686.                                 case 'DecreaseCart':
  687.                                     productData.quantity = 1;
  688.                                     ecommerceData = {
  689.                                         items: [productData],
  690.                                         currency: '<{$webshop->getCurrency()}>',
  691.                                         value: [productData.price] * [productData.quantity]
  692.                                     };
  693.                                     window.dataLayer = window.dataLayer || [];
  694.                                     window.dataLayer.push({ ecommerce: null });
  695.                                     window.dataLayer.push({
  696.                                         'event': 'remove_from_cart',
  697.                                         'ecommerce': ecommerceData
  698.                                     });
  699.                                 break;
  700.                             }
  701.                         }
  702.                     }
  703.                 </script>
  704.             <{/if}>
  705.         <{* Product listing pages end *}>
  706.  
  707.         <{* Basket dataLayer start *}>
  708.             <{if $inc == "basket.html"}>
  709.                 <{* GA4 View cart:
  710.                 https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtm#view_cart
  711.                 https://developers.google.com/analytics/devguides/collection/ga4/reference/events?client_type=gtm#view_cart
  712.                 https://www.simoahava.com/analytics/google-analytics-4-ecommerce-guide-google-tag-manager/#view_cart
  713.                 *}>
  714.                 <script>
  715.                     window.dataLayer = window.dataLayer || [];
  716.                     window.dataLayer.push({ ecommerce: null });
  717.                     window.dataLayer.push({
  718.                         event: 'view_cart',
  719.                         ecommerce: {
  720.                             currency: '<{$webshop->getCurrency()}>',
  721.                             value: <{$total_price|number_format:2:".":""}>,
  722.                             items: [
  723.                                 <{section name=basketimpr loop=$basket}>
  724.                                     <{assign var="checkoutproduct" value=$basket[basketimpr].product}>
  725.                                     <{assign var=attributes value=$basket[basketimpr].attributes}>
  726.  
  727.                                     {
  728.                                         <{if $attributes|@count == 1}>
  729.                                             <{section name="j" loop=$attributes}>
  730.                                                 item_id: '<{$checkoutproduct->getProductId()}>:<{$attributes[j].value_id}>',
  731.                                                 item_variant: '<{$attributes[j].value}>',
  732.                                             <{/section}>
  733.                                         <{else}>
  734.                                             <{if $checkoutproduct->getProductId()}>
  735.                                                 item_id: '<{$checkoutproduct->getProductId()}>',
  736.                                             <{/if}>
  737.                                         <{/if}>
  738.                                         <{if $checkoutproduct->getName()}>
  739.                                             item_name: '<{$checkoutproduct->getName()|escape}>',
  740.                                         <{/if}>
  741.                                         <{if $webshop->getName()}>
  742.                                             affiliation: '<{$webshop->getName()|escape}>',
  743.                                         <{/if}>
  744.                                         <{if $voucher}>
  745.                                             coupon: '<{$voucher->getCode()|escape}>',
  746.                                         <{/if}>
  747.                                         currency: '<{$webshop->getCurrency()}>',
  748.                                         index: <{$smarty.section.basketimpr.index}>,
  749.                                         <{if $checkoutproduct->getBrand()}>
  750.                                             item_brand: '<{$checkoutproduct->getBrandName()|escape}>',
  751.                                         <{/if}>
  752.                                         <{if $checkoutproduct->getMainCategory()}>
  753.                                             <{assign var="prodmaincat" value=$checkoutproduct->getMainCategory()}>
  754.                                             <{if $prodmaincat->getParents()}>
  755.                                                 <{assign var="prodmaincatparents" value=$prodmaincat->getParents()}>
  756.                                                 <{assign var="catlevel" value=0}>
  757.                                                 <{section name="parents" loop=$prodmaincatparents max=5}>
  758.                                                     <{math assign="catlevel" equation=x+1 x=$catlevel}>
  759.                                                     <{if $smarty.section.parents.first}>
  760.                                                         item_category: '<{$prodmaincatparents[parents]->getName()|escape}>',
  761.                                                     <{else}>
  762.                                                         item_category<{$catlevel}>: '<{$prodmaincatparents[parents]->getName()|escape}>',
  763.                                                     <{/if}>
  764.                                                 <{/section}>
  765.                                                 <{math assign="catlevel" equation=x+1 x=$catlevel}>
  766.                                                 item_category<{$catlevel}>: '<{$checkoutproduct->getMainCategoryName()|escape}>',
  767.                                             <{else}>
  768.                                                 item_category: '<{$checkoutproduct->getMainCategoryName()|escape}>',
  769.                                             <{/if}>
  770.                                         <{elseif $checkoutproduct->getCategory()}>
  771.                                             <{assign var="prodcat" value=$checkoutproduct->getCategory()}>
  772.                                             <{if $prodcat->getParents()}>
  773.                                                 <{assign var="prodcatparents" value=$prodcat->getParents()}>
  774.                                                 <{assign var="catlevel" value=0}>
  775.                                                 <{section name="parents" loop=$prodcatparents max=5}>
  776.                                                     <{math assign="catlevel" equation=x+1 x=$catlevel}>
  777.                                                     <{if $smarty.section.parents.first}>
  778.                                                         item_category: '<{$prodcatparents[parents]->getName()|escape}>',
  779.                                                     <{else}>
  780.                                                         item_category<{$catlevel}>: '<{$prodcatparents[parents]->getName()|escape}>',
  781.                                                     <{/if}>
  782.                                                 <{/section}>
  783.                                                 <{math assign="catlevel" equation=x+1 x=$catlevel}>
  784.                                                 item_category<{$catlevel}>: '<{$checkoutproduct->getCategoryName()|escape}>',
  785.                                             <{else}>
  786.                                                 item_category: '<{$checkoutproduct->getCategoryName()|escape}>',
  787.                                             <{/if}>
  788.                                         <{/if}>
  789.                                         <{if $webshop->getGooglePlaceID()}>
  790.                                             location_id: '<{$webshop->getGooglePlaceID()}>',
  791.                                         <{/if}>
  792.                                         <{if $checkoutproduct->getPrice()}>
  793.                                             price: <{$checkoutproduct->getPrice()|number_format:2:".":""}>,
  794.                                         <{/if}>
  795.                                         quantity: <{$basket[basketimpr].amount}>
  796.                                     }
  797.                                     <{if !$smarty.section.basketimpr.last}>,<{/if}>
  798.                                 <{/section}>
  799.                             ]
  800.                         }
  801.                     });
  802.                 </script>
  803.  
  804.             <{/if}>
  805.         <{* Basket dataLayer end *}>
  806.  
  807.         <{* Address dataLayer start *}>
  808.             <{if $inc == "address.html"}>
  809.                 <{* GA4 Begin checkout:
  810.                 https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtm#begin_checkout
  811.                 https://developers.google.com/analytics/devguides/collection/ga4/reference/events?client_type=gtm#begin_checkout
  812.                 https://www.simoahava.com/analytics/google-analytics-4-ecommerce-guide-google-tag-manager/#begin_checkout
  813.                 *}>
  814.                 <script>
  815.                     window.dataLayer = window.dataLayer || [];
  816.                     window.dataLayer.push({ ecommerce: null });
  817.                     window.dataLayer.push({
  818.                         event: 'begin_checkout',
  819.                         ecommerce: {
  820.                             currency: '<{$webshop->getCurrency()}>',
  821.                             value: <{$total_price|number_format:2:".":""}>,
  822.                             <{if $voucher}>
  823.                                 coupon: '<{$voucher->getCode()|escape}>',
  824.                             <{/if}>
  825.                             items: [
  826.                             <{section name=basketimpr loop=$basket}>
  827.                                     <{assign var="checkoutproduct" value=$basket[basketimpr].product}>
  828.                                     <{assign var=attributes value=$basket[basketimpr].attributes}>
  829.  
  830.                                     {
  831.                                         <{if $attributes|@count == 1}>
  832.                                             <{section name="j" loop=$attributes}>
  833.                                                 item_id: '<{$checkoutproduct->getProductId()}>:<{$attributes[j].value_id}>',
  834.                                                 item_variant: '<{$attributes[j].value}>',
  835.                                             <{/section}>
  836.                                         <{else}>
  837.                                             <{if $checkoutproduct->getProductId()}>
  838.                                                 item_id: '<{$checkoutproduct->getProductId()}>',
  839.                                             <{/if}>
  840.                                         <{/if}>
  841.                                         <{if $checkoutproduct->getName()}>
  842.                                             item_name: '<{$checkoutproduct->getName()|escape}>',
  843.                                         <{/if}>
  844.                                         <{if $webshop->getName()}>
  845.                                             affiliation: '<{$webshop->getName()|escape}>',
  846.                                         <{/if}>
  847.                                         <{if $voucher}>
  848.                                             coupon: '<{$voucher->getCode()|escape}>',
  849.                                         <{/if}>
  850.                                         currency: '<{$webshop->getCurrency()}>',
  851.                                         index: <{$smarty.section.basketimpr.index}>,
  852.                                         <{if $checkoutproduct->getBrand()}>
  853.                                             item_brand: '<{$checkoutproduct->getBrandName()|escape}>',
  854.                                         <{/if}>
  855.                                         <{if $checkoutproduct->getMainCategory()}>
  856.                                             <{assign var="prodmaincat" value=$checkoutproduct->getMainCategory()}>
  857.                                             <{if $prodmaincat->getParents()}>
  858.                                                 <{assign var="prodmaincatparents" value=$prodmaincat->getParents()}>
  859.                                                 <{assign var="catlevel" value=0}>
  860.                                                 <{section name="parents" loop=$prodmaincatparents max=5}>
  861.                                                     <{math assign="catlevel" equation=x+1 x=$catlevel}>
  862.                                                     <{if $smarty.section.parents.first}>
  863.                                                         item_category: '<{$prodmaincatparents[parents]->getName()|escape}>',
  864.                                                     <{else}>
  865.                                                         item_category<{$catlevel}>: '<{$prodmaincatparents[parents]->getName()|escape}>',
  866.                                                     <{/if}>
  867.                                                 <{/section}>
  868.                                                 <{math assign="catlevel" equation=x+1 x=$catlevel}>
  869.                                                 item_category<{$catlevel}>: '<{$checkoutproduct->getMainCategoryName()|escape}>',
  870.                                             <{else}>
  871.                                                 item_category: '<{$checkoutproduct->getMainCategoryName()|escape}>',
  872.                                             <{/if}>
  873.                                         <{elseif $checkoutproduct->getCategory()}>
  874.                                             <{assign var="prodcat" value=$checkoutproduct->getCategory()}>
  875.                                             <{if $prodcat->getParents()}>
  876.                                                 <{assign var="prodcatparents" value=$prodcat->getParents()}>
  877.                                                 <{assign var="catlevel" value=0}>
  878.                                                 <{section name="parents" loop=$prodcatparents max=5}>
  879.                                                     <{math assign="catlevel" equation=x+1 x=$catlevel}>
  880.                                                     <{if $smarty.section.parents.first}>
  881.                                                         item_category: '<{$prodcatparents[parents]->getName()|escape}>',
  882.                                                     <{else}>
  883.                                                         item_category<{$catlevel}>: '<{$prodcatparents[parents]->getName()|escape}>',
  884.                                                     <{/if}>
  885.                                                 <{/section}>
  886.                                                 <{math assign="catlevel" equation=x+1 x=$catlevel}>
  887.                                                 item_category<{$catlevel}>: '<{$checkoutproduct->getCategoryName()|escape}>',
  888.                                             <{else}>
  889.                                                 item_category: '<{$checkoutproduct->getCategoryName()|escape}>',
  890.                                             <{/if}>
  891.                                         <{/if}>
  892.                                         <{if $webshop->getGooglePlaceID()}>
  893.                                             location_id: '<{$webshop->getGooglePlaceID()}>',
  894.                                         <{/if}>
  895.                                         <{if $checkoutproduct->getPrice()}>
  896.                                             price: <{$checkoutproduct->getPrice()|number_format:2:".":""}>,
  897.                                         <{/if}>
  898.                                         quantity: <{$basket[basketimpr].amount}>
  899.                                     }
  900.                                     <{if !$smarty.section.basketimpr.last}>,<{/if}>
  901.                                 <{/section}>
  902.                             ]
  903.                         }
  904.                     });
  905.                 </script>
  906.  
  907.             <{/if}>
  908.         <{* Address dataLayer end *}>
  909.  
  910.         <{* Shipping dataLayer start *}>
  911.             <{if $inc == "shipping.html"}>
  912.                 <{* GA4 Add shipping information:
  913.                 https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtm#add_shipping_info
  914.                 https://developers.google.com/analytics/devguides/collection/ga4/reference/events?client_type=gtm#add_shipping_info
  915.                 https://www.simoahava.com/analytics/google-analytics-4-ecommerce-guide-google-tag-manager/#add_shipping_info
  916.                 *}>
  917.                 <script>
  918.                     document.addEventListener("DOMContentLoaded", function (event) {
  919.                         var formId = document.querySelector('#shipping_form');
  920.                         formId.addEventListener("submit", function(evt) {
  921.                             var selectShipping = document.querySelector('[name=shipping_id]:checked');
  922.                             window.dataLayer = window.dataLayer || [];
  923.                             window.dataLayer.push({ ecommerce: null });
  924.                             window.dataLayer.push({
  925.                                 event: 'add_shipping_info',
  926.                                 ecommerce: {
  927.                                     currency: '<{$webshop->getCurrency()}>',
  928.                                     value: <{$total_price|number_format:2:".":""}>,
  929.                                     <{if $voucher}>
  930.                                         coupon: '<{$voucher->getCode()|escape}>',
  931.                                     <{/if}>
  932.                                     shipping_tier: selectShipping.dataset.shipping_name.toString(),
  933.                                     items: [
  934.                                     <{section name=basketimpr loop=$basket}>
  935.                                             <{assign var="checkoutproduct" value=$basket[basketimpr].product}>
  936.                                             <{assign var=attributes value=$basket[basketimpr].attributes}>
  937.  
  938.                                             {
  939.                                                 <{if $attributes|@count == 1}>
  940.                                                     <{section name="j" loop=$attributes}>
  941.                                                         item_id: '<{$checkoutproduct->getProductId()}>:<{$attributes[j].value_id}>',
  942.                                                         item_variant: '<{$attributes[j].value}>',
  943.                                                     <{/section}>
  944.                                                 <{else}>
  945.                                                     <{if $checkoutproduct->getProductId()}>
  946.                                                         item_id: '<{$checkoutproduct->getProductId()}>',
  947.                                                     <{/if}>
  948.                                                 <{/if}>
  949.                                                 <{if $checkoutproduct->getName()}>
  950.                                                     item_name: '<{$checkoutproduct->getName()|escape}>',
  951.                                                 <{/if}>
  952.                                                 <{if $webshop->getName()}>
  953.                                                     affiliation: '<{$webshop->getName()|escape}>',
  954.                                                 <{/if}>
  955.                                                 <{if $voucher}>
  956.                                                     coupon: '<{$voucher->getCode()|escape}>',
  957.                                                 <{/if}>
  958.                                                 currency: '<{$webshop->getCurrency()}>',
  959.                                                 index: <{$smarty.section.basketimpr.index}>,
  960.                                                 <{if $checkoutproduct->getBrand()}>
  961.                                                     item_brand: '<{$checkoutproduct->getBrandName()|escape}>',
  962.                                                 <{/if}>
  963.                                                 <{if $checkoutproduct->getMainCategory()}>
  964.                                                     <{assign var="prodmaincat" value=$checkoutproduct->getMainCategory()}>
  965.                                                     <{if $prodmaincat->getParents()}>
  966.                                                         <{assign var="prodmaincatparents" value=$prodmaincat->getParents()}>
  967.                                                         <{assign var="catlevel" value=0}>
  968.                                                         <{section name="parents" loop=$prodmaincatparents max=5}>
  969.                                                             <{math assign="catlevel" equation=x+1 x=$catlevel}>
  970.                                                             <{if $smarty.section.parents.first}>
  971.                                                                 item_category: '<{$prodmaincatparents[parents]->getName()|escape}>',
  972.                                                             <{else}>
  973.                                                                 item_category<{$catlevel}>: '<{$prodmaincatparents[parents]->getName()|escape}>',
  974.                                                             <{/if}>
  975.                                                         <{/section}>
  976.                                                         <{math assign="catlevel" equation=x+1 x=$catlevel}>
  977.                                                         item_category<{$catlevel}>: '<{$checkoutproduct->getMainCategoryName()|escape}>',
  978.                                                     <{else}>
  979.                                                         item_category: '<{$checkoutproduct->getMainCategoryName()|escape}>',
  980.                                                     <{/if}>
  981.                                                 <{elseif $checkoutproduct->getCategory()}>
  982.                                                     <{assign var="prodcat" value=$checkoutproduct->getCategory()}>
  983.                                                     <{if $prodcat->getParents()}>
  984.                                                         <{assign var="prodcatparents" value=$prodcat->getParents()}>
  985.                                                         <{assign var="catlevel" value=0}>
  986.                                                         <{section name="parents" loop=$prodcatparents max=5}>
  987.                                                             <{math assign="catlevel" equation=x+1 x=$catlevel}>
  988.                                                             <{if $smarty.section.parents.first}>
  989.                                                                 item_category: '<{$prodcatparents[parents]->getName()|escape}>',
  990.                                                             <{else}>
  991.                                                                 item_category<{$catlevel}>: '<{$prodcatparents[parents]->getName()|escape}>',
  992.                                                             <{/if}>
  993.                                                         <{/section}>
  994.                                                         <{math assign="catlevel" equation=x+1 x=$catlevel}>
  995.                                                         item_category<{$catlevel}>: '<{$checkoutproduct->getCategoryName()|escape}>',
  996.                                                     <{else}>
  997.                                                         item_category: '<{$checkoutproduct->getCategoryName()|escape}>',
  998.                                                     <{/if}>
  999.                                                 <{/if}>
  1000.                                                 <{if $webshop->getGooglePlaceID()}>
  1001.                                                     location_id: '<{$webshop->getGooglePlaceID()}>',
  1002.                                                 <{/if}>
  1003.                                                 <{if $checkoutproduct->getPrice()}>
  1004.                                                     price: <{$checkoutproduct->getPrice()|number_format:2:".":""}>,
  1005.                                                 <{/if}>
  1006.                                                 quantity: <{$basket[basketimpr].amount}>
  1007.                                             }
  1008.                                             <{if !$smarty.section.basketimpr.last}>,<{/if}>
  1009.                                         <{/section}>
  1010.                                     ]
  1011.                                 }
  1012.                             });
  1013.                         });
  1014.                     });
  1015.                 </script>
  1016.  
  1017.             <{/if}>
  1018.         <{* Shipping dataLayer end *}>
  1019.  
  1020.         <{* Approve dataLayer start *}>
  1021.             <{if ($webshop->getSkipApprove() && $inc == "address.html") || ($webshop->getSkipApprove() && $inc == "shipping.html") || $inc == "approve.html"}>
  1022.                 <{* GA4 Add payment information:
  1023.                 https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtm#add_payment_info
  1024.                 https://developers.google.com/analytics/devguides/collection/ga4/reference/events?client_type=gtm#add_payment_info
  1025.                 https://www.simoahava.com/analytics/google-analytics-4-ecommerce-guide-google-tag-manager/#add_payment_info
  1026.                 *}>
  1027.                 <script>
  1028.                     document.addEventListener("click", function(event) {
  1029.                         if (event.target.classList.contains('paymentStep')) {
  1030.                             var selectPayment = document.querySelector('[name=payment_gateway_id]:checked');
  1031.                             window.dataLayer = window.dataLayer || [];
  1032.                             window.dataLayer.push({ ecommerce: null });
  1033.                             window.dataLayer.push({
  1034.                                 event: 'add_payment_info',
  1035.                                 ecommerce: {
  1036.                                     currency: '<{$webshop->getCurrency()}>',
  1037.                                     value: <{$total_price|number_format:2:".":""}>,
  1038.                                     <{if $voucher}>
  1039.                                         coupon: '<{$voucher->getCode()|escape}>',
  1040.                                     <{/if}>
  1041.                                     payment_type: selectPayment.dataset.payment_name.toString(),
  1042.                                     items: [
  1043.                                     <{section name=basketimpr loop=$basket}>
  1044.                                             <{assign var="checkoutproduct" value=$basket[basketimpr].product}>
  1045.                                             <{assign var=attributes value=$basket[basketimpr].attributes}>
  1046.  
  1047.                                             {
  1048.                                                 <{if $attributes|@count == 1}>
  1049.                                                     <{section name="j" loop=$attributes}>
  1050.                                                         item_id: '<{$checkoutproduct->getProductId()}>:<{$attributes[j].value_id}>',
  1051.                                                         item_variant: '<{$attributes[j].value}>',
  1052.                                                     <{/section}>
  1053.                                                 <{else}>
  1054.                                                     <{if $checkoutproduct->getProductId()}>
  1055.                                                         item_id: '<{$checkoutproduct->getProductId()}>',
  1056.                                                     <{/if}>
  1057.                                                 <{/if}>
  1058.                                                 <{if $checkoutproduct->getName()}>
  1059.                                                     item_name: '<{$checkoutproduct->getName()|escape}>',
  1060.                                                 <{/if}>
  1061.                                                 <{if $webshop->getName()}>
  1062.                                                     affiliation: '<{$webshop->getName()|escape}>',
  1063.                                                 <{/if}>
  1064.                                                 <{if $voucher}>
  1065.                                                     coupon: '<{$voucher->getCode()|escape}>',
  1066.                                                 <{/if}>
  1067.                                                 currency: '<{$webshop->getCurrency()}>',
  1068.                                                 index: <{$smarty.section.basketimpr.index}>,
  1069.                                                 <{if $checkoutproduct->getBrand()}>
  1070.                                                     item_brand: '<{$checkoutproduct->getBrandName()|escape}>',
  1071.                                                 <{/if}>
  1072.                                                 <{if $checkoutproduct->getMainCategory()}>
  1073.                                                     <{assign var="prodmaincat" value=$checkoutproduct->getMainCategory()}>
  1074.                                                     <{if $prodmaincat->getParents()}>
  1075.                                                         <{assign var="prodmaincatparents" value=$prodmaincat->getParents()}>
  1076.                                                         <{assign var="catlevel" value=0}>
  1077.                                                         <{section name="parents" loop=$prodmaincatparents max=5}>
  1078.                                                             <{math assign="catlevel" equation=x+1 x=$catlevel}>
  1079.                                                             <{if $smarty.section.parents.first}>
  1080.                                                                 item_category: '<{$prodmaincatparents[parents]->getName()|escape}>',
  1081.                                                             <{else}>
  1082.                                                                 item_category<{$catlevel}>: '<{$prodmaincatparents[parents]->getName()|escape}>',
  1083.                                                             <{/if}>
  1084.                                                         <{/section}>
  1085.                                                         <{math assign="catlevel" equation=x+1 x=$catlevel}>
  1086.                                                         item_category<{$catlevel}>: '<{$checkoutproduct->getMainCategoryName()|escape}>',
  1087.                                                     <{else}>
  1088.                                                         item_category: '<{$checkoutproduct->getMainCategoryName()|escape}>',
  1089.                                                     <{/if}>
  1090.                                                 <{elseif $checkoutproduct->getCategory()}>
  1091.                                                     <{assign var="prodcat" value=$checkoutproduct->getCategory()}>
  1092.                                                     <{if $prodcat->getParents()}>
  1093.                                                         <{assign var="prodcatparents" value=$prodcat->getParents()}>
  1094.                                                         <{assign var="catlevel" value=0}>
  1095.                                                         <{section name="parents" loop=$prodcatparents max=5}>
  1096.                                                             <{math assign="catlevel" equation=x+1 x=$catlevel}>
  1097.                                                             <{if $smarty.section.parents.first}>
  1098.                                                                 item_category: '<{$prodcatparents[parents]->getName()|escape}>',
  1099.                                                             <{else}>
  1100.                                                                 item_category<{$catlevel}>: '<{$prodcatparents[parents]->getName()|escape}>',
  1101.                                                             <{/if}>
  1102.                                                         <{/section}>
  1103.                                                         <{math assign="catlevel" equation=x+1 x=$catlevel}>
  1104.                                                         item_category<{$catlevel}>: '<{$checkoutproduct->getCategoryName()|escape}>',
  1105.                                                     <{else}>
  1106.                                                         item_category: '<{$checkoutproduct->getCategoryName()|escape}>',
  1107.                                                     <{/if}>
  1108.                                                 <{/if}>
  1109.                                                 <{if $webshop->getGooglePlaceID()}>
  1110.                                                     location_id: '<{$webshop->getGooglePlaceID()}>',
  1111.                                                 <{/if}>
  1112.                                                 <{if $checkoutproduct->getPrice()}>
  1113.                                                     price: <{$checkoutproduct->getPrice()|number_format:2:".":""}>,
  1114.                                                 <{/if}>
  1115.                                                 quantity: <{$basket[basketimpr].amount}>
  1116.                                             }
  1117.                                             <{if !$smarty.section.basketimpr.last}>,<{/if}>
  1118.                                         <{/section}>
  1119.                                     ]
  1120.                                 }
  1121.                             });
  1122.                         }
  1123.                     });
  1124.                 </script>
  1125.             <{/if}>
  1126.         <{* Approve dataLayer end *}>
  1127.  
  1128.         <{* Thanks dataLayer start *}>
  1129.             <{if $inc == "thanks.html" && $order}>
  1130.                 <{* Only once start *}>
  1131.                     <{if !$order->getTrackingCalled()}>
  1132.                         <{assign var="products" value=$order->getProducts()}>
  1133.                         <{assign var="orderproducts" value=$order->getOrderProducts()}>
  1134.                         <{assign var="totaldiscount" value=0}>
  1135.  
  1136.                         <{* GA4 Purchase:
  1137.                         https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtm#purchase
  1138.                         https://developers.google.com/analytics/devguides/collection/ga4/reference/events?client_type=gtm#purchase
  1139.                         https://www.simoahava.com/analytics/google-analytics-4-ecommerce-guide-google-tag-manager/#purchase
  1140.                         *}>
  1141.                         <script>
  1142.                             window.dataLayer = window.dataLayer || [];
  1143.                             window.dataLayer.push({ ecommerce: null });
  1144.                             window.dataLayer.push({
  1145.                                 event: 'purchase',
  1146.                                 ecommerce: {
  1147.                                     <{if $webshop->getCurrency()}>
  1148.                                         currency: '<{$webshop->getCurrency()}>',
  1149.                                     <{/if}>
  1150.                                     <{if $order->getWebshopOrderId()}>
  1151.                                         transaction_id: '<{$order->getWebshopOrderId()}>',
  1152.                                     <{/if}>
  1153.                                     <{if $order->getTotalPrice()}>
  1154.                                         value: '<{$order->getTotalPrice()|number_format:2:".":""}>',
  1155.                                     <{/if}>
  1156.                                     <{if $webshop->getName()|escape}>
  1157.                                         affiliation: '<{$webshop->getName()|escape}>',
  1158.                                     <{/if}>
  1159.                                     <{if $order->getVoucherCode()}>
  1160.                                         coupon: '<{$order->getVoucherCode()|escape}>',
  1161.                                     <{/if}>
  1162.                                     <{if $order->getShippingPrice()}>
  1163.                                         shipping: '<{$order->getShippingPrice()|number_format:2:".":""}>',
  1164.                                     <{/if}>
  1165.                                     <{if $order->getVat()}>
  1166.                                         tax: '<{$order->getVat()|number_format:2:".":""}>',
  1167.                                     <{/if}>
  1168.                                     <{* Google Ads Conversion with Cart Data:
  1169.                                     https://support.google.com/google-ads/answer/9028614?hl=en#zippy=%2Cinstall-with-google-tag-manager
  1170.                                     *}>
  1171.                                         <{if $order->getVoucherDiscountAmount()}>
  1172.                                             discount: <{$order->getVoucherDiscountAmount()}>,
  1173.                                         <{/if}>
  1174.                                         <{if $webshop->getGoogleMerchantId()}>
  1175.                                             aw_merchant_id: <{$webshop->getGoogleMerchantId()}>,
  1176.                                             aw_feed_country: 'DK',
  1177.                                             aw_feed_language: 'DA',
  1178.                                         <{/if}>
  1179.                                     items: [
  1180.                                         <{section name=purchaseimpr loop=$orderproducts}>
  1181.                                             <{assign var=attributes value=$orderproducts[purchaseimpr]->getAttributes()}>
  1182.                                             <{assign var="p" value=$orderproducts[purchaseimpr]->getProduct()}>
  1183.                                             <{if $orderproducts[purchaseimpr]->getFromBundle() == "0"}>
  1184.                                                 {
  1185.                                                     <{if $attributes|@count == 1}>
  1186.                                                         <{section name="j" loop=$attributes}>
  1187.                                                             item_id: '<{$orderproducts[purchaseimpr]->getProductId()}>:<{$attributes[j].attribute_value_id}>',
  1188.                                                             item_variant: '<{$attributes[j].val}>',
  1189.                                                         <{/section}>
  1190.                                                     <{else}>
  1191.                                                         item_id: '<{$orderproducts[purchaseimpr]->getProductId()}>',
  1192.                                                     <{/if}>
  1193.                                                     item_name: '<{$orderproducts[purchaseimpr]->getName()|escape}>',
  1194.                                                     <{if $webshop->getName()}>
  1195.                                                         affiliation: '<{$webshop->getName()|escape}>',
  1196.                                                     <{/if}>
  1197.                                                     <{if $voucher}>
  1198.                                                         coupon: '<{$voucher->getCode()|escape}>',
  1199.                                                     <{/if}>
  1200.                                                     currency: '<{$webshop->getCurrency()}>',
  1201.                                                     index: <{$smarty.section.purchaseimpr.index}>,
  1202.                                                     <{if $p->getBrand()}>
  1203.                                                         item_brand: '<{$p->getBrandName()|escape}>',
  1204.                                                     <{/if}>
  1205.                                                     <{if $p->getMainCategory()}>
  1206.                                                         <{assign var="prodmaincat" value=$p->getMainCategory()}>
  1207.                                                         <{if $prodmaincat->getParents()}>
  1208.                                                             <{assign var="prodmaincatparents" value=$prodmaincat->getParents()}>
  1209.                                                             <{assign var="catlevel" value=0}>
  1210.                                                             <{section name="parents" loop=$prodmaincatparents max=5}>
  1211.                                                                 <{math assign="catlevel" equation=x+1 x=$catlevel}>
  1212.                                                                 <{if $smarty.section.parents.first}>
  1213.                                                                     item_category: '<{$prodmaincatparents[parents]->getName()|escape}>',
  1214.                                                                 <{else}>
  1215.                                                                     item_category<{$catlevel}>: '<{$prodmaincatparents[parents]->getName()|escape}>',
  1216.                                                                 <{/if}>
  1217.                                                             <{/section}>
  1218.                                                             <{math assign="catlevel" equation=x+1 x=$catlevel}>
  1219.                                                             item_category<{$catlevel}>: '<{$p->getMainCategoryName()|escape}>',
  1220.                                                         <{else}>
  1221.                                                             item_category: '<{$p->getMainCategoryName()|escape}>',
  1222.                                                         <{/if}>
  1223.                                                     <{elseif $p->getCategory()}>
  1224.                                                         <{assign var="prodcat" value=$p->getCategory()}>
  1225.                                                         <{if $prodcat->getParents()}>
  1226.                                                             <{assign var="prodcatparents" value=$prodcat->getParents()}>
  1227.                                                             <{assign var="catlevel" value=0}>
  1228.                                                             <{section name="parents" loop=$prodcatparents max=5}>
  1229.                                                                 <{math assign="catlevel" equation=x+1 x=$catlevel}>
  1230.                                                                 <{if $smarty.section.parents.first}>
  1231.                                                                     item_category: '<{$prodcatparents[parents]->getName()|escape}>',
  1232.                                                                 <{else}>
  1233.                                                                     item_category<{$catlevel}>: '<{$prodcatparents[parents]->getName()|escape}>',
  1234.                                                                 <{/if}>
  1235.                                                             <{/section}>
  1236.                                                             <{math assign="catlevel" equation=x+1 x=$catlevel}>
  1237.                                                             item_category<{$catlevel}>: '<{$p->getCategoryName()|escape}>',
  1238.                                                         <{else}>
  1239.                                                             item_category: '<{$p->getCategoryName()|escape}>',
  1240.                                                         <{/if}>
  1241.                                                     <{/if}>
  1242.                                                     <{if $webshop->getGooglePlaceID()}>
  1243.                                                         location_id: '<{$webshop->getGooglePlaceID()}>',
  1244.                                                     <{/if}>
  1245.                                                     price: <{$orderproducts[purchaseimpr]->getPrice()|number_format:2:".":""}>,
  1246.                                                     quantity: <{$orderproducts[purchaseimpr]->getAmount()}>
  1247.                                                 }
  1248.                                             <{/if}>
  1249.                                             <{if !$smarty.section.purchaseimpr.last}>,<{/if}>
  1250.                                         <{/section}>
  1251.                                     ]
  1252.                                 }
  1253.                             });
  1254.                         </script>
  1255.  
  1256.                         <{* Google Customer Reviews start *}>
  1257.                             <{if $webshop->getGoogleMerchantId() && $webshop->getGoogleMerchantDeliveryDays()}>
  1258.                                 <{assign var="p" value=$order->getProducts()}>
  1259.                                 <script src="https://apis.google.com/js/platform.js?onload=renderOptIn" async defer></script>
  1260.                                 <script>
  1261.                                     window.renderOptIn = function() {
  1262.                                         window.gapi.load('surveyoptin', function() {
  1263.                                             window.gapi.surveyoptin.render(
  1264.                                                 {
  1265.                                                     'merchant_id': <{$webshop->getGoogleMerchantId()}>,
  1266.                                                     'order_id': '<{$order->getWebshopOrderId()}>',
  1267.                                                     'email': '<{$order->getEmail()|escape}>',
  1268.                                                     'delivery_country': 'DK',
  1269.                                                     'estimated_delivery_date': '<{"+"|cat:$webshop->getGoogleMerchantDeliveryDays()|cat:" days"|date_format:"%Y-%m-%d"}>',
  1270.                                                         'products':
  1271.                                                         <{strip}>
  1272.                                                             [
  1273.                                                             <{section name="googlemerchant" loop=$p}>
  1274.                                                                 {
  1275.                                                                     <{assign var="prodgtin" value=$p[googlemerchant]->getGtin()}>
  1276.                                                                     <{if $prodgtin}>
  1277.                                                                         'gtin':'<{$prodgtin}>'
  1278.                                                                     <{/if}>
  1279.                                                                 }
  1280.                                                                 <{if $smarty.section.googlemerchant.last}><{else}>,<{/if}>
  1281.                                                             <{/section}>
  1282.                                                             ]
  1283.                                                         <{/strip}>
  1284.                                                 });
  1285.                                         });
  1286.                                     }
  1287.                                 </script>
  1288.                             <{/if}>
  1289.                         <{* Google Customer Reviews end *}>
  1290.  
  1291.                     <{/if}>
  1292.  
  1293.                     <{$order->setTrackingCalled()}>
  1294.                 <{* Only once end *}>
  1295.  
  1296.             <{/if}>
  1297.         <{* Thanks dataLayer end *}>
  1298.  
  1299.         <{* Page dataLayer start *}>
  1300.             <{if $page}>
  1301.             <{/if}>
  1302.         <{* Page dataLayer end *}>
  1303.  
  1304.         <{* Blog post dataLayer start *}>
  1305.             <{if $blog_post || $blog}>
  1306.             <{/if}>
  1307.         <{* Blog post dataLayer end *}>
  1308.  
  1309.         <{* 404 dataLayer start *}>
  1310.             <{if $inc == "404.html"}>
  1311.             <{/if}>
  1312.         <{* 404 dataLayer end *}>
  1313.  
  1314.         <{* 410 dataLayer start *}>
  1315.             <{if $inc == "410.html"}>
  1316.             <{/if}>
  1317.         <{* 410 dataLayer end *}>
  1318.  
  1319.         <{* User sign in dataLayer start *}>
  1320.             <{if $inc == "user-sign-in.html" && $customer}>
  1321.             <{/if}>
  1322.         <{* User sign in dataLayer end *}>
  1323.  
  1324.         <{* User signup dataLayer start *}>
  1325.             <{if $inc == "user-sign-up.html" && $created}>
  1326.             <{/if}>
  1327.         <{* User signup dataLayer end*}>
  1328.  
  1329.         <{* Google Optimize start *}>
  1330.             <{if $webshop->getGoogleOptimizeId()}>
  1331.                 <style>.async-hide { opacity: 0 !important} </style>
  1332.                 <script>(function(a,s,y,n,c,h,i,d,e){s.className+=' '+y;h.start=1*new Date;
  1333.                 h.end=i=function(){s.className=s.className.replace(RegExp(' ?'+y),'')};
  1334.                 (a[n]=a[n]||[]).hide=h;setTimeout(function(){i();h.end=null},c);h.timeout=c;
  1335.                 })(window,document.documentElement,'async-hide','dataLayer',4000,
  1336.                 {'<{$webshop->getGoogleOptimizeId()}>':true});</script>
  1337.                 <script src="https://www.googleoptimize.com/optimize.js?id=<{$webshop->getGoogleOptimizeId()}>"></script>
  1338.             <{/if}>
  1339.         <{* Google Optimize end *}>
  1340.  
  1341.         <{* Google Tag Manager container start *}>
  1342.             <script>
  1343.                 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
  1344.                 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
  1345.                 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
  1346.                 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
  1347.                 })(window,document,'script','dataLayer','<{$webshop->getGoogleTagManagerId()}>');
  1348.             </script>
  1349.         <{* Google Tag Manager container end *}>
  1350.  
  1351.     <{/if}>
  1352. <{/strip}>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement