$(document).ready(function(){ //DataLayer 事件 $('.setDataLayer').click(function(){ var type = $(this).data('dtype'); var serial_no = $(this).data('iserial_no'); var index_no = $(this).data('iindex_no'); var block = $(this).data('lblock'); var name = $(this).data('lname'); var url = $(this).data('lurl'); $.ajax({ url:Project_Country+'ajax/ajax_set_datalayer.php', type:"POST", data: { type: type, block: block, name:name, url:url, serial_no: serial_no, index_no: index_no }, cache:false, success:function(data){} }); }); }); // 行銷商品ID var pid = 'pos_no'; // prod_no serial_no /* ========================================================================= * FB FBQ * ========================================================================= */ var fbUserData = ''; // FB USER DATA function setFBUserData(data){ fbUserData = data; } // 基底碼 function setFBBaseCode(FBID, data){ !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', FBID, data); } function sendFBQData(key){ if(window.dataLayer[key-1]['action']){ var event = window.dataLayer[key-1]['action']['event']; var event_id = window.dataLayer[key-1]['action']['event_id']; var data = window.dataLayer[key-1]['action']; switch (event) { case 'page_view': fbq('track','PageView',{},{eventID: event_id}); switch (data['view']){ case 'about': case 'about-news': case 'about-news-detail': case 'about-privacy': case 'about': case 'sale': case 'witness': case 'witness-detail': case 'blog': case 'blog-detail': fbq('track','ViewContent',{},{eventID: event_id}); break; } break; case 'add_to_cart': var arr = { "value" : data['items'][0]['price1'], "currency" : "TWD", "content_ids" : [data['items'][0][pid]], "content_type" : "product", "contents" : [{ "id" : data['items'][0][pid], "quantity" : data['items'][0]['quantity'] }] }; fbq('track','AddToCart',arr, {eventID: event_id}); break; case 'add_to_wishlist': var arr = { "value" : data['items'][0]['price1'], "currency" : "TWD", "content_ids" : [data['items'][0][pid]], "content_type" : "product" }; fbq('track','AddToWishlist',arr, {eventID: event_id}); break; case 'sign_up': fbq('track','CompleteRegistration',{}, {eventID: event_id}); break; case 'add_payment_info': fbq('track','AddPaymentInfo',{}, {eventID: event_id}); break; case 'generate_lead': fbq('track','Lead',{}, {eventID: event_id}); break; case 'view_cart': fbq('track','InitiateCheckout',{}, {eventID: event_id}); break; case 'purchase': var ids = []; for(i in data['items']){ ids.push(data['items'][i][pid]); } var contents = []; for(i in data['items']){ contents.push({ "id" : data['items'][i][pid], "quantity" : data['items'][i]['quantity'] }); } var arr = { "value" : data['order_money'], "currency" : "TWD", "content_ids" : ids, "content_type" : "product", "contents" : contents }; fbq('track','Purchase',arr, {eventID: event_id}); break; case 'search': for(j in window.dataLayer){ if(window.dataLayer[j]['action']){ if(window.dataLayer[j]['action']['event'] == 'view_item_list'){ var prodData = window.dataLayer[j]['action']; } } } var ids = []; for(i in prodData['items']){ ids.push(prodData['items'][i][pid]); } var arr = { "search_string" : data['search_term'], "currency" : "TWD", "content_ids" : ids, "content_type" : "product" }; fbq('track','Search',arr, {eventID: event_id}); break; case 'view_item_list': fbq('track','ViewContent',{}, {eventID: event_id}); break; case 'view_item': var ids = []; for(i in data['items']){ ids.push(data['items'][i][pid]); } var arr = { "currency" : "TWD", "content_ids" : ids, "content_type" : "product", "value" : data['items'][0]['price1'] }; fbq('track','ViewContent',arr, {eventID: event_id}); break; } } } /* ========================================================================= * GA * ========================================================================= */ // 基底碼 function setGABaseCode(GAID){ (function(i,s,o,g,r,a,m) {i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date(); a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)}) (window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', GAID, 'auto'); ga('require', 'ec'); ga('send', 'pageview'); } function sendGAData(key){ if(window.dataLayer[key-1]['action']){ var event = window.dataLayer[key-1]['action']['event']; var event_id = window.dataLayer[key-1]['action']['event_id']; var data = window.dataLayer[key-1]['action']; switch (event) { case 'view_item_list': for(i in data['items']){ var arr = { 'id' : data['items'][i][pid], 'name' : data['items'][i]['name'], 'category' : data['items'][i]['category'], 'brand' : data['items'][i]['brand'], 'variant' : data['items'][i]['spec1'], 'list' : 'Search Results', 'position' : data['items'][i]['index_no'] }; ga('ec:addImpression', arr); } break; case 'view_item': var arr = { 'id' : data['items'][0][pid], 'name' : data['items'][0]['name'], 'category' : data['items'][0]['category'], 'brand' : data['items'][0]['brand'], 'variant' : data['items'][0]['spec1'] }; ga('set', 'dimension1', data['items'][0][pid]); ga('set', 'dimension2', 'product'); ga('set', 'dimension3', data['items'][0]['price1']); ga('ec:addProduct', arr); ga('ec:setAction', 'detail'); ga('send', 'event', '商品詳細頁', '瀏覽'); break; case 'view_cart': var ids = []; for(i in data['items']){ ids.push(data['items'][i][pid]); } var str = ids.join(','); ga('set', 'dimension1', str); ga('set', 'dimension2', 'cart'); for(i in data['items']){ var arr = { 'id' : data['items'][i][pid], 'name' : data['items'][i]['name'], 'category' : data['items'][i]['category'], 'brand' : data['items'][i]['brand'], 'variant' : data['items'][i]['spec1'], 'price' : data['items'][i]['price1'], 'quantity' : data['items'][i]['quantity'] }; ga('ec:addProduct', arr); } ga('ec:setAction', 'checkout', {'step': '1'}); ga('send', 'event', '購物車', '進入購物車'); break; case 'begin_checkout': var ids = []; for(i in data['items']){ ids.push(data['items'][i][pid]); } var str = ids.join(','); ga('set', 'dimension1', str); ga('set', 'dimension2', 'cart'); ga('set', 'dimension3', data['order_money']); for(i in data['items']){ var arr = { 'id' : data['items'][i][pid], 'name' : data['items'][i]['name'], 'category' : data['items'][i]['category'], 'brand' : data['items'][i]['brand'], 'variant' : data['items'][i]['spec1'], 'price' : data['items'][i]['price1'], 'quantity' : data['items'][i]['quantity'] }; ga('ec:addProduct', arr); } ga('ec:setAction', 'checkout', {'step': '2'}); ga('send', 'event', '購物車', '填寫寄送資料'); break; case 'purchase': break; case 'add_to_cart': for(i in data['items']){ var arr = { 'id' : data['items'][i][pid], 'name' : data['items'][i]['name'], 'category' : data['items'][i]['category'], 'brand' : data['items'][i]['brand'], 'variant' : data['items'][i]['spec1'], 'price' : data['items'][i]['price1'], 'quantity' : data['items'][i]['quantity'] }; ga('ec:addProduct', arr); } ga('ec:setAction', 'add'); ga('send', 'event', '購物車', '加入購物車'); break; case 'add_payment_info': for(i in data['items']){ var arr = { 'id' : data['items'][i][pid], 'name' : data['items'][i]['name'], 'category' : data['items'][i]['category'], 'brand' : data['items'][i]['brand'], 'variant' : data['items'][i]['spec1'], 'price' : data['items'][i]['price1'], 'quantity' : data['items'][i]['quantity'] }; ga('ec:addProduct', arr); } ga('ec:setAction', 'checkout', {'step':3}); ga('send', 'event', '購物車', '選擇付款方式'); break; case 'select_item': var pathName = location.pathname; if(pathName.indexOf('/products/') >= 0){ var list_title = '商品列表頁'; } if(pathName.indexOf('/searchall-products/') >= 0){ var list_title = '搜尋商品列表頁'; } if(pathName.indexOf('/brands-detail/') >= 0){ var list_title = '品牌列表頁'; } ga('ec:addProduct',{ 'id' : data['items'][0][pid], 'name' : data['items'][0]['name'], 'category' : data['items'][0]['category'], 'brand' : data['items'][0]['brand'], 'position' : data['items'][0]['index_no'] }); ga('ec:setAction','click',{list: data['items'][0]['category']}); ga('send', 'event', list_title, '瀏覽',{'nonInteraction':1}); ga('send','event',data['items'][0]['category'],'點擊商品連結','Results',{ hitCallback:function(){} },{'nonInteraction':1}); break; case 'refund': ga('ec:setAction','refund',{'id':data['order_id']}); ga('send','event','訂單','退貨成功',{'nonInteraction':1}); break; case 'remove_from_cart': for(i in data['items']){ var arr = { 'id' : data['items'][i][pid], 'name' : data['items'][i]['name'], 'category' : data['items'][i]['category'], 'brand' : data['items'][i]['brand'], 'variant' : data['items'][i]['spec1'], 'price' : data['items'][i]['price1'], 'quantity' : data['items'][i]['quantity'] }; var str = JSON.stringify(arr); ga('ec:addProduct', str); } ga('ec:setAction','remove'); ga('send','event','購物車','移除購物車'); break; } } } function sendGAOtherData(){ var pathName = location.pathname; if(pathName.indexOf('/shopcart/') >= 0){ $("#Main_Form").fromsAuth({ type:'NONE', callafter:function(){ var obj = JSON.parse($("#dataLayer_items").text()); for(i in obj){ var arr = { 'id' : obj[i][pid], 'name' : obj[i]['name'], 'category' : obj[i]['category'], 'brand' : obj[i]['brand'], 'variant' : obj[i]['spec1'], 'price' : obj[i]['price1'], 'quantity' : obj[i]['quantity'], }; var str = JSON.stringify(arr); ga('ec:addProduct', arr); } ga('ec:setAction','checkout',{'step':4}); ga('send','event','購物車','確認訂單'); return true; } }); } } /* ========================================================================= * GA4 ADS * ========================================================================= */ window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);return;} var GADSID = ''; var GA4ID = ''; var GMARKET = ''; var GACONVER = ''; var GCOMPLETE = ''; var GSHOPCART = ''; var GREGISTER = ''; var GCHECKOUT = ''; // 基底碼 function setGA4BaseCode(GA4 = '', GADS = '', MARKET = ''){ GA4ID = GA4; GADSID = GADS; GMARKET = MARKET; gtag('js', new Date()); if(GA4ID != ''){ gtag('config', GA4ID); } if(GADSID != ''){ gtag('config', GADSID); gtag('event', 'conversion', { 'send_to': GADSID + '/' + GMARKET, 'event_callback': window.location.href }); } var dt = new Date(); var hr = dt.getHours(); if((hr % 2) > 0){ var str = (hr - 1) + ':00~' + (hr + 1) + ':00'; }else{ var str = (hr) + ':00~' + (hr + 2) + ':00'; } gtag('set','user_properties',{'time_interval':str}); } function setGADSData(CONVER = '', COMPLETE = '', SHOPCART = '', REGISTER = '', CHECKOUT=''){ GACONVER = CONVER; GCOMPLETE = COMPLETE; GSHOPCART = SHOPCART; GREGISTER = REGISTER; GCHECKOUT = CHECKOUT; } function sendGADSData(key){ if(window.dataLayer[key-1]['action']){ var event = window.dataLayer[key-1]['action']['event']; var event_id = window.dataLayer[key-1]['action']['event_id']; var data = window.dataLayer[key-1]['action']; switch (event) { case 'page_view': switch (data['view']) { case 'index': gtag('event','page_view',{'send_to':GADSID,'ecomm_pagetype':'home'}); break; case 'about-contact': case 'about': case 'witness': case 'witness-detail': case 'blog': case 'blog-detail': case 'about-news': case 'about-news-detail': gtag('event','page_view',{'send_to':GADSID,'ecomm_pagetype':'other'}); break; } break; case 'view_item_list': var ids = []; var items = []; for(i in data['items']) { ids.push(data['items'][i][pid]); var arr = { 'id' : data['items'][i][pid], 'google_business_vertical':'retail' }; items.push(arr); } gtag('event','page_view',{ 'send_to' : GADSID, 'ecomm_pagetype' : 'category', 'ecomm_prodid':ids, 'items':items, }); break; case 'view_item': var items = []; var arr = { 'id' : data['items'][0][pid], 'google_business_vertical':'retail' }; items.push(arr); gtag('event','page_view',{ 'send_to':GADSID, 'ecomm_pagetype':'product', 'ecomm_prodid':data['items'][0][pid], 'ecomm_totalvalue':data['items'][0]['price1'], 'currency':'TWD', 'value':data['items'][0]['price1'], 'items':items, }); break; case 'search': gtag('event','page_view',{ 'send_to':GADSID, 'ecomm_pagetype':'searchresults' }); break; case 'view_cart': var ids = []; for(i in data['items']){ ids.push(data['items'][i][pid]); } gtag('event','page_view',{ 'send_to':GADSID, 'ecomm_pagetype':'cart', 'ecomm_prodid':ids, 'ecomm_totalvalue':data['order_money'] }); break; case 'purchase': var ids = []; for(i in data['items']){ ids.push(data['items'][i][pid]); } gtag('event','page_view',{ 'send_to':GADSID, 'ecomm_pagetype':'purchase', 'ecomm_prodid':ids, 'ecomm_totalvalue':data['order_money'] }); if(GADSID && GACONVER){ gtag('event', 'conversion', {'send_to':GADSID + '/' + GACONVER}); } if(GADSID && GCOMPLETE){ gtag('event', 'conversion', { 'send_to': GADSID + '/' + GCOMPLETE, 'transaction_id': data['order_id'], 'value': data['order_money'], 'currency': 'TWD', 'event_callback': window.location.href }); } break; case 'add_to_cart': if(GADSID && GSHOPCART){ gtag('event', 'conversion', {'send_to': GADSID + '/' + GSHOPCART}); } break; case 'sign_up': if(GADSID && GREGISTER){ gtag('event', 'conversion', { 'send_to': GADSID + '/' + GREGISTER, }); } break; case 'begin_checkout': if(GADSID && GCHECKOUT) { gtag('event', 'conversion', { 'send_to': GADSID + '/' + GCHECKOUT, }); } break; } } } function sendGA4Data(key){ if(window.dataLayer[key-1]['user'] && window.dataLayer[key-1]['user']['id'] != 'NULL'){ gtag('set', 'user_properties', {'mid': window.dataLayer[key-1]['user']['id']}); gtag('set', 'user_properties', {'user_id': window.dataLayer[key-1]['user']['cellphone']}); gtag('set', 'user_properties', {'mlvl': window.dataLayer[key-1]['user']['vip']}); } if(window.dataLayer[key-1]['action']){ var event = window.dataLayer[key-1]['action']['event']; var event_id = window.dataLayer[key-1]['action']['event_id']; var data = window.dataLayer[key-1]['action']; switch (event) { case 'event': gtag("event","view_event_list"); break case 'view_event': var eventName = data['name']; gtag("event","view_event",{ event_name:eventName }); break; case 'sign_finish': gtag("event","sign_finish",{ event_name: data['event_name'], event_id: data['event_id'], value: data['money'], people: data['peoples'] }); break; case 'page_view': break; case 'view_item_list': var category = data['items'][0]['category'].split(' > '); var count = category.length; var count2 = data['items'].length; var ids = []; if(data['tag_id']){ var tag = data['tag_id']; } for(i in data['items']){ var arr = { 'item_id' : data['items'][i][pid], 'item_name' : data['items'][i]['name'], 'currency' : 'TWD', 'item_brand' : data['items'][i]['brand'], 'item_variant' : data['items'][i]['spec1'], 'price' : data['items'][i]['price1'], 'quantity' : 1, 'index' : data['items'][i]['index_no'], 'item_category':category[0], 'item_category2':category[1], 'item_category3':category[2], 'item_category4':category[3] }; ids.push(arr); if((parseInt(i) + 1) % 5 == 0 || (parseInt(i) + 1) == count2){ gtag('event','view_item_list',{ 'item_list_id': tag ? tag : category[count - 1], 'item_list_name': tag ? tag : category[count - 1], 'items': ids }); var ids = []; } } break; case 'view_item': var category = data['items'][0]['category'].split(' > '); var ids = []; var arr = { 'item_id' : data['items'][0][pid], 'item_name' : data['items'][0]['name'], 'currency' : 'TWD', 'item_brand' : data['items'][0]['brand'], 'item_variant' : data['items'][0]['spec1'], 'price' : data['items'][0]['price1'], 'quantity' : 1, 'item_category':category[0], 'item_category2':category[1], 'item_category3':category[2], 'item_category4':category[3] }; ids.push(arr); gtag("event","view_item",{'items': ids}); break; case 'view_cart': var ids = []; for(i in data['items']){ var category = data['items'][i]['category'].split(' > '); var arr = { 'item_id' : data['items'][i][pid], 'item_name' : data['items'][i]['name'], 'currency' : 'TWD', 'item_brand' : data['items'][i]['brand'], 'item_variant' : data['items'][i]['spec1'], 'price' : data['items'][i]['price1'], 'quantity' : 1, 'item_category':category[0], 'item_category2':category[1], 'item_category3':category[2], 'item_category4':category[3] }; ids.push(arr); } gtag("event","view_cart",{'items': ids}); break; case 'begin_checkout': var ids = []; for(i in data['items']){ var category = data['items'][i]['category'].split(' > '); var arr = { 'item_id' : data['items'][i][pid], 'item_name' : data['items'][i]['name'], 'currency' : 'TWD', 'item_brand' : data['items'][i]['brand'], 'item_variant' : data['items'][i]['spec1'], 'price' : data['items'][i]['price1'], 'quantity' : 1, 'item_category':category[0], 'item_category2':category[1], 'item_category3':category[2], 'item_category4':category[3] }; ids.push(arr); } gtag("event","begin_checkout",{'items': ids}); break; case 'refund': break; case 'purchase': var ids = []; for(i in data['items']){ var category = data['items'][i]['category'].split(' > '); var arr = { 'item_id' : data['items'][i][pid], 'item_name' : data['items'][i]['name'], 'currency' : 'TWD', 'item_brand' : data['items'][i]['brand'], 'item_variant' : data['items'][i]['spec1'], 'price' : data['items'][i]['price1'], 'quantity' : 1, 'item_category':category[0], 'item_category2':category[1], 'item_category3':category[2], 'item_category4':category[3] }; ids.push(arr); } gtag('event','purchase',{ 'currency':'TWD', 'value':data['order_money'], 'shipping':data['shipping'], 'shipping_tier':data['shipping_tier'], 'transaction_id':data['order_id'], 'items': ids }); break; case 'login': gtag("event","login",{'method': data['type']}); break; case 'sign_up': gtag("event","sign_up",{'method': data['type']}); break; case 'select_item': var category = data['items'][0]['category'].split(' > '); var count = category.length; gtag('event','select_item',{ 'item_list_id':category[count - 1], 'item_list_name':category[count - 1], 'items':[{ 'item_id' :data['items'][0][pid], 'item_name' :data['items'][0]['name'], 'item_brand' : data['items'][0]['brand'], 'currency' : 'TWD', 'price' : data['items'][0]['price1'], 'quantity' : 1, 'index' :data['items'][0]['index_no'], 'item_variant':data['items'][0]['spec1'], 'item_category':category[0], 'item_category2':category[1], 'item_category3':category[2], 'item_category4':category[3] }] }); break; case 'search': gtag("event","search",{'search_term': data['search_term']}); break; case 'select_content': gtag('event','select_content',{'content_type':'product'}); break; case 'view_promotion': gtag("event","view_promotion",{'promotion_id':data['block'],'promotion_name':data['name'],'location_id':data['url']}); break; case 'select_promotion': gtag("event","select_promotion",{'promotion_id':data['block'],'promotion_name':data['name'],'location_id':data['url']}); break; case 'add_to_cart': var category = data['items'][0]['category'].split(' > '); gtag("event","add_to_cart",{ "items":[{ 'item_id' :data['items'][0][pid], 'item_name' :data['items'][0]['name'], 'item_brand' : data['items'][0]['brand'], 'currency' : 'TWD', 'price' : data['items'][0]['price1'], 'quantity' : 1, 'item_variant':data['items'][0]['spec1'], 'item_category':category[0], 'item_category2':category[1], 'item_category3':category[2], 'item_category4':category[3] }] }); break; case 'remove_from_cart': var category = data['items'][0]['category'].split(' > '); gtag("event","remove_from_cart",{ "items":[{ 'item_id' :data['items'][0][pid], 'item_name' :data['items'][0]['name'], 'item_brand' : data['items'][0]['brand'], 'currency' : 'TWD', 'price' : data['items'][0]['price1'], 'quantity' : 1, 'item_variant':data['items'][0]['spec1'], 'item_category':category[0], 'item_category2':category[1], 'item_category3':category[2], 'item_category4':category[3] }] }); break; case 'add_to_wishlist': var ids = []; var category = data['items'][0]['category'].split(' > '); var arr = { 'item_id' : data['items'][pid], 'item_name' : data['items']['name'], 'currency' : 'TWD', 'item_brand' : data['items']['brand'], 'item_variant' : data['items']['spec1'], 'price' : data['items']['price1'], 'quantity' : 1, 'item_category':category[0], 'item_category2':category[1], 'item_category3':category[2], 'item_category4':category[3] }; ids.push(arr); gtag('event','add_to_wishlist',{ 'currency':'TWD', 'value': data['items']['price1'], 'items': ids }); /*var category = data['items']['category'].split(' > '); gtag("event","add_to_wishlist",{ "items":[{ 'item_id' :data['items'][0][pid], 'item_name' :data['items'][0]['name'], 'item_brand' : data['items'][0]['brand'], 'currency' : 'TWD', 'price' : data['items'][0]['price1'], 'quantity' : 1, 'item_variant':data['items'][0]['spec1'], 'item_category':category[0], 'item_category2':category[1], 'item_category3':category[2], 'item_category4':category[3] }] });*/ break; case 'add_payment_info': gtag("event","add_payment_info",{"payment_info":data['pay_type']}); break; case 'add_shipping_info': gtag("event","add_shipping_info",{"shipping_tier":data['shipping_tier']}); break; case 'payfail': gtag("event","payfail",{"method":data['pay_type']}); break; } } }