merge master into develop - CscListRForm.jsp FAQ 아코디언 버그 수정
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
function criteo(list, url) {
|
||||
if(fn_is_empty(list)){
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Criteo OneTag를 활성화하려면 로더 스크립트(Loader script)가 필요합니다.
|
||||
* 아래 스크립트를 사이트의 '헤드(head)' 부분에 위치시켜 모든 페이지에 포함되도록 해야, 동시에 로딩되는 다른 스크립트로 인해 지연이 발생하지 않습니다.
|
||||
* 페이지에서 한번만 트리거되면 되고, 단일 페이지에서 여러차례 트리거되어도 상관없습니다.
|
||||
* */
|
||||
const commonHeaderAt = adScriptCommonHeaderAt(list);
|
||||
if(commonHeaderAt){
|
||||
|
||||
const adMediaId = commonHeaderAt.adMediaId;
|
||||
|
||||
let criteoScript = document.createElement('script');
|
||||
criteoScript.type ='text/javascript'
|
||||
criteoScript.async = true;
|
||||
criteoScript.src = `//dynamic.criteo.com/js/ld/ld.js?a=${adMediaId}`;
|
||||
document.head.appendChild(criteoScript);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//상품상세 페이지
|
||||
if(url.includes(selectGoodsDtl)){
|
||||
|
||||
|
||||
|
||||
//# 상품상세페이지에서 장바구니 담기 버튼을 클릭할 때 아래 코드 실행. addEventListner 등 사용
|
||||
const addCartEventAt = adScriptAddCartEventAt(list);
|
||||
if(addCartEventAt){
|
||||
addCartStorage(addCartEventAt)
|
||||
}
|
||||
|
||||
}//상품 상세 END
|
||||
|
||||
|
||||
//주문 완료 페이지
|
||||
if(url.includes(selectOrdrCompt)){
|
||||
|
||||
//# 주문완료 페이지가 로드되면 아래 코드 실행.
|
||||
const purchsCompleteFormAt = adScriptPurchsCompleteFormAt(list)
|
||||
if(purchsCompleteFormAt){
|
||||
let purchsComplateFormScript = document.createElement('script');
|
||||
|
||||
let adMediaId = purchsCompleteFormAt.adMediaId
|
||||
// 상품정보 배열
|
||||
let productDataArray = [];
|
||||
|
||||
const adscriptVal = $('#adscript').val()
|
||||
const decode = decodeURIComponent(atob(adscriptVal).split('').map(function (c) {
|
||||
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
|
||||
}).join(''));
|
||||
|
||||
const adscriptParse = JSON.parse(decode);
|
||||
let finalOrderNo = adscriptParse.total.ordrInnb
|
||||
|
||||
const orderInfo = adscriptParse.order
|
||||
const email = orderInfo.ordrrEmail.trim().replaceAll(' ','').toLowerCase()
|
||||
|
||||
for(let obj of adscriptParse.goodsList){
|
||||
|
||||
let productData = {
|
||||
id: obj.goodsInnb.toString(),
|
||||
price: parseInt(obj.applyDscntAmt)/obj.ordrQy,
|
||||
quantity: obj.ordrQy
|
||||
};
|
||||
// 배열에 추가
|
||||
productDataArray.push(productData);
|
||||
}
|
||||
|
||||
//우편번호
|
||||
let zipCode = '';
|
||||
for(let obj of adscriptParse.shippingList){
|
||||
if(!fn_is_empty(obj.dlvylcZip)){
|
||||
zipCode = obj.dlvylcZip
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
purchsComplateFormScript.innerHTML= `
|
||||
window.criteo_q = window.criteo_q || [];
|
||||
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
|
||||
window.criteo_q.push(
|
||||
{ event: "setAccount", account: ${adMediaId}},
|
||||
|
||||
// To Do 1. 현재 유저의 이메일 주소(공백 제거 및 소문자로 변환 후) 전달. 유저의 이메일을 알수 없는 상황이면 빈 문자열로 전달
|
||||
{ event: "setEmail", email: "${email}", hash_method: "sha256" },
|
||||
{ event: "setEmail", email: "${email}", hash_method: "md5" },
|
||||
|
||||
// To Do 2. 현재 유저의 저장된 배송지 우편번호. 유저의 배송지 우편번호를 알수 없는 상황이면 빈 문자열로 전달
|
||||
{ event: "setZipcode", zipcode: "${zipCode}" },
|
||||
|
||||
{ event: "setSiteType", type: deviceType},
|
||||
|
||||
// To Do 3. 확인 또는 주문 번호를 전달. 확인 또는 주문 번호가 없을 경우, Math.floor(Math.random()*99999999999)와 같이 랜덤한 숫자를 만들어 전달
|
||||
{ event: "trackTransaction", id: ${finalOrderNo}
|
||||
, item: ${JSON.stringify(productDataArray)} // 상품정보
|
||||
// To Do 4. 현재 유저가 추가한 상품의 정보(상품 ID, 상품 단가, 추가한 수량)를 아래 객체 포멧으로 전달
|
||||
// 상품 ID는 태그에서 전달되는 상품 ID와 피드에서 전달 주신 상품 ID가 매칭이 되어야 함
|
||||
// 상품 단가는 유저가 선택한 상품의 단가로 전달(옵션 추가 가격 및 할인 가격 포함). 통화 기호 및 천단위 구분자는 제외
|
||||
// 수량은 유저가 선택한 값으로 전달
|
||||
// Tip 1. 복잡한 추가 구성 상품 및 옵션으로 인해 제대로된 상품 단가 및 수량 전달이 어려운 경우, 최종 가격으로 전달 후 수량은 1로 전달 해주셔도 됩니다.
|
||||
// Tip 2. 크리테오는 이 세일즈 태그에서 전달 주는 상품 단가와 수량을 곱하기하여 매출을 리포팅 하오니, 최대한 정확하게 전달이 중요합니다.
|
||||
//{id: "상품번호", price: 옵션주문단가, quantity: 옵션주문수량 }
|
||||
// 장바구니에 추가 된 각 상품에 대한 새 객체 추가. 새 객체를 추가하실때, 객체 사이를 쉼표(,)로 구분
|
||||
}
|
||||
);
|
||||
`;
|
||||
|
||||
document.head.appendChild(purchsComplateFormScript);
|
||||
}
|
||||
}//주문 완료 페이지 END
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user