小铺
Search
Account
Log in
Create an account
${data.data.count > 99 ? '99+' : data.data.count}
Cart
home
home
product
product
iPhone 17 cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
Earphone
Earphone
袜子
热卖
Scandal
Scandal
玩具
policy
policy
shipping policy
privacy policy
group G
group G
Group G1
Group G1
group G1-1
group G2
group G2
group G2-2
group G3
group G3
group G3-3
查询订单物流
Log in
Create an account
home
product
iPhone 17 cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
Earphone
袜子
热卖
Scandal
玩具
policy
shipping policy
privacy policy
group G
Group G1
group G1-1
group G2
group G2-2
group G3
group G3-3
复制Suitable for 15inch Honda Fit, Forerunner, Glory, Toyota Vios, Corolla, Yaris Aluminum Alloy Wheels
from
$2.50
查询订单物流
More links
${function (){ var linkList =[true,true,true,false].slice(offset); var hasChild = linkList.some(v => v); var scriptStr = `
` function renderContent( currentIdx ,content ){ if( offset+1 > currentIdx ){ return "" } return content } if(!hasChild){ return `
${renderContent( 1, `
home
` )} ${renderContent( 2, `
policy
` )} ${renderContent( 3, `
group G
` )} ${renderContent( 4, `
查询订单物流
` )} ${scriptStr}
` } return `
${renderContent(1, `
home
` )} ${renderContent(2, `
policy
` )} ${renderContent(3, `
group G
` )} ${renderContent(4, `
查询订单物流
` )}
${renderContent(1, `
product
iPhone 17 cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
iPhone 17 Pro Max cases
Earphone
袜子
热卖
Scandal
玩具
` )} ${renderContent(2, `
shipping policy
privacy policy
` )} ${renderContent(3, `
Group G1
group G1-1
group G2
group G2-2
group G3
group G3-3
` )} ${renderContent(4, `
` )} ${scriptStr}
` }()}
${SSS}
${function() { if (data === undefined || typeof data !== 'string' || data == '') return `
`; if (data === 'close') return ''; return `
View more
`; }()}
2/36
${data.index + 1}/${data.total}
Facebook
Twitter
Pinterest
复制Suitable for 15inch Honda Fit, Forerunner, Glory, Toyota Vios, Corolla, Yaris Aluminum Alloy Wheels
57 sold
$251.09
(Tax included)
${function() { const variantData = data.variant || {"id":"b5ffaaea-2e60-42eb-a4d7-0b786c8528ec","product_id":"ec493346-6636-48a2-bc73-07a6d41160f9","title":"14x5.5j- 14inch fit","weight_unit":"kg","inventory_quantity":0,"sku":"A0061848--14x5.5j- 14inch fit","barcode":"","position":1,"option1":"14x5.5j- 14inch fit","option2":"","option3":"","note":"","image":{"src":"\/\/img.staticdj.com\/40b0c3639a4a5a700de17fd42fc49b5f.jpeg","path":"40b0c3639a4a5a700de17fd42fc49b5f.jpeg","width":800,"height":800,"alt":"\u590d\u5236Suitable for 15inch Honda Fit, Forerunner, Glory, Toyota Vios, Corolla, Yaris Aluminum Alloy Wheels","aspect_ratio":1},"wholesale_price":[{"price":251.09,"min_quantity":1}],"weight":"0","compare_at_price":"0","price":"251.09","retail_price":"0","available":true,"url":"\/products\/suitable-for-15inch-honda-fit-forerunner-glory-toyota-vios-corolla-yaris-aluminum-alloy-wheels-6n6q?variant=b5ffaaea-2e60-42eb-a4d7-0b786c8528ec","available_quantity":999999999,"options":[{"name":"Specification","value":"14x5.5j- 14inch fit"}],"off_ratio":"0","flashsale_info":{"variant_id":"b5ffaaea-2e60-42eb-a4d7-0b786c8528ec","product_id":"","quantity":0,"discount_id":"","limit_time":0,"limit_buy":0,"user_limit_buy":0,"discount_sales":0,"discount_sales_rate":"","discount_stock":0,"ends_at":0,"starts_at":0,"allow_oversold":"","allocation_method":"","price":"251.09","compare_at_price":"","discount_price":"251.09","customary_saved_price":"","customary_off_ratio":"","discount_saved_price":"","discount_off_ratio":"0","use_before_price":false,"before_price":"","title":"","properties":"","color_setting_promotional_copy":"","discount_quantity":0,"is_need_split":false},"sales":57}; const saveType = "amount"; const productSaveLabel = true; return `
-
(Tax included)
${saveType == 'percent' ? `
-${variantData.off_ratio}%
` : `
-
` }
(Tax included)
`; }()}
Specification-
14x5.5j- 14inch fit
${function(){ const enable_selected_variants = "true" === 'false'; const optionValue = data.value; return `
${optionValue ? `${enable_selected_variants ? '-' : ''}${optionValue}` : ''}
`; }()}
14x5.5j- 14inch fit
14x5.5j- 15inch gun gray
14x5.5j- 15inch black
14x5.5j- 15inch fit model a
14x5.5j- 15inch fit b model
14x5.5j- 15inch fit c model
14x5.5j- 15inch fit d model
14x5.5j- 15inch fit e model
14x5.5j- 15inch fit f model
14x5.5j- 15inch fit g model
14x5.5j- 15inch fit h model
14x5.5j- 15inch fit j model
14x5.5j- 15inch fit k model
14x5.5j- 15inch fengfan model a
14x5.5j- 15inch fengfan b model
14x5.5j- 15inch fengfan c model
14x5.5j- 15inch fengfan d model
14x5.5j- 15inch gorey model a
14x5.5j- 16inch gore
14x5.5j- 16inch fengfan
14x5.5j-modified type a
14x5.5j-modified type b
14x5.5j-modified c model
14x5.5j-vios a model
14x5.5j-vios b model
14x5.5j-vios c model
14x5.5j-vios d model
14x5.5j-vios e model
14x5.5j-zhixuan a model
14x5.5j-zhixuan b model
14x5.5j-zhixuan c model
14x5.5j-zhixuan d model
14x5.5j-zhixuanx
14x5.5j-yaris a model
14x5.5j-yaris b model
14x5.5j-corolla model a
14x5.5j-corolla model b
15x5.5j- 14inch fit
15x5.5j- 15inch gun gray
15x5.5j- 15inch black
15x5.5j- 15inch fit model a
15x5.5j- 15inch fit b model
15x5.5j- 15inch fit c model
15x5.5j- 15inch fit d model
15x5.5j- 15inch fit e model
15x5.5j- 15inch fit f model
15x5.5j- 15inch fit g model
15x5.5j- 15inch fit h model
15x5.5j- 15inch fit j model
15x5.5j- 15inch fit k model
15x5.5j- 15inch fengfan model a
15x5.5j- 15inch fengfan b model
15x5.5j- 15inch fengfan c model
15x5.5j- 15inch fengfan d model
15x5.5j- 15inch gorey type a
15x5.5j- 16inch gorei
15x5.5j- 16inch fengfan
15x5.5j-modified type a
15x5.5j-modified type b
15x5.5j-modified c model
15x5.5j-vios a model
15x5.5j-vios b model
15x5.5j-vios c model
15x5.5j-vios d model
15x5.5j-vios e model
15x5.5j-zhixuan a model
15x5.5j-zhixuan b model
15x5.5j-zhixuan c model
15x5.5j-zhixuan d model
15x5.5j-zhixuanx
15x5.5j-yaris a model
15x5.5j-yaris b model
15x5.5j-corolla model a
15x5.5j-corolla model b
15x6j- 14inch fit
15x6j- 15inch gun gray
15x6j- 15inch black
15x6j- 15inch fit model a
15x6j- 15inch fit b model
15x6j- 15inch fit c model
15x6j- 15inch fit d model
15x6j- 15inch fit e model
15x6j- 15inch fit f model
15x6j- 15inch fit g model
15x6j- 15inch fit h model
15x6j- 15inch fit j model
15x6j- 15inch fit k model
15x6j- 15inch fengfan model a
15x6j- 15inch fengfan b style
15x6j- 15inch fengfan c model
15x6j- 15inch fengfan d model
15x6j- 15inch gorey type a
15x6j- 16inch gore
15x6j- 16inch fengfan
15x6j-modified type a
15x6j-modified type b
15x6j-modified c model
15x6j-vios a model
15x6j-vios b model
15x6j-vios c model
15x6j-vios d model
15x6j-vios e model
15x6j-zhixuan a model
15x6j-zhixuan b model
15x6j-zhixuan c model
15x6j-zhixuan d model
15x6j-zhixuanx
15x6j-yaris a model
15x6j-yaris b model
15x6j-corolla model a
15x6j-corolla model b
16x6.5j- 14inch fit
16x6.5j- 15inch gun gray
16x6.5j- 15inch black
16x6.5j- 15inch fit model a
16x6.5j- 15inch fit b model
16x6.5j- 15inch fit c model
16x6.5j- 15inch fit d model
16x6.5j- 15inch fit e model
16x6.5j- 15inch fit f model
16x6.5j- 15inch fit g model
16x6.5j- 15inch fit h model
16x6.5j- 15inch fit j model
16x6.5j- 15inch fit k model
16x6.5j- 15inch fengfan model a
16x6.5j- 15inch fengfan b model
16x6.5j- 15inch fengfan c model
16x6.5j- 15inch fengfan d model
16x6.5j- 15inch gorey model a
16x6.5j- 16inch gorei
16x6.5j- 16inch fengfan
16x6.5j-modified type a
16x6.5j-modified type b
16x6.5j-modified c model
16x6.5j-vios a model
16x6.5j-vios b model
16x6.5j-vios c model
16x6.5j-vios d model
16x6.5j-vios e model
16x6.5j-zhixuan a model
16x6.5j-zhixuan b model
16x6.5j-zhixuan c model
16x6.5j-zhixuan d model
16x6.5j-zhixuanx
16x6.5j-yaris a model
16x6.5j-yaris b model
16x6.5j-corolla model a
16x6.5j-corolla model b
${function(){ return `
Please select a Specification
`; }()}
Quantity
Free worldwide shipping
Free returns
Sustainably made
Secure payments
Add to cart
-
$251.09
${function(){ const wholesale_enabled = false; const qty = data.quantity || 1; const currentSelectVariant = data.variant; const defaultVariant = (data.product && data.product.variants && data.product.variants[0]) || Object.keys(data).length > 1 ? data : null; const productVariant = {"id":"b5ffaaea-2e60-42eb-a4d7-0b786c8528ec","product_id":"ec493346-6636-48a2-bc73-07a6d41160f9","title":"14x5.5j- 14inch fit","weight_unit":"kg","inventory_quantity":0,"sku":"A0061848--14x5.5j- 14inch fit","barcode":"","position":1,"option1":"14x5.5j- 14inch fit","option2":"","option3":"","note":"","image":{"src":"\/\/img.staticdj.com\/40b0c3639a4a5a700de17fd42fc49b5f.jpeg","path":"40b0c3639a4a5a700de17fd42fc49b5f.jpeg","width":800,"height":800,"alt":"\u590d\u5236Suitable for 15inch Honda Fit, Forerunner, Glory, Toyota Vios, Corolla, Yaris Aluminum Alloy Wheels","aspect_ratio":1},"wholesale_price":[{"price":251.09,"min_quantity":1}],"weight":"0","compare_at_price":"0","price":"251.09","retail_price":"0","available":true,"url":"\/products\/suitable-for-15inch-honda-fit-forerunner-glory-toyota-vios-corolla-yaris-aluminum-alloy-wheels-6n6q?variant=b5ffaaea-2e60-42eb-a4d7-0b786c8528ec","available_quantity":999999999,"options":[{"name":"Specification","value":"14x5.5j- 14inch fit"}],"off_ratio":"0","flashsale_info":{"variant_id":"b5ffaaea-2e60-42eb-a4d7-0b786c8528ec","product_id":"","quantity":0,"discount_id":"","limit_time":0,"limit_buy":0,"user_limit_buy":0,"discount_sales":0,"discount_sales_rate":"","discount_stock":0,"ends_at":0,"starts_at":0,"allow_oversold":"","allocation_method":"","price":"251.09","compare_at_price":"","discount_price":"251.09","customary_saved_price":"","customary_off_ratio":"","discount_saved_price":"","discount_off_ratio":"0","use_before_price":false,"before_price":"","title":"","properties":"","color_setting_promotional_copy":"","discount_quantity":0,"is_need_split":false},"sales":57}; const variantData = currentSelectVariant || defaultVariant || productVariant; const wholesale_price = variantData.wholesale_price || []; if(wholesale_enabled && wholesale_price.length > 0) { let wholesaleIndex = wholesale_price.findIndex(item => { return item.min_quantity > qty; }); if(wholesaleIndex < 0){ wholesaleIndex = wholesale_price.length - 1; }else if(wholesaleIndex > 0){ wholesaleIndex = wholesaleIndex - 1; } const wholesalePrice = wholesale_price[wholesaleIndex] || ''; return `
` }else { const price = variantData && variantData.price; return price != undefined ? `
` : '
'; } }()}
Buy it now
Product was out of stock.
Product is unavailable.
people are viewing this right now
Shipping
Estimated Delivery:
Aug-16
-
Aug-20
Vendor by:
1688
SKU: A0061848--14x5.5j- 14inch fit
SKU: ${data.variant.sku}
Share
Tweet
Pin it
Description
You may also like
Recently viewed
Your cart is reserved for
${data.mm}
m
${data.ss}
s
!
${data.line_items.map(item => { const renderDiscountApp = () => { const isEmpty = item.discount_applications && item.discount_applications.length < 1; const isNotExist = !item.discount_applications; if (isEmpty || isNotExist) { return "" } return `
${ (item.discount_applications || []).map(discount_item => { const discount_item_amount = discount_item.discount_amount || discount_item.amount || ''; return `
${discount_item.title}
(-
)
` }).join('') }
` } return `
${item.product_title}
${item.options.map(o => `
${o.name}:
${o.value}
`).join('')} ${(item.parsedProperties || []).map((propertie)=>{ if (propertie.isImage){ return `
${propertie.name}:
View image
` }else{ return `
${propertie.name}:
${propertie.value}
` } }).join('')}
Free gift
*${item.quantity}
${renderDiscountApp()}
`; }).join('')}
${function() { return `
Add order note
Add order note
`; }()}
${function() { return `
Add order note
Add order note
`; }()}
Total:
(Tax included)
${data.total_discount > 0 ? ( `
Save
${data.discount_applications.length > 0 && data.discount_applications.map(item => { return `
${item.title}:
` }).join('')}
Save
` ) : ''}
Taxes and shipping calculated at checkout
Check out
Your cart is currently empty.
${data.discount_applications.length > 0 && `
Subtotal:
` || ''} ${data.discount_applications.length > 0 && data.discount_applications.map(item => { return `
${item.title}:
` }).join('') || ''}
Total:
Check out
Taxes and shipping calculated at checkout
Cart
Your cart is reserved for
${data.mm}
m
${data.ss}
s
!
${data.line_items.map(item => { const renderDiscountApp = () => { const isEmpty = item.discount_applications && item.discount_applications.length < 1; const isNotExist = !item.discount_applications; if (isEmpty || isNotExist) { return "" } return `
${ (item.discount_applications || []).map(discount_item => { const discount_item_amount = discount_item.discount_amount || discount_item.amount || ''; return `
${discount_item.title}
(-
)
` }).join('') }
` } return `
${item.product_title}
${item.options.map(o => `
${o.name}:
${o.value}
`).join('')} ${(item.parsedProperties || []).map((propertie)=>{ if (propertie.isImage){ return `
${propertie.name}:
View image
` }else{ return `
${propertie.name}:
${propertie.value}
` } }).join('')}
Free gift
*${item.quantity}
${renderDiscountApp()}
`; }).join('')}
cart
cart
Your cart is currently empty.
Continue shopping
${ data.originData.message }
${function () { if (!data.originData) return ""; let { apply_scenario, discount_info, landing_page_info, threshold_category } = data.originData; const progressDom = `
`; const { mobile_layout, show_add_to_cart, show_discount_label } = landing_page_info.product_display; const isBXGY = discount_info.discount_type === "DT_CODE_BXGY"; const buyProductsDom = `
`; const obtainProductsDom = `
`; const is_obtain = threshold_category === 'THRESHOLD_CATEGORY_OBTAIN_PRODUCT' ? 'active' : ''; const tabsDom = `
${function(){ let liDom = ''; const items = [ { text: landing_page_info.product.buy_product.text, class: "", value: 1 }, { text: landing_page_info.product.obtain_product.text, class: "cart-coupon-code-modal-tab__obtain", value: 2, is_obtain } ]; for (item of items) { liDom += `
${ item.text }
` } return liDom; }()}
${buyProductsDom}
${obtainProductsDom}
`; return `
${progressDom} ${isBXGY ? tabsDom : `
${buyProductsDom}
`}
` }()}
const TAG = 'spz-custom-cart-coupon-code-utils'; class SpzCustomCartCouponCodeUtils extends SPZ.BaseElement { constructor(element) { super(element); } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.action_ = SPZServices.actionServiceForDoc(this.element); this.keepOpenGuardBound_ = false; this.registerAction('setSideBarHeight', this.setSideBarHeight_.bind(this)); this.onResize_ = this.setSideBarHeight_.bind(this); window.addEventListener('resize', this.onResize_); } detachedCallback() { if (this.onResize_) { window.removeEventListener('resize', this.onResize_); this.onResize_ = null; } } ensureKeepOpenGuard_($sideBar) { if (this.keepOpenGuardBound_) return; this.keepOpenGuardBound_ = true; const observer = new MutationObserver(() => { if ($sideBar.hasAttribute('open') && $sideBar.hasAttribute('hidden')) { $sideBar.removeAttribute('hidden'); this.setSideBarHeight_(); } }); observer.observe($sideBar, { attributes: true, attributeFilter: ['hidden', 'open'] }); } getOpenDrawer_() { return document.querySelector('[data-section-type="cart_drawer"] spz-sidebar[open]'); } setSideBarHeight_() { const $sideBar = document.querySelector('#cart-coupon-code-modal'); if (!$sideBar) return; this.ensureKeepOpenGuard_($sideBar); const windowHeight = window.innerHeight; const $drawer = this.getOpenDrawer_(); if (!$drawer) { $sideBar.style.setProperty('max-height', windowHeight * 0.9 + 'px', 'important'); $sideBar.style.removeProperty('height'); $sideBar.style.removeProperty('width'); $sideBar.classList.remove('cart-coupon-code-modal--in-drawer'); return; } const drawerHeight = (windowHeight - 40) + 'px'; $sideBar.style.setProperty('max-height', drawerHeight, 'important'); $sideBar.style.setProperty('height', drawerHeight, 'important'); $sideBar.classList.add('cart-coupon-code-modal--in-drawer'); const rect = $drawer.getBoundingClientRect(); if (rect.width > 0) { $sideBar.style.setProperty('width', rect.width + 'px', 'important'); } } } SPZ.defineElement(TAG, SpzCustomCartCouponCodeUtils);
${function(){ const settings_product_image_hover_on = true; const variantShowLimit = 4; const private_id = 'product-tmpl-' + Math.random().toFixed(6).slice(-6); const product_variants = data.variants || []; const product_id = data.id; const images = data.images || []; const image = data.image || {}; const imageWidth = image.width; let imageHeight = image.height; const price = Number(data.price_min); let compareAtPrice = Number(data.compare_at_price); const type = data.type; const isMock = data.isMock; let product_image_hover_on = false; for (item of product_variants) { const vcap = Number(item.compare_at_price); if (item.price == price && vcap > compareAtPrice) { compareAtPrice = vcap; } } let second_image = null; if (settings_product_image_hover_on) { for (img of images.slice(1)) { if (img.src && img.src.indexOf('video=') === -1) { second_image = img; product_image_hover_on = true; break; } } } const sold_label_on = !data.available; let sale_label_on = false; if (compareAtPrice > price && data.available) { sale_label_on = true; } const diffPrice = compareAtPrice - price; return `
${function(){ return `
` }() }
SOLD OUT
SALE
${data.title}
-
${data.available ? `
` : ''}
`; }()}
const carousel = document.getElementById('marketing-quick-view-images'); const selector = document.getElementById('marketing-quick-view-thumb-images'); const resizeObserver = new ResizeObserver(entries => { for (let entry of entries) { const { height } = entry.contentRect; selector.style.height = height + 'px'; } }); resizeObserver.observe(carousel);
${function(){ const variantsNamesSet = new Set(data.options.map((opt) => opt.name.toLowerCase()) || []); const handleName = (name) => name.replace(/\/|\\|\s|\'|\"|`|\<|\>/g, ''); const mouseoutevent = data.options.map((opt) => `@${handleName(opt.name)}Mouseout="qv-selected-render-${opt.id}.rerender(data=event,redo=true);"`).join(' '); const mouseoverevent = data.options.map((opt) => `@${handleName(opt.name)}Mouseover="qv-selected-render-${opt.id}.rerender(data=event,redo=true);"`).join(' '); const variants = data?.variants?.map((item) => item.image.path) || []; const productData = data; const images = data.images; const selectedVariant = data.variants.find(v => v.available) || data.variants[0]; const selectedIndex = !!selectedVariant ? images.findIndex(img => img.src === (selectedVariant.image && selectedVariant.image.src)) : 0; const initialSlide = selectedIndex === -1 ? 0 : selectedIndex; return `
${images.map((image, index) => `
`).join('')}
${images.map(image => `
`).join('')} ${images.length > 1 ? `
` : ''}
${data.title}
Price
${function() { const origin = "view"; const product = (origin === 'shop' ? data.product : data) || {}; const selectedVariant = product.variants.find(v => v.available) || product.variants[0]; return !!selectedVariant ? `
Save
` : `
-
`; }()}
Quantity
${selectedVariant.available ? "Add to cart" : "SOLD OUT"}
Buy it now
Product was out of stock.
Product is unavailable.
-
${function() { const MAX_INVENTORY = 999999; const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : (data.product || data); const inventoryQty = product0.inventory_quantity; const inventoryPolicy = product0.inventory_policy; const inventoryTracking = product0.inventory_tracking; const lowStock = 5; const selectedVariant = product0.variants.find(v => v.available) || product0?.variants[0]; const selectedVariantAvailableQuantity = selectedVariant && selectedVariant.available_quantity; let actualInventory = inventoryQty; if ((inventoryTracking && inventoryPolicy == 'continue') || !inventoryTracking) { actualInventory = MAX_INVENTORY; } return `
Avaliability:
Product was out of stock.
in stock, ready to be shipped
Low stock
`; }()}
` }()}
${function(){ return (data.product.options || []).map((option, index) => { const optionName = option.name || ''; const optionId = option.id || ''; return `
${optionName}:
${data.selectedValues[optionName]}
${option.values.map((value,idx) => { const selected = data.selectedValues[optionName] == value ? 'checked' : ''; let thumbImage = null; return `
${value}
` }).join('')}
` }).join('') }()}
${function(){ const { currentOptName, originData: { selectData, value } } = data; const optionValue = selectData ? selectData[currentOptName].value[0] : value; return `
${optionValue}
` }()}
Save
-
${function(){ const productData = data.product; const selectedVariant = productData.variants.find(v => v.available) || productData.variants[0]; const product_options = productData.options.filter(Boolean) || []; const handleName = (name) => name.replace(/\/|\\|\s|\'|\"|`|\<|\>/g, ''); const mouseoutevent = productData.options.map((opt) => `@${handleName(opt.name)}Mouseout="qs-selected-render-${opt.id}.rerender(data=event,redo=true);"`).join(' '); const mouseoverevent = productData.options.map((opt) => `@${handleName(opt.name)}Mouseover="qs-selected-render-${opt.id}.rerender(data=event,redo=true);"`).join(' '); return `
Price
${function() { const origin = "shop"; const product = (origin === 'shop' ? data.product : data) || {}; const selectedVariant = product.variants.find(v => v.available) || product.variants[0]; return !!selectedVariant ? `
Save
` : `
-
`; }()}
Quantity
${selectedVariant.available ? "Add to cart" : "SOLD OUT"}
Buy it now
Product was out of stock.
Product is unavailable.
-
${function() { const MAX_INVENTORY = 999999; const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : (data.product || data); const inventoryQty = product0.inventory_quantity; const inventoryPolicy = product0.inventory_policy; const inventoryTracking = product0.inventory_tracking; const lowStock = 5; const selectedVariant = product0.variants.find(v => v.available) || product0?.variants[0]; const selectedVariantAvailableQuantity = selectedVariant && selectedVariant.available_quantity; let actualInventory = inventoryQty; if ((inventoryTracking && inventoryPolicy == 'continue') || !inventoryTracking) { actualInventory = MAX_INVENTORY; } return `
Avaliability:
Product was out of stock.
in stock, ready to be shipped
Low stock
`; }()}
` }()}
${function(){ return (data.product.options || []).map((option, index) => { const optionName = option.name || ''; const optionId = option.id || ''; return `
${optionName}:
${data.selectedValues[optionName]}
${option.values.map((value,idx) => { const selected = data.selectedValues[optionName] == value ? 'checked' : ''; let thumbImage = null; return `
${value}
` }).join('')}
` }).join('') }()}
${function(){ const { currentOptName, originData: { selectData, value } } = data; const optionValue = selectData ? selectData[currentOptName].value[0] : value; return `
${optionValue}
` }()}
Save
-
const TAG = 'spz-custom-marketing-utils'; class SpzCustomMarketingUtils extends SPZ.BaseElement { constructor(element) { super(element); } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } mountCallback() { this.ensureToastInBody_('coupon-code-toast-wrap'); } showCouponCodeToast_(message) { this.ensureToastInBody_('coupon-code-toast-wrap'); const toastEl = document.getElementById('coupon-code-toast'); if (!toastEl) return; SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast(message); }); } ensureToastInBody_(id) { const wrapEl = document.getElementById(id); if (!wrapEl) return; if (!wrapEl.closest('[data-section-type="cart_drawer"]')) return; if (wrapEl.parentNode !== document.body) { document.body.appendChild(wrapEl); } } buildCallback() { this.registerAction('addToCartTrigger', (invocation) => { window.$ && $(document).trigger('dj.common.cart.change'); window.$ && $(document).trigger('dj.addToCart', invocation.event.detail); }); this.registerAction('showAddToCartToast', () => { this.showCouponCodeToast_("Added successfully"); }); } } SPZ.defineElement(TAG, SpzCustomMarketingUtils);
Discount code
Apply
${function(){ if (data.status === 'APPLY_STATUS_SUCCESS' || !data.message) { return `
` } return `
${data.originData.message}
Add
` }()}
${data.map( item => { return `
${item}
` }).join('')}
Below discount codes are unavailable
${data.map( item => { return `
${item}
` }).join('')}
${function(){ const code_data = data.originData.list; if (!code_data || !code_data.length) return ''; const recommendDom = `
Recommend discount codes
`; const discountCodeListDom = code_data.map( item => { item.end_at = item.end_at == -1 ? item.end_at : item.end_at * 1000; item.start_at *= 1000; return `
${item.discount_text}
-
${item.code}
` }).join(''); return `
${recommendDom}
${discountCodeListDom}
${recommendDom}
${discountCodeListDom}
` }()}
${function() { return `
Add order note
Add order note
`; }()}
Total:
(Tax included)
${data.total_discount > 0 ? ( `
Save
${data.discount_applications.length > 0 && data.discount_applications.map(item => { return `
${item.title}:
` }).join('')}
Save
` ) : ''}
Taxes and shipping calculated at checkout
Check out
Total:
(Tax included)
${data.total_discount > 0 ? ( `
Save
${data.discount_applications.length > 0 && data.discount_applications.map(item => { return `
${item.title}:
` }).join('')}
Save
` ) : ''}
Check out
Taxes and shipping calculated at checkout
${data.discount_applications.length > 0 && `
Subtotal:
` || ''} ${data.discount_applications.length > 0 && data.discount_applications.map(item => { return `
${item.title}:
` }).join('') || ''}
Total:
Check out
Taxes and shipping calculated at checkout
${function(){ if (!data || !data.id) { return ''; } const settings_product_title = "title"; const product_grid_image_size = "100%"; const settings_product_image_hover_on = true; let settings_product_save_label = true; const product_sold_out_label = true; const settings_product_swatches_name = []; const settings_collection_color_swatches = true; const product_price_currency = `
` const from_on = data.price_max != data.price_min ? '
from
{{ price }}
'.replace(/\{\{\s*price\s*\}\}/, product_price_currency) : product_price_currency; const variantShowLimit = 2; const private_id = 'product-tmpl-' + Math.random().toFixed(6).slice(-6) const product_variants = data.variants || []; const product_id = data.id; const images = data.images || []; const image = data.image || {}; const imageWidth = image.width; let imageHeight = image.height; if (product_grid_image_size !== 'natural') { imageHeight = (imageWidth * parseFloat(product_grid_image_size)) / 100; } const price = Number(data.price_min); let compareAtPrice = Number(data.compare_at_price); let offRatio = data.off_ratio; const type = data.type; const isMock = data.isMock; let product_image_hover_on = false; for (let i = 0; i < product_variants.length; i++) { const item = product_variants[i]; const vcap = Number(item.compare_at_price); if (item.price == price && vcap > compareAtPrice) { compareAtPrice = vcap; offRatio = item.off_ratio; } } let second_image = null; if (settings_product_image_hover_on) { for (let i = 1; i < images.length; i++) { const img = images[i]; if (img.src && img.src.indexOf('video=') === -1) { second_image = img; product_image_hover_on = true; break; } } } let sold_label_on = false; let sale_label_on = false; if (settings_product_save_label == null) { settings_product_save_label = true; } if (!data.available && product_sold_out_label) { sold_label_on = true; } if (settings_product_save_label && compareAtPrice > price && data.available) { sale_label_on = true; } const diffPrice = compareAtPrice - price; const variantValues = []; const showVariants = []; if (data.need_variant_image && settings_collection_color_swatches && settings_product_swatches_name.length > 0) { for (let i = 0; i < (data.options || []).length; i++) { const option = data.originData.options[i]; const optionName = option.name && option.name.toLowerCase(); if (settings_product_swatches_name.includes(optionName)) { for (let j = 0; j < product_variants.length; j++) { const variant = product_variants[j]; const value = variant.options[i].value; if (!variantValues.includes(value)) { variantValues.push(value); showVariants.push(variant); } } break; } } } return `
${function(){ if(showVariants.length == 0){ return `
` } return `
${ showVariants.map(item=>{ return `
`; }).join('') }
` }() }
SOLD OUT
SALE
${ showVariants.slice(0,variantShowLimit).map((item,index)=>{ return `
`; }).join('') }
+${showVariants.length - variantShowLimit}
${(settings_product_title === 'sub_title' && data.brief) ? data.brief : data.title}
${from_on}
-
-
${data.available ? `
` : ''}
`; }()}
${function(){ const wholesale_enabled = false; const qty = data.quantity || 1; const currentSelectVariant = data.variant; const defaultVariant = (data.product && data.product.variants && data.product.variants[0]) || Object.keys(data).length > 1 ? data : null; const productVariant = null; const variantData = currentSelectVariant || defaultVariant || productVariant; const wholesale_price = variantData.wholesale_price || []; if(wholesale_enabled && wholesale_price.length > 0) { let wholesaleIndex = wholesale_price.findIndex(item => { return item.min_quantity > qty; }); if(wholesaleIndex < 0){ wholesaleIndex = wholesale_price.length - 1; }else if(wholesaleIndex > 0){ wholesaleIndex = wholesaleIndex - 1; } const wholesalePrice = wholesale_price[wholesaleIndex] || ''; return `
` }else { const price = variantData && variantData.price; return price != undefined ? `
` : '
'; } }()}
${function(){ const productData = data.product; const selectedVariant = productData.variants.find(v => v.available) || productData.variants[0]; const product_options = productData.options.filter(Boolean) || []; return `
Price
${function() { const origin = "shop" const product = (origin === 'shop' ? data.product : data) || {}; const selectedVariant = product.variants.find(v => v.available) || product.variants[0]; return !!selectedVariant ? `
-
` : `
-
`; }()}
Quantity
${selectedVariant.available ? "Add to cart" : "SOLD OUT"}
Buy it now
Product was out of stock.
Product is unavailable.
${function() { const MAX_INVENTORY = 999999; const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : (data.product || data); const inventoryQty = product0.inventory_quantity; const inventoryPolicy = product0.inventory_policy; const inventoryTracking = product0.inventory_tracking; const exactInventoryStatusId = "quick-shop-exact-inventory-render"; const lowStock = 5; const defaultVariant = product0 && product0.variants && product0.variants[0]; const selectedVariant = product0.variants.find(v => v.available) || defaultVariant; const selectedVariantAvailableQuantity = selectedVariant && selectedVariant.available_quantity; let actualInventory = inventoryQty; if ((inventoryTracking && inventoryPolicy == 'continue') || !inventoryTracking) { actualInventory = MAX_INVENTORY; } return `
Avaliability:
Out of stock
in stock, ready to be shipped
Low stock
`; }()}
` }()}
${function(){ const optionName = option.name || ''; const optionId = option.id || ''; let isThumbImage = !!option.showThumbImage; const thumbStyle = "image"; const variantType = "button"; const isSelected = (value) => { const selected = (data.selectedOptions || []).find(v => v.name === optionName); return selected && selected.value.length && selected.value[0] == value; }; const getThumbImage = (value) => { const options = data.product.options || []; const option = options.find(o => o.name === optionName); if (option.thumbImages) { const thumbImage = option.thumbImages.find(t => t.value === value); if (thumbImage && thumbImage.image) { return { src: thumbImage.image.src, alt: thumbImage.image.alt }; } } return {src: '', alt: ''}; }; return `
${optionName.toLowerCase()}
${value}
${value}
${optionName}:
${data.selectedOptions && data.selectedOptions.length && data.selectedOptions.find(v => v.name === optionName).value[0]}
${value}
`; }()}
${function(){ return `
${data.value}
` }()}
-
-
${function(){ const wholesale_enabled = false; const qty = data.quantity || 1; const currentSelectVariant = data.variant; const defaultVariant = (data.product && data.product.variants && data.product.variants[0]) || Object.keys(data).length > 1 ? data : null; const productVariant = null; const variantData = currentSelectVariant || defaultVariant || productVariant; const wholesale_price = variantData.wholesale_price || []; if(wholesale_enabled && wholesale_price.length > 0) { let wholesaleIndex = wholesale_price.findIndex(item => { return item.min_quantity > qty; }); if(wholesaleIndex < 0){ wholesaleIndex = wholesale_price.length - 1; }else if(wholesaleIndex > 0){ wholesaleIndex = wholesaleIndex - 1; } const wholesalePrice = wholesale_price[wholesaleIndex] || ''; return `
` }else { const price = variantData && variantData.price; return price != undefined ? `
` : '
'; } }()}
${function(){ const remove_variant_images_on = false; let product_swatches_name = []; product_swatches_name = product_swatches_name.map((name) => name.toLowerCase()); const variantsNamesSet = new Set(data.options.map((opt) => opt.name.toLowerCase()) || []); const containsSwatches = product_swatches_name.some((name) => variantsNamesSet.has(name)); const variantsList = (data && data.variants) || [] const variants = variantsList.map((item) => item.image.path) || []; const productData = data; let images = data.images; if(remove_variant_images_on && containsSwatches) { images = data.images.filter((img) => !variants.includes(img.path)); } const selectedVariant = data.variants.find(v => v.available) || data.variants[0]; const selectedIndex = !!selectedVariant ? images.findIndex(img => img.src === (selectedVariant.image && selectedVariant.image.src)) : 0; const initialSlide = selectedIndex === -1 ? 0 : selectedIndex; return `
${images.map((image, index) => `
`).join('')}
${images.map(image => `
`).join('')} ${images.length > 1 ? `
` : ''}
${data.title}
Price
${function() { const origin = "view" const product = (origin === 'shop' ? data.product : data) || {}; const selectedVariant = product.variants.find(v => v.available) || product.variants[0]; return !!selectedVariant ? `
-
` : `
-
`; }()}
Quantity
${selectedVariant.available ? "Add to cart" : "SOLD OUT"}
Buy it now
Product was out of stock.
Product is unavailable.
${function() { const MAX_INVENTORY = 999999; const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : (data.product || data); const inventoryQty = product0.inventory_quantity; const inventoryPolicy = product0.inventory_policy; const inventoryTracking = product0.inventory_tracking; const exactInventoryStatusId = "quick-view-exact-inventory-render"; const lowStock = 5; const defaultVariant = product0 && product0.variants && product0.variants[0]; const selectedVariant = product0.variants.find(v => v.available) || defaultVariant; const selectedVariantAvailableQuantity = selectedVariant && selectedVariant.available_quantity; let actualInventory = inventoryQty; if ((inventoryTracking && inventoryPolicy == 'continue') || !inventoryTracking) { actualInventory = MAX_INVENTORY; } return `
Avaliability:
Out of stock
in stock, ready to be shipped
Low stock
`; }()}
` }()}
${function(){ const optionName = option.name || ''; const optionId = option.id || ''; let isThumbImage = !!option.showThumbImage; const thumbStyle = "image"; const variantType = "button"; const isSelected = (value) => { const selected = (data.selectedOptions || []).find(v => v.name === optionName); return selected && selected.value.length && selected.value[0] == value; }; const getThumbImage = (value) => { const options = data.product.options || []; const option = options.find(o => o.name === optionName); if (option.thumbImages) { const thumbImage = option.thumbImages.find(t => t.value === value); if (thumbImage && thumbImage.image) { return { src: thumbImage.image.src, alt: thumbImage.image.alt }; } } return {src: '', alt: ''}; }; return `
${optionName.toLowerCase()}
${value}
${value}
${optionName}:
${data.selectedOptions && data.selectedOptions.length && data.selectedOptions.find(v => v.name === optionName).value[0]}
${value}
`; }()}
${function(){ return `
${data.value}
` }()}
-
-