[IMP] website_sale: Add google analytics on checkout process
This commit is contained in:
parent
fa44bdb486
commit
8eb97cc082
|
@ -93,6 +93,17 @@
|
|||
<t t-call-assets="website.assets_frontend"/>
|
||||
|
||||
<t t-raw="head or ''" name='layout_head'/>
|
||||
<t t-if="website.google_analytics_key">
|
||||
<script>
|
||||
(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','_gaw');
|
||||
|
||||
_gaw('create',_.str.trim('<t t-esc="website.google_analytics_key"/>'));
|
||||
_gaw('send','pageview');
|
||||
</script>
|
||||
</t>
|
||||
</head>
|
||||
<body>
|
||||
<div id="wrapwrap">
|
||||
|
@ -207,17 +218,6 @@
|
|||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
<t t-if="website.google_analytics_key">
|
||||
<script>
|
||||
(function(b,o,i,l,e,r){b.GoogleAnalyticsObject=l;b[l]||(b[l]=
|
||||
function(){(b[l].q=b[l].q||[]).push(arguments)});b[l].l=+new Date;
|
||||
e=o.createElement(i);r=o.getElementsByTagName(i)[0];
|
||||
e.src='//www.google-analytics.com/analytics.js';
|
||||
r.parentNode.insertBefore(e,r)}(window,document,'script','ga'));
|
||||
ga('create',_.str.trim('<t t-esc="website.google_analytics_key"/>'));
|
||||
ga('send','pageview');
|
||||
</script>
|
||||
</t>
|
||||
</body>
|
||||
</html>
|
||||
</template>
|
||||
|
|
|
@ -759,5 +759,30 @@ class website_sale(http.Controller):
|
|||
product = product_obj.browse(request.cr, request.uid, id, context=request.context)
|
||||
return product.write({'website_size_x': x, 'website_size_y': y})
|
||||
|
||||
@http.route(['/shop/tracking_last_order'], type='json', auth="public")
|
||||
def tracking_cart(self, **post):
|
||||
""" return JS code for google analytics"""
|
||||
cr, uid, context = request.cr, request.uid, request.context
|
||||
ret = {}
|
||||
sale_order_id = request.session.get('sale_last_order_id')
|
||||
if sale_order_id:
|
||||
order = request.registry['sale.order'].browse(cr, SUPERUSER_ID, sale_order_id, context=context)
|
||||
ret['transaction'] = {
|
||||
'id': sale_order_id,
|
||||
'affiliation': order.company_id.name,
|
||||
'revenue': order.amount_total,
|
||||
'currency': order.currency_id.name
|
||||
}
|
||||
ret['lines'] = []
|
||||
for line in order.order_line:
|
||||
if not line.is_delivery:
|
||||
ret['lines'].append({
|
||||
'id': line.order_id and line.order_id.id,
|
||||
'name': line.product_id.categ_id and line.product_id.categ_id.name or '-',
|
||||
'sku': line.product_id.id,
|
||||
'quantity': line.product_uom_qty,
|
||||
'price': line.price_unit,
|
||||
})
|
||||
return ret
|
||||
|
||||
# vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
$(document).ready(function () {
|
||||
|
||||
// Watching a product
|
||||
if ($("#product_detail.oe_website_sale").length) {
|
||||
prod_id = $("input[name='product_id']").attr('value');
|
||||
vpv("/stats/ecom/product_view/" + prod_id);
|
||||
}
|
||||
|
||||
// Add a product into the cart
|
||||
$(".oe_website_sale form[action='/shop/cart/update'] a.a-submit").on('click', function(o) {
|
||||
prod_id = $("input[name='product_id']").attr('value');
|
||||
vpv("/stats/ecom/product_add_to_cart/" + prod_id);
|
||||
});
|
||||
|
||||
// Start checkout
|
||||
$(".oe_website_sale a[href='/shop/checkout']").on('click', function(o) {
|
||||
vpv("/stats/ecom/customer_checkout");
|
||||
});
|
||||
|
||||
$(".oe_website_sale div.oe_cart a[href^='/web?redirect'][href$='/shop/checkout']").on('click', function(o) {
|
||||
vpv("/stats/ecom/customer_signin");
|
||||
});
|
||||
|
||||
$(".oe_website_sale form[action='/shop/confirm_order'] a.a-submit").on('click', function(o) {
|
||||
if ($("#top_menu > li > a[href='/web/login']").length){
|
||||
vpv("/stats/ecom/customer_signup");
|
||||
}
|
||||
vpv("/stats/ecom/order_checkout");
|
||||
});
|
||||
|
||||
$(".oe_website_sale form[target='_self'] button[type=submit]").on('click', function(o) {
|
||||
var method = $("#payment_method input[name=acquirer]:checked").nextAll("span:first").text();
|
||||
vpv("/stats/ecom/order_payment/" + method);
|
||||
});
|
||||
|
||||
if ($(".oe_website_sale div.oe_cart div.oe_website_sale_tx_status").length) {
|
||||
track_ga('require', 'ecommerce');
|
||||
|
||||
order_id = $(".oe_website_sale div.oe_cart div.oe_website_sale_tx_status").data("order-id");
|
||||
vpv("/stats/ecom/order_confirmed/" + order_id);
|
||||
|
||||
openerp.jsonRpc("/shop/tracking_last_order/").then(function(o) {
|
||||
track_ga('ecommerce:clear');
|
||||
|
||||
if (o.transaction && o.lines) {
|
||||
track_ga('ecommerce:addTransaction', o.transaction);
|
||||
_.forEach(o.lines, function(line) {
|
||||
track_ga('ecommerce:addItem', line);
|
||||
});
|
||||
}
|
||||
track_ga('ecommerce:send');
|
||||
});
|
||||
}
|
||||
|
||||
function vpv(page){ //virtual page view
|
||||
track_ga('send', 'pageview', {
|
||||
'page': page,
|
||||
'title': document.title,
|
||||
});
|
||||
}
|
||||
|
||||
function track_ga() {
|
||||
website_ga = this._gaw || function(){};
|
||||
website_ga.apply(this, arguments);
|
||||
}
|
||||
|
||||
});
|
|
@ -335,6 +335,7 @@
|
|||
<template id="product" name="Product">
|
||||
<t t-call="website.layout">
|
||||
<t t-set="head">
|
||||
<script type="text/javascript" src="/website_sale/static/src/js/website_sale_tracking.js"></script>
|
||||
<script type="text/javascript" src="/website_sale/static/src/js/website_sale.js"></script>
|
||||
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
|
||||
<link rel='stylesheet' href='/website_sale/static/src/css/website_mail.css'/>
|
||||
|
@ -606,6 +607,7 @@
|
|||
<t t-call="website.layout">
|
||||
<t t-set="head">
|
||||
<script type="text/javascript" src="/website_sale/static/src/js/website_sale.js"></script>
|
||||
<script type="text/javascript" src="/website_sale/static/src/js/website_sale_tracking.js"></script>
|
||||
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
|
||||
<t t-raw="head or ''"/>
|
||||
</t>
|
||||
|
@ -793,6 +795,7 @@
|
|||
<t t-call="website.layout">
|
||||
<t t-set="head">
|
||||
<script type="text/javascript" src="/website_sale/static/src/js/website_sale.js"></script>
|
||||
<script type="text/javascript" src="/website_sale/static/src/js/website_sale_tracking.js"></script>
|
||||
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
|
||||
<t t-raw="head or ''"/>
|
||||
</t>
|
||||
|
@ -959,6 +962,7 @@
|
|||
<t t-call="website.layout">
|
||||
<t t-set="head">
|
||||
<script type="text/javascript" src="/website_sale/static/src/js/website_sale.js"></script>
|
||||
<script type="text/javascript" src="/website_sale/static/src/js/website_sale_tracking.js"></script>
|
||||
<script type="text/javascript" src="/website_sale/static/src/js/website_sale_payment.js"></script>
|
||||
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
|
||||
<t t-raw="head or ''"/>
|
||||
|
@ -1084,6 +1088,7 @@
|
|||
<t t-set="head">
|
||||
<link rel='stylesheet' href='/website_sale/static/src/css/website_sale.css'/>
|
||||
<script type="text/javascript" src="/website_sale/static/src/js/website_sale_validate.js"></script>
|
||||
<script type="text/javascript" src="/website_sale/static/src/js/website_sale_tracking.js"></script>
|
||||
<t t-raw="head or ''"/>
|
||||
</t>
|
||||
<t t-set="additional_title">Shop - Confirmed</t>
|
||||
|
|
Loading…
Reference in New Issue