Good job, Bibhuti!
P.S. Not an error but it's better to exclude core libraries from output (you have "Nop.Core.dll")
P.S. Not an error but it's better to exclude core libraries from output (you have "Nop.Core.dll")
Thanks for Your Feedback.
---------_Root.Head.cshtml-------
<script>
var trackingKey = 'utm_source'; //key of the tracking parameter
var trackingValue = "criteo"; // value of the tracking parameter
var cookie = "crtg_dd"; // cookie name where the dd value will be stored
var days = 30; // cookie life time in days
cr_readTracking(trackingKey, trackingValue);
function cr_readTracking(key, value) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
//cr_createCookie(cookie, 1, days);
var pair = vars[i].split("=");
if (pair[0] == key) {
if (pair[1] == value) {
cr_createCookie(cookie, 1, days);
}
else {
cr_createCookie(cookie, 0, days);
}
}
}
};
function cr_createCookie(cookie, value, days) {
var d = new Date();
d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toUTCString();
document.cookie = cookie + "=" + value + ";" + expires + "; path=/";
};
</script>
------------index.cshtml-----------
@{
var customerEmail = EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer.Email;
}
<script type="text/javascript">
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
window.criteo_q = window.criteo_q || [];
window.criteo_q.push(
{ event: "setAccount", account: ##### },
{ event: "setEmail", email: "@customerEmail" },
{ event: "setSiteType", type: deviceType },
{ event: "viewHome" }
);
</script>
----------CategoryTemplate.ProductsInGridOrLines.cshtml---------
@{
var customerEmail = EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer.Email;
}
<script type="text/javascript">
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
window.criteo_q = window.criteo_q || [];
window.criteo_q.push(
{ event: "setAccount", account: #####},
{ event: "setEmail", email: "@customerEmail" },
{ event: "setSiteType", type: deviceType },
{ event: "viewList", item: [ @Model.Products[0].Id, @Model.Products[1].Id, @Model.Products[2].Id] }
);
</script>
---------ProductTemplateGroup.cshtml And ProductTemplateSimple-------------------
@{
var customerEmail = EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer.Email;
}
<script type="text/javascript">
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
window.criteo_q = window.criteo_q || [];
window.criteo_q.push(
{ event: "setAccount", account: #####},
{ event: "setEmail", email: "@customerEmail" },
{ event: "setSiteType", type: deviceType},
{ event: "viewItem", item: @Model.Id }
);
</script>
------------ Cart.cshtml----------------
<script type="text/javascript">
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
window.criteo_q = window.criteo_q || [];
window.criteo_q.push(
{ event: "setAccount", account: #####},
{ event: "setEmail", email: "@customerEmail" },
{ event: "setSiteType", type: deviceType},
{
event: "viewBasket", item: [
@foreach (var item in @Model.Items)
{
var currencyWithPrice = (@item.UnitPrice).ToString();
currencyWithPrice = currencyWithPrice.Replace(",", "");
var currencyWithoutPrice = currencyWithPrice.Replace("?", "");
<text> {
'id': '@item.ProductId',
'price': '@currencyWithoutPrice',
'quantity': '@item.Quantity'
}, </text>
}
]
});
</script>
--------Completed.cshtml--------------
@{
var customerEmail = EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer.Email;
var orderItems = EngineContext.Current.Resolve<IOrderService>().GetAllOrderItems(Model.OrderId, null, null, null, null, null, null);
}
<script type="text/javascript">
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
// Read the value of the cookie and return the value. In case the cookie is not found, return default value "0"
function cr_getCookie(c_name) {
var i, x, y, ARRCookies = document.cookie.split(";");
for (i = 0; i < ARRCookies.length; i++)
{
x = ARRCookies[i].substr(0, ARRCookies[i].indexOf("="));
y = ARRCookies[i].substr(ARRCookies[i].indexOf("=") + 1);
x = x.replace(/^\s+|\s+$/g, "");
if (x == c_name)
{
return unescape(y);
}
}
return "0";
}
// Sample function that shows how the deduplication value can be set by using the function cr_getCookie
window.criteo_q = window.criteo_q || [];
window.criteo_q.push(
{ event: "setAccount", account: #####},
{ event: "setEmail", email: "@customerEmail" },
{ event: "setSiteType", type: deviceType },
{
event: "trackTransaction",
id: @Model.OrderId,
deduplication: cr_getCookie("crtg_dd"),
item: [
@foreach (var item in orderItems)
{
<text> {
'id': '@item.Product.Id',
'price': '@item.Product.Price',
'quantity': '@item.Quantity'
}, </text>
}
]
});
</script>