Summer clearance sale!

View more
View more

Fashionable personalized printed all-over irregular pattern T-shirt

$22.89 $32.00

Fashion Multi-Element Mix Print Short Sleeve T-Shirt

$19.89 $29.00

Basketball 8 Print Short Sleeve T-Shirt

$18.89 $29.00

Faith Cross Print Short Sleeve T-Shirt

$19.89 $29.00

Fashion Oversized T-shirt

$20.89 $31.00

Singer-songwriter Blonde Print Short Sleeve T-Shirt

$19.89 $29.00

Rap casual street T-shirt

$18.89 $33.00

Fashion Print Short Sleeve T-Shirt

$18.89 $29.00

Words Album Print Short Sleeve T-Shirt

$18.89 $29.00

Fashion personalized printed round neck short T-shirt

$19.89 $32.00 +2

Don't Let Other People Write Your Script Print Short Sleeve T-Shirt

$19.89 $29.00

Jesus Cross Print 3/4 Sleeve T-Shirt

$24.89 $29.00

Faith casual street print T-shirt

$18.89 $33.00

One Of One Print Short Sleeve T-Shirt

$18.89 $29.00

Faith in God Casual Street Print T-shirt

$18.89 $44.00

Rap star print T shirt

$19.89 $33.00

New In

Casual Street Basketball Luxe Heavy Tapestry Hoodie

$31.89 $44.00

Creator casual street rap retro washed heavy hoodie

$35.89 $44.00

Rap casual street retro washed hoodie

$35.89 $44.00

Rap album casual street heavyweight hoodie

$32.89 $39.00

God Speed Casual Street Vintage Zip Hoodie

$36.89 $44.00

Hip Hop Casual Street Rap Heavy Hoodie

$31.89 $39.00

Creator casual street hip-hop retro washed hoodie

$35.89 $44.00

Vintage singer graphic tapestry print hoodie

$28.89 $40.00

Full Zip Tapestry Sweatshirt

$43.89 $55.00

Christmas Green Elf Casual Streetwear Tapestry Hoodie

$32.89 $44.00

Fringed Vintage Singer Print Faux Tapestry Hoodie

$36.89 $50.00

Casual Street Vintage Basketball Tapestry Hoodie

$32.89 $44.00

Crew Neck Tassel Graphic Tapestry Sweatshirt

$26.89 $40.00

Casual Street Hip-Hop Trend Block Tapestry Hoodie

$32.89 $44.00

Hip Hop Rap Casual Street Luxury Heavy Tapestry Hoodie

$32.89 $44.00

Beat the Rivals Casual Streetwear Tapestry Hoodie

$32.89 $44.00

Hip Hop Street Rap Heavy Tapestry Hoodie

$32.89 $44.00

Street Style Graphic Print Tapestry Hoodie

$35.89 $48.00

Vintage tapestry figure sweatshirt

$28.89 $40.00

Vintage Stars Tapestry Sweatshirt

$28.89 $40.00

Casual Street Basketball Luxe Heavy Tapestry Hoodie

$31.89 $44.00

Creator casual street rap retro washed heavy hoodie

$35.89 $44.00

Rap casual street retro washed hoodie

$35.89 $44.00

Rap album casual street heavyweight hoodie

$32.89 $39.00

God Speed Casual Street Vintage Zip Hoodie

$36.89 $44.00

Hip Hop Casual Street Rap Heavy Hoodie

$31.89 $39.00

Creator casual street hip-hop retro washed hoodie

$35.89 $44.00

Vintage singer graphic tapestry print hoodie

$28.89 $40.00

Full Zip Tapestry Sweatshirt

$43.89 $55.00
View more

Sports Shorts

Casual personalized print shorts

$29.89 $35.00 +2

Joshur 1:9 Print Double Layer Quick Dry Shorts

$29.89 $39.00

Isaiah 4:10 Print Double Layer Quick Dry Shorts

$29.89 $39.00

Stylish Retro Sports Shorts

$27.00 $33.00

Sports Shorts

$23.89 $33.00

Fashion retro mvp print shorts

$23.89 $33.00

Crowd Blur Shorts

$23.89 $33.00

Fashion retro print shorts

$27.00 $33.00

Fashionable personality contrast color sports shorts

$23.89 $33.00

Retro Loose Sports Shorts

$27.00 $33.00

usa size 6 shorts

$27.00 $33.00

Casual Fashion Printed Sports Shorts

$23.89 $33.00

Personalized gradient print casual shorts

$22.00 $33.00 +1

Floral print shorts

$22.00 $32.00

usa printed casual shorts

$27.00 $37.00

Vintage flame print shorts

$22.00 $32.00

Casual Street Retro Washed Shorts

$21.89 $44.00

Fashionable preppy sports shorts

$22.00 $32.00

Vintage Tapestry Shorts

$27.00 $37.00

USA Printed Number Shorts

$26.00 $38.00

Casual personalized print shorts

$29.89 $35.00 +2

Joshur 1:9 Print Double Layer Quick Dry Shorts

$29.89 $39.00

Isaiah 4:10 Print Double Layer Quick Dry Shorts

$29.89 $39.00

Stylish Retro Sports Shorts

$27.00 $33.00

Sports Shorts

$23.89 $33.00

Fashion retro mvp print shorts

$23.89 $33.00

Crowd Blur Shorts

$23.89 $33.00

Fashion retro print shorts

$27.00 $33.00

Fashionable personality contrast color sports shorts

$23.89 $33.00
View more

Casual Shirts

Fashionable personalized printed lapel loose shirt

$32.89 $47.00

Holiday casual loose short-sleeved shirt

$30.89 $45.00

Contrast color printed shirt

$35.89 $45.00

Casual Street Style Vacation Shirt

$29.89 $55.00

Anime casual holiday street shirt

$29.89 $55.00

Rap Print Streetwear Vacation Shirt

$29.89 $55.00

Sexy Machina casual vacation shirt

$29.89 $55.00

Floral Graffiti Casual Street Holiday Shirt

$29.89 $55.00

Japanese casual street shirt

$29.89 $55.00

Plaid Graffiti Casual Street Shirt

$29.89 $55.00

Baiyun casual street vacation shirt

$29.89 $55.00

Floral Oil Painting Casual Street Holiday Shirt

$29.89 $55.00

Casual Street Holiday Print Shirt

$29.89 $55.00

Casual Streetwear Vacation Streetwear Shirt

$29.89 $55.00

Graffiti casual holiday street shirt

$29.89 $55.00

Rap Printed Vacation Shirt

$29.89 $55.00

Chainsaw print holiday shirt

$29.89 $55.00

Vintage Jungle Lapel Shirt

$35.89 $45.00

Contrast color casual lapel print

$35.89 $45.00

Street Style Jungle Pattern Lapel Shirt

$30.89 $45.00

Fashionable personalized printed lapel loose shirt

$32.89 $47.00

Holiday casual loose short-sleeved shirt

$30.89 $45.00

Contrast color printed shirt

$35.89 $45.00

Casual Street Style Vacation Shirt

$29.89 $55.00

Anime casual holiday street shirt

$29.89 $55.00

Rap Print Streetwear Vacation Shirt

$29.89 $55.00

Sexy Machina casual vacation shirt

$29.89 $55.00

Floral Graffiti Casual Street Holiday Shirt

$29.89 $55.00

Japanese casual street shirt

$29.89 $55.00
View more

Two-pieces

Burning Zip Hoodie Pants Two-Piece Set

$52.89 $99.00

Vitex Letters Print Two Piece Hoodie Set

$51.89 $59.00

Casual Street Retro Pants Hoodie Two-Piece Set

$52.89 $99.00

Casual Street Zip-Up Hoodie Pants Two-Piece Set

$52.89 $99.00

Street Style Stripe Print Hoodie Casual Set

$53.00 $72.00

Street Camouflage Letter Patch Embroidered Zipper Hoodie Camouflage Pants Set

$57.89 $75.00

Casual Street Hoodie Pants Two-Piece Set

$52.89 $99.00

Striped Hoodie and Trousers Two-Piece Set

$52.89 $99.00

Camouflage Jungle Zip Hoodie Set

$53.00 $72.00

Snake Men Hoodie Pants Two-Piece Set

$49.89 $99.00

Cement Grey Zip-Up Hoodie and Pants Two-Piece Set

$52.89 $99.00

Vintage Hoodie Trousers Two-Piece Set

$52.89 $99.00

Vintage Tree Camouflage Pattern Hoodie and Pants Set

$52.89 $69.00

Eagle Zip Hoodie and Pants Two-Piece Set

$52.89 $99.00

Badge Letters Print Two Piece Hoodie Set

$53.89 $64.00

Cross Stripe Hoodie Trousers Two-Piece Set

$52.89 $99.00

Camouflage Stripe Print Two Piece Hoodie Set

$56.89 $59.00

Street Pattern Print Zipper Long Sleeve Ripped Hoodie Set

$57.89 $66.00

Religious Retro Letters Print Long Sleeve Hoodie Pants Set

$55.89 $69.00

Street Gradient Letter Pattern Zipper Hoodie Casual Long Sleeve Two-piece Set

$54.89 $73.00

Burning Zip Hoodie Pants Two-Piece Set

$52.89 $99.00

Vitex Letters Print Two Piece Hoodie Set

$51.89 $59.00

Casual Street Retro Pants Hoodie Two-Piece Set

$52.89 $99.00

Casual Street Zip-Up Hoodie Pants Two-Piece Set

$52.89 $99.00

Street Style Stripe Print Hoodie Casual Set

$53.00 $72.00

Street Camouflage Letter Patch Embroidered Zipper Hoodie Camouflage Pants Set

$57.89 $75.00

Casual Street Hoodie Pants Two-Piece Set

$52.89 $99.00

Striped Hoodie and Trousers Two-Piece Set

$52.89 $99.00

Camouflage Jungle Zip Hoodie Set

$53.00 $72.00
View more

Tapestry Hoodies

Casual statement retro tapestry hoodie

$34.89 $45.00

Hip Hop Casual Rap Street Tapestry Sweatshirt

$33.89 $66.00

Hip-hop street crew neck sweatshirt

$25.89 $77.00

Hip Hop Rap Tapestry Crew Neck Long Sleeve

$32.89 $88.00

Casual Street Hip-Hop Rap Tapestry Sweatshirt

$33.89 $66.00

Tapestry Basketball Graphic Hip Hop Hoodie

$32.89 $38.00

retro thriller tapestry hoodie

$29.89 $38.00

Trendy hip-hop graphic tapestry sweatshirt

$27.89 $40.00

Retro Hip Hop Fashion Tapestry Hoodie

$29.89 $38.00

Moses Print Long Sleeve Hoodies

$32.89 $39.00

Jesus Created For Good Works Print Long Sleeve Hoodies

$32.89 $39.00

Jesus The Lamb Of God Print Long Sleeve Hoodies

$32.89 $39.00

Hip Hop Rap Tapestry Hoodie

$32.89 $77.00

Casual Print Long Sleeve Hoodie

$29.89 $39.00

Hip Hop Rap Tapestry Sweatshirt

$29.89 $66.00

Retro Movie Character Tapestry Sweatshirt

$36.00 $46.00

Marley's Song Casual Street Tapestry Hoodie

$33.89 $77.00

Stylish Vintage Zip-Up Tapestry Hoodie

$38.00 $50.00

Vintage Basketball Tapestry Hoodie

$37.00 $50.00

Vintage Faith Print Long Sleeve Hoodies

$32.89 $39.00

Casual statement retro tapestry hoodie

$34.89 $45.00

Hip Hop Casual Rap Street Tapestry Sweatshirt

$33.89 $66.00

Hip-hop street crew neck sweatshirt

$25.89 $77.00

Hip Hop Rap Tapestry Crew Neck Long Sleeve

$32.89 $88.00

Casual Street Hip-Hop Rap Tapestry Sweatshirt

$33.89 $66.00

Tapestry Basketball Graphic Hip Hop Hoodie

$32.89 $38.00

retro thriller tapestry hoodie

$29.89 $38.00

Trendy hip-hop graphic tapestry sweatshirt

$27.89 $40.00

Retro Hip Hop Fashion Tapestry Hoodie

$29.89 $38.00
View more

Pants

Fashion retro personality casual pile pants

$33.89 $40.00

Fluent Striped Print Pocket Flared Trousers

$34.89 $44.00

Garden State Print Pocket Trousers

$32.89 $39.00

Three-stripe print casual trousers

$29.89 $48.00

Letters Flame Print Pocket Flared Trousers

$32.89 $39.00

Personalized retro loose jeans

$57.99 $60.00

Striped casual street hip-hop trousers

$32.89 $66.00

Casual Street Stitching Denim

$40.89 $88.00

High street style heavy washing old ink splash color deconstruction bell bottom pants sub trend personality niche stacked jeans

$37.89 $88.00

Casual Hollywood Letter Print Pocket Flared Trousers

$29.89 $39.00

Personalized Jesus Multi-Element Print Pocket Flared Trousers

$33.89 $39.00

Leaf Striped Print Pocket Flared Trousers

$39.89 $44.00

Fake two-piece applique embroidered casual trousers

$37.00 $50.00

Vintage Street Camouflage Casual Pants

$34.89 $44.00

Vintage Tree Camouflage Casual Pants

$49.89 $70.00

Casual Street Multi-Pocket Overalls

$45.89 $60.00 +1

Tree camouflage casual sports pants

$34.89 $44.00

Camouflage tree pattern trousers

$49.89 $70.00

Casual Camouflage Vintage Wide Leg Pants

$34.89 $44.00

Tree camouflage pants

$34.89 $50.00

Fashion retro personality casual pile pants

$33.89 $40.00

Fluent Striped Print Pocket Flared Trousers

$34.89 $44.00

Garden State Print Pocket Trousers

$32.89 $39.00

Three-stripe print casual trousers

$29.89 $48.00

Letters Flame Print Pocket Flared Trousers

$32.89 $39.00

Personalized retro loose jeans

$57.99 $60.00

Striped casual street hip-hop trousers

$32.89 $66.00

Casual Street Stitching Denim

$40.89 $88.00

High street style heavy washing old ink splash color deconstruction bell bottom pants sub trend personality niche stacked jeans

$37.89 $88.00
View more
class SpzSmartBlockComponent extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.container_ = null; this.i18n_ = {}; this.config_ = {}; this.show_type_ = 3; this.product_resource_id_ = ''; this.collection_resource_id_ = ''; this.cart_items_ = []; this.customer_id_ = ''; this.order_id_ = ''; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { const template_type = window.SHOPLAZZA.meta.page.template_type; if (template_type === 1) { this.show_type_ = 3; this.product_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 2) { this.show_type_ = 4; this.collection_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 15){ this.show_type_ = 5; } else if (template_type === 13){ this.show_type_ = 6; } else if (template_type === 20){ this.show_type_ = 7; this.customer_id_ = window.SHOPLAZZA.customer.customer_id; } else if (template_type === 35){ this.show_type_ = 8; this.order_id_ = window.location.pathname.split('/').pop(); } this.templates_ = SPZServices.templatesForDoc(this.element); this.setAction_(); } mountCallback() { console.log('appzebu smart mounted'); const that = this; const themeName = window.SHOPLAZZA.theme.merchant_theme_name; const isGeek = /Geek/.test(themeName); this.fetchRules().then((res) => { if (res && res.rules && res.rules.length) { const blockEl = document.getElementById('smart_recommend_block'); SPZ.whenApiDefined(blockEl).then((api) => { api.render({data: res}, true).then(() => { if (isGeek && that.show_type_ === 6) { blockEl.querySelector('.plugin_container_wrpper').style.padding = '30px 0'; } const recommendStyle = document.createElement('style'); recommendStyle.innerHTML = ` .plugin__recommend_container,.app-recommend-card { display: none !important; } `; document.head.appendChild(recommendStyle); const fetchList = []; res.rules.forEach((rule) => { fetchList.push(this.fetchRuleProductList(rule.id)); }); const fetchAll = Promise.all(fetchList); fetchAll.then((p_res) => { res.rules.forEach((rule, index) => { rule.products = p_res[index] && p_res[index].products; const ruleEl = document.getElementById('smart_recommend_rule_' + rule.id); SPZ.whenApiDefined(ruleEl).then((api) => { api.render({data: rule}, true).then(() => { that.impressListen(`#smart_recommend_rule_ul_${rule.id}`, function(){ that.trackRuleImpress(rule); }); const btnElList = document.querySelectorAll(`#smart_recommend_rule_ul_${rule.id} button`); btnElList.forEach((btnEl) => { if (btnEl && rule.config && rule.config.quick_shop_button_bg_color && rule.config.quick_shop_button_text_color) { btnEl.style.backgroundColor = rule.config.quick_shop_button_bg_color; btnEl.style.color = rule.config.quick_shop_button_text_color; } }) }); }); }); }); }) }) } else { if (window.top !== window.self) { const template_type = window.SHOPLAZZA.meta.page.template_type; const holderEl = document.getElementById('smart_recommend_preview_no_data_placeholder'); SPZ.whenApiDefined(holderEl).then((api) => { api.render({data: { isCart: template_type === 13, isCollection: template_type === 2, isProduct: template_type === 1, isIndex: template_type === 15 }}, true); }); } } }); } setAction_() { this.registerAction('quickShop', (data) => { const that = this; const product_id = data.args.product_id; const productIndex = data.args.productIndex; const rule_id = data.args.rule_id; const ssp = data.args.ssp; const scm = data.args.scm; const cfb = data.args.cfb; const ifb = data.args.ifb; const modalRender = document.getElementById('smart_recommend_product_modal_render'); if (product_id) { this.fetchProductData(product_id).then((res) => { const product = res.products && res.products.length && res.products[0] || {}; product.cfb = cfb; product.ifb = ifb; SPZ.whenApiDefined(modalRender).then((api) => { api.render({product: product, productIndex: productIndex, rule_id: rule_id, ssp: ssp, scm: scm, show_type: that.show_type_}, true).then(() => { const modalEl = document.getElementById('smart_recommend_product_modal'); SPZ.whenApiDefined(modalEl).then((modal) => { that.impressListen('#smart_recommend_product_modal', function(){ that.trackQuickShop({ rule_id: rule_id, product_id: product_id }); }); modal.open(); }); const formEl = document.getElementById('smart_recommend_product_form'); SPZ.whenApiDefined(formEl).then((form) => { form.setProduct(product); }); const variantEl = document.getElementById('smart_recommend_product_variants'); SPZ.whenApiDefined(variantEl).then((variant) => { variant.handleRender(product); }); }); }) }); } }); this.registerAction('handleScroll', (data) => { this.directTo(data.args.rule_id, data.args.direction); }); this.registerAction('handleProductChange', (data) => { const variant = data.args.data.variant; const product = data.args.data.product; const imageRenderEl = document.getElementById('smart_recommend_product_image'); SPZ.whenApiDefined(imageRenderEl).then((api) => { api.render({ variant: variant, product: product }, true); }); }); this.registerAction('handleAtcSuccess', (detail) => { const data = detail.args; data.data.product = data.data.product || {}; data.data.variant = data.data.variant || {}; const product_id = data.data.product.id; const product_title = data.data.product.title; const variant_id = data.data.variant.id; const price = data.data.variant.price; const rule_id = data.rule_id; const aid = `smart_recommend.${this.show_type_}.${rule_id}`; const ifb = data.data.product.ifb; const cfb = data.data.product.cfb; const ssp = data.ssp; const scm = data.scm; const spm = `smart_recommend_${this.show_type_}.${data.spmIndex}`; const params = { id: product_id, product_id: product_id, number: 1, name: product_title, variant_id: variant_id, childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid: aid, ifb: ifb, cfb: cfb, scm: scm, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, ssp: ssp, } }; this.tranckAddToCart(params); }); this.registerAction('addATCHook', (data) => { const params = data.args; const spm = `smart_recommend_${this.show_type_}.${params.spmIndex}`; this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({ event: 'dj.addToCart', params: { aid: `smart_recommend.${this.show_type_}.` + params.rule_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, }, once: true }); }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } fetchRules() { const payload = { show_type: this.show_type_, }; let that = this; if (this.show_type_ === 6) { let line_items = []; return this.fetchCart().then((res) => { if (res && res.cart && res.cart.line_items) { line_items = res.cart.line_items.map((item) => { return { product_id: item.product_id, variant_id: item.variant_id, quantity: item.quantity, price: item.price } }); } payload.line_items = line_items; that.cart_items_ = line_items; return that.fetchRulesRequest(payload); }); } else { if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return this.fetchRulesRequest(payload); } } fetchRulesRequest(payload) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_query", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }); } fetchCart() { return fetch(`/api/cart/cart-select?r=${Math.random().toString(36).slice(-4)}`) .then((res) => { if (res.ok) { return res.json(); } }); } fetchRuleProductList(rule_id) { const payload = { page: 1, limit: 100, fields: ["title", "url", "image", "min_price_variant.price", "min_price_variant.compare_at_price"], rule_id: rule_id, }; if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 6) { payload.line_items = this.cart_items_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); }); } fetchProductData(product_id) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ product_ids: [product_id], fields: [ "images", "options", "min_price_variant", "variants"] }) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); const loadingEl = document.getElementById('smart_recommend_loading'); if (loadingEl) { loadingEl.style.display = 'none'; } }); } getStyle(ele, style) { if (!ele) return; if (window.getComputedStyle) { return window.getComputedStyle(ele)[style]; } return ele.currentStyle[style]; } directTo(id, direction) { const scrollElement = document.getElementById(`smart_recommend_rule_ul_${id}`); const blockWidth = parseInt(this.getStyle(scrollElement, 'width')); const scrollLength = (blockWidth * 0.19 - 12) * 5; const scrollPoint = scrollElement.scrollWidth - scrollElement.clientWidth; if (!scrollElement) return; if (direction === 'left') { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft - scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: Math.max(scrollElement.scrollLeft - scrollLength, 0), behavior: 'smooth' }); } else { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint + 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: scrollElement.scrollLeft >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); } } trackRuleImpress(rule) { if (window.sa && window.sa.track) { window.sa.track("plugin_common", { plugin_name: "upsell", event_type: "impressions", rule_id: rule.id, ssp: rule.ssp, scm: rule.scm, show_type: this.show_type_, support_app_block: window.SHOPLAZZA.theme.support_app_block }); window.sa.track("module_impressions", { aid: `smart_recommend.${this.show_type_}.${rule.id}`, support_app_block: window.SHOPLAZZA.theme.support_app_block }); } } trackQuickShop(data) { window.sa && sa.track && sa.track("plugin_common", { plugin_name: "upsell", event_type: "quick_shop", rule_id: data.rule_id, product_id: data.product_id, show_type: this.show_type_, }); } impressListen(selector, cb) { const el = document.querySelector(selector); const onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el && !el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart-block', SpzSmartBlockComponent);