www.funftball.com
Open in
urlscan Pro
2606:4700::6812:e82a
Public Scan
Submitted URL: http://www.funftball.com/
Effective URL: https://www.funftball.com/
Submission: On March 08 via api from US — Scanned from DE
Effective URL: https://www.funftball.com/
Submission: On March 08 via api from US — Scanned from DE
Form analysis
4 forms found in the DOMGET /search
<form action="/search" method="get">
<div tabindex="-1" class="header__icon d-none d-lg-flex flex-row-reverse align-items-center header__search">
<button type="submit" class="sep-font sep-font-search-thin header__search-icon dj_skin_link logo-icon-color" tabindex="-1"></button>
<input style="background-color: #FFFFFF !important;" name="q" id="searchheader" type="text" class="form-control header__search-input " placeholder="Search for...">
<label for="searchheader" class="header__search-label" tabindex="1"></label>
</div>
</form>
<form class="zb-flex zb-flex-col zb-relative zb-w-full">
<div class="zb-overflow-y-auto zb-pb-[100px]">
<div class="zb-flex zb-items-center zb-pb-4 zb-border-b zb-border-t-0 zb-border-l-0 zb-border-r-0 zb-border-solid zb-border-[#eee] md:zb-border-none"> <ljs-render layout="container"
class="zb-flex-shrink-0 zb-w-[66px] zb-mr-4 rtl:zb-ml-4 rtl:zb-mr-0 zb-h-[70px] md:zb-hidden" id="smart_recommend_product_image" manual="" template="smart_recommend_product_image_template"></ljs-render>
<div class="zb-w-full">
<div class="zb-line-clamp-2 zb-mb-2 zb-text-sm md:zb-text-base">${product.title}</div>
<div class="zb-flex zb-justify-between zb-items-center"> <spz-render layout="container" template="smart_recommend_price_template" id="smart_recommend_modal_price" manual="">
<div class="zb-flex zb-items-center"> <ljs-currency class="zb-font-semibold zb-text-[22px] zb-text-[#CD201A] zb-mr-2" layout="container" value="${product.min_price_variant.price}"></ljs-currency> <ljs-currency
class="zb-text-[#93989D] zb-text-xs zb-line-through" layout="container" value="${product.min_price_variant.compare_at_price}"
spz-if="${product.min_price_variant.compare_at_price > product.min_price_variant.price ? true : false}"></ljs-currency> </div>
</spz-render>
<a class="zb-flex zb-items-center zb-cursor-pointer zb-text-[#212B36] zb-no-underline" href="${product.url}?${toQuery({ aid: 'smart_recommend.' + data.show_type + '.' + data.rule_id, ifb: product.ifb || '', cfb: product.cfb || '', scm: data.scm || '', ssp: data.ssp || '' })}"> <span class="zb-text-[13px]">See detail</span> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24"><path d="M13.1714 12.0007L8.22168 7.05093L9.63589 5.63672L15.9999 12.0007L9.63589 18.3646L8.22168 16.9504L13.1714 12.0007Z" fill="#93989D"></path></svg> </a>
</div>
</div>
</div> <ljs-variants id="smart_recommend_product_variants" layout="container" template="smart_recommend_product_variant_template" slide="smart_recommend_carousel" disabled-dj-event="" interference=""> </ljs-variants>
<div class="zb-text-sm zb-mb-2">Quantity</div> <ljs-quantity disabled-dj-event="" layout="fixed" width="150" height="52" min="1" max="999999" value="1" input-class="!zb-text-base" icon-class="!zb-p-3"></ljs-quantity>
</div>
<div class="zb-absolute zb-bottom-0 zb-flex md:zb-flex-col zb-w-full zb-bg-white"> <button
class="zb-flex zb-items-center zb-mr-2 rtl:zb-ml-2 rtl:zb-mr-0 md:zb-mb-2 zb-justify-center zb-cursor-pointer zb-w-full zb-border zb-border-solid zb-border-[#313131] zb-bg-white zb-rounded zb-h-[42px]" role="addToCart" type="button"
@tap="smart_recommend_func.addATCHook(rule_id='${data.rule_id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${data.scm}',ssp='${data.ssp}',spmIndex='${data.productIndex}');"> <span>Add To Cart</span> </button> <button
class="zb-flex zb-items-center zb-justify-center zb-cursor-pointer zb-w-full zb-bg-[#292929] zb-text-white zb-rounded zb-h-[42px] zb-border-none" type="button" role="buyNow"
@tap="smart_recommend_loading.showLoading;smart_recommend_func.addATCHook(rule_id='${data.rule_id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${data.scm}',ssp='${data.ssp}',spmIndex='${data.productIndex}');"> <span>Buy Now</span> </button>
</div>
</form>
<form class="">
<div class="zb-flex">
<a href="${product.url}?${toQuery({ aid: 'smart_recommend.2.' + data.id, ifb: product.ifb || '', cfb: product.cfb || '', scm: product.scm || data.scm || '', ssp: data.ssp || '' })}" impr="1" imprevt="1" class="zb-w-[132px] zb-mr-4 rtl:zb-ml-4 rtl:zb-mr-0" data-prdct="${product.id}" data-ifb="${product.ifb || ''}" data-cfb="${product.cfb || ''}" data-scm="${product.scm || data.scm || ''}" data-spm="${productIndex}"> <ljs-render layout="container" id="smart_cart_pop_image_${product.id}" template="smart_cart_pop_image_template" manual=""></ljs-render> </a>
<div class="zb-flex zb-flex-col zb-flex-grow zb-justify-between">
<div>
<div class="zb-line-clamp-2 zb-text-sm zb-mb-2">${product.title}</div> <ljs-render layout="container" id="smart_cart_pop_price_${product.id}" template="smart_cart_pop_price_template" manual=""></ljs-render>
</div>
<div>
<div class="zb-relative zb-w-full zb-cursor-pointer">
<div class="zb-border zb-border-solid zb-border-[#eee] zb-px-3 zb-py-[10px] zb-flex zb-items-center zb-justify-between zb-font-semibold zb-text-sm zb-rounded-sm"
@tap="smart_pop_variant-select-${product.id}.toggleClass(class=zb-rotate-180);smart_cart_pop_variant_${product.id}_mobile.toggleClass(class=zb-hidden);smart_cart_pop_variant_${product.id}_pc.toggleClass(class=smart_cart_pop_variant_pc_show,force=true);smart_cart_pop_variant_modal_${product.id}.open"
spz-if="${!!(product.options && product.options.length && product.options.length > 0) && data.config.variant_select_visible}"> <ljs-render manual="" layout="container" id="smart_cart_pop_variant_text_${product.id}"
template="smart_cart_pop_variant_text_template"></ljs-render> <svg id="smart_pop_variant-select-${product.id}" width="12" height="8" class="zb-ml-2" viewBox="0 0 12 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M6.00002 7.06738C6.19244 7.06775 6.38498 6.99453 6.5318 6.84772C6.54504 6.83447 6.55769 6.82086 6.56973 6.8069L11.1251 2.25152C11.418 1.95863 11.418 1.48375 11.1251 1.19086C10.8322 0.897968 10.3573 0.897968 10.0645 1.19086L6.00003 5.25529L1.9356 1.19086C1.64271 0.897968 1.16784 0.897968 0.874943 1.19086C0.58205 1.48375 0.58205 1.95863 0.874943 2.25152L5.43033 6.8069C5.44237 6.82086 5.45502 6.83447 5.46826 6.84772C5.61507 6.99453 5.8076 7.06775 6.00002 7.06738Z"
fill="#0A1533"></path>
</svg> </div> <ljs-lightbox layout="nodisplay" disable-unmount="" class="smart_cart_pop_lightbox_pc" id="smart_cart_pop_variant_modal_${product.id}" @close="smart_pop_variant-select-${product.id}.toggleClass(class=zb-rotate-180);">
<div id="smart_cart_pop_variant_${product.id}_pc" class="zb-hidden"><ljs-variants id="smart_cart_pop_variants_${product.id}"
class="md:!zb-absolute md:zb-top-[50px] md:zb-w-full md:zb-left-0 md:zb-z-30 md:zb-bg-white zb-max-h-[280px] zb-overflow-y-auto md:zb-shadow-pop" layout="container" template="smart_cart_pop_variant_template"
onclick="event.stopPropagation()" disabled-dj-event="" interference=""> </ljs-variants></div>
</ljs-lightbox>
</div>
<div class="zb-mt-3"> <button product-id="${product.id}" id="smart_cart_pop_atc_btn_${product.id}"
class="zb-flex zb-items-center zb-justify-center zb-w-full zb-text-white zb-py-[10px] zb-h-9 zb-text-xs zb-font-normal zb-border-none zb-rounded-[4px] smart_cart_pop_atc_btn_bg" type="button" role="addToCart"
@tap="smart_cart_pop_loading_${product.id}.toggleClass(class=zb-hidden);smart_cart_pop_atc_${product.id}.toggleClass(class=zb-hidden);smart_cart_pop_atc_btn_${product.id}.toggleClass(class=zb-pointer-events-none);custom-func.addATCHook(activity_id='${data.id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${product.scm || data.scm}',ssp='${data.ssp}',spm='${data.spmBase}.${productIndex}')">
<ljs-render layout="container" id="smart_cart_pop_atc_${product.id}" template="smart_cart_pop_atc_template" mamual="" class="notranslate"> </ljs-render>
<div id="smart_cart_pop_added_${product.id}" class="zb-hidden"><span class="zb-flex zb-justify-center zb-gap-1"><svg width="14" height="15" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M8 16.5006C3.58171 16.5006 0 12.9183 0 8.5C0 4.08171 3.58171 0.5 8 0.5C12.4183 0.5 16 4.08171 16 8.5C16 12.9183 12.4183 16.5006 8 16.5006ZM8 2.04344C4.21314 2.04344 1.54287 4.71371 1.54287 8.50057C1.54287 12.2874 4.21314 14.9577 8 14.9577C11.7869 14.9577 14.4571 12.2874 14.4571 8.50057C14.4571 4.71371 11.7869 2.04344 8 2.04344ZM7.26057 11.1909L7.12229 11.3286L7.09543 11.3017C7.02286 11.336 6.94286 11.3577 6.85714 11.3577C6.73543 11.3577 6.62857 11.3109 6.536 11.2463L6.52229 11.2594L6.45371 11.1909C6.45314 11.1903 6.45314 11.1903 6.45257 11.1897L4.09771 8.83486L4.90629 8.02686L6.85714 9.97771L11.1629 5.67143L11.9714 6.48L7.26171 11.1897C7.26114 11.1903 7.26114 11.1903 7.26057 11.1909Z"
fill="white"></path>
</svg>Added</span></div>
<div id="smart_cart_pop_loading_${product.id}" class="zb-hidden">
<div class="smart_cart_pop_loading"></div>
</div>
</button> </div>
</div>
</div>
</div>
<div id="smart_cart_pop_variant_${product.id}_mobile" class="zb-hidden md:zb-hidden"><ljs-variants id="smart_cart_pop_variants_${product.id}"
class="md:!zb-absolute md:zb-top-[50px] md:zb-w-full md:zb-left-0 md:zb-z-30 md:zb-bg-white zb-max-h-[280px] zb-overflow-y-auto md:zb-shadow-pop" layout="container" template="smart_cart_pop_variant_template" onclick="event.stopPropagation()"
disabled-dj-event="" interference=""> </ljs-variants></div>
</form>
POST //translate.googleapis.com/translate_voting?client=te
<form id="goog-gt-votingForm" action="//translate.googleapis.com/translate_voting?client=te" method="post" target="votingFrame" class="VIpgJd-yAWNEb-hvhgNd-aXYTce"><input type="text" name="sl" id="goog-gt-votingInputSrcLang"><input type="text"
name="tl" id="goog-gt-votingInputTrgLang"><input type="text" name="query" id="goog-gt-votingInputSrcText"><input type="text" name="gtrans" id="goog-gt-votingInputTrgText"><input type="text" name="vote" id="goog-gt-votingInputVote"></form>
Text Content
We Offer Free Shipping Worldwide. 0 * Home * Premier League Manchester City Arsenal Manchester United Chelsea Liverpool Tottenham Everton Newcastle United Aston Villa Leeds United Leicester City West Ham United Wolverhampton Wanderers Crystal Palace Nottingham * La Liga Barcelona Real Madrid Atletico Madrid Osasuna Athletic Bilbao Real Betis Real Valladolid Real Sociedad Vallecano Valencia Cádiz Villarreal Celta Almeria Elche * Serie A AC Milan Inter Milan Juventus Napoli Roma Torino Venezia Atalanta Lazio * Ligue 1 Paris Marseille Lyon Monaco RC Lens * Bundesliga Bayern Dortmund Leipzig Frankfurt * National Team Europe Belgium Poland Denmark Russia Turkey Switzerland Germany France Netherlands Czech Republic Croatia Finland Portugal Sweden Italy Noth America Mexico Canada El Salvador Panama Costa Rica Jamaica United States Honduras Guatemala South America Uruguay Brazil Argentina Paraguay Colombia Ecuador Chile Asia Korea Japan Saudi Arabia Malaysia Iraq Qatar Iran Africa Senegal Tunisia Algeria Côte d'Ivoire Cameroon Morocco Ghana Nigeria Egypt * Others AFC Richmond Atlético Mineiro Al-Nassr Tigres América Chivas León São Paulo Corinthians Cruz Azul * Other products Womens Kids Retro Long sleeve Training Suit Windbreaker Shorts * Printing Badges EUR * United States Dollars (USD) * Euro (EUR) * United Kingdom Pounds (GBP) * Canadian Dollars (CAD) * Afghan Afghani (AFN) * Albanian Lek (ALL) * Algerian Dinar (DZD) * Angolan Kwanza (AOA) * Argentine Pesos (ARS) * Armenian Dram (AMD) * Aruban Florin (AWG) * Australian Dollars (AUD) * Barbadian Dollar (BBD) * Azerbaijani Manat (AZN) * Bangladesh Taka (BDT) * Bahamian Dollar (BSD) * Bahraini Dinar (BHD) * Belarusian Ruble (BYN) * Belize Dollar (BZD) * Bhutanese Ngultrum (BTN) * Bosnia and Herzegovina Convertible Mark (BAM) * Brazilian Real (BRL) * Bolivian Boliviano (BOB) * Botswana Pula (BWP) * Brunei Dollar (BND) * Bulgarian Lev (BGN) * Burmese Kyat (MMK) * Cambodian Riel (KHR) * Cape Verdean escudo (CVE) * Cayman Dollars (KYD) * Central African CFA Franc (XAF) * Chilean Peso (CLP) * Chinese Yuan Renminbi (CNY) * Colombian Peso (COP) * Comorian Franc (KMF) * Congolese franc (CDF) * Costa Rican Colones (CRC) * Croatian Kuna (HRK) * Czech Koruny (CZK) * Danish Kroner (DKK) * Dominican Peso (DOP) * East Caribbean Dollar (XCD) * Egyptian Pound (EGP) * Ethiopian Birr (ETB) * CFP Franc (XPF) * Fijian Dollars (FJD) * Gambian Dalasi (GMD) * Ghanaian Cedi (GHS) * Guatemalan Quetzal (GTQ) * Guyanese Dollar (GYD) * Georgian Lari (GEL) * Haitian Gourde (HTG) * Honduran Lempira (HNL) * Hong Kong Dollars (HKD) * Hungarian Forint (HUF) * Icelandic Kronur (ISK) * Indian Rupees (INR) * Indonesian Rupiah (IDR) * Israeli New Shekel (NIS) * Jamaican Dollars (JMD) * Japanese Yen (JPY) * Jersey Pound (JEP) * Jordanian Dinar (JOD) * Kazakhstani Tenge (KZT) * Kenyan Shilling (KES) * Kuwaiti Dinar (KWD) * Kyrgyzstani Som (KGS) * Laotian Kip (LAK) * Latvian Lati (LVL) * Lebanese Pounds (LBP) * Lesotho Loti (LSL) * Liberian Dollar (LRD) * Malagasy Ariary (MGA) * Macedonia Denar (MKD) * Macanese Pataca (MOP) * Malawian Kwacha (MWK) * Maldivian Rufiyaa (MVR) * Mexican Pesos (MXN) * Malaysian Ringgits (MYR) * Mauritian Rupee (MUR) * Moldovan Leu (MDL) * Moroccan Dirham (MAD) * Mongolian Tugrik (MNT) * Mozambican Metical (MZN) * Namibian Dollar (NAD) * Nepalese Rupee (NPR) * Netherlands Antillean Guilder (ANG) * New Zealand Dollars (NZD) * Nicaraguan Córdoba (NIO) * Nigerian Naira (NGN) * Norwegian Kroner (NOK) * Omani Rial (OMR) * Pakistani Rupee (PKR) * Papua New Guinean Kina (PGK) * Paraguayan Guarani (PYG) * Peruvian Nuevo Sol (PEN) * Philippine Peso (PHP) * Polish Zlotych (PLN) * Qatari Rial (QAR) * Romanian Lei (RON) * Russian Rubles (RUB) * Rwandan Franc (RWF) * Samoan Tala (WST) * Saudi Riyal (SAR) * Sao Tome And Principe Dobra (STD) * Serbian dinar (RSD) * Seychellois Rupee (SCR) * Singapore Dollars (SGD) * Sudanese Pound (SDG) * Syrian Pound (SYP) * South African Rand (ZAR) * South Korean Won (KRW) * South Sudanese Pound (SSP) * Solomon Islands Dollar (SBD) * Sri Lankan Rupees (LKR) * Surinamese Dollar (SRD) * Swazi Lilangeni (SZL) * Swedish Kronor (SEK) * Swiss Francs (CHF) * Taiwan Dollars (TWD) * Thai baht (THB) * Tanzanian Shilling (TZS) * Trinidad and Tobago Dollars (TTD) * Tunisian Dinar (TND) * Turkish Lira (TRY) * Turkmenistani Manat (TMT) * Ugandan Shilling (UGX) * Ukrainian Hryvnia (UAH) * United Arab Emirates Dirham (AED) * Uruguayan Pesos (UYU) * Uzbekistan som (UZS) * Vanuatu Vatu (VUV) * Venezuelan Bolivares (VEF) * Vietnamese đồng (VND) * West African CFA franc (XOF) * Yemeni Rial (YER) * Zambian Kwacha (ZMW) * Saint Helena pound * Burundian franc * Bermudian dollar * Cuban peso * Djiboutian franc * Eritrean nakfa * Guinean franc * North Korean won * Sierra Leonean leone * Somali shilling * Tajikistani somoni * Tongan paʻanga * Falkland Islands pound Powered by Google Übersetzer Bahasa Indonesia,English,한국어,简体中文,日本語,Português,العربية,Русский,Español,繁體中文,Français,ไทย,Italiano,Deutsch,Polski,Nederlands,Bahasa Melayu,svenska,norsk,čeština,Lietuvis,Latvietis,Suomalainen,Ελληνικά,Eestlane,dansk,Magyar,Romanian,Slovenščina,Український,Slovenská,Български,Tiếng Việt,Türkçe,Hrvatski jezik 0 * Login * Register Login Register EUR * United States Dollars (USD) * Euro (EUR) * United Kingdom Pounds (GBP) * Canadian Dollars (CAD) * Afghan Afghani (AFN) * Albanian Lek (ALL) * Algerian Dinar (DZD) * Angolan Kwanza (AOA) * Argentine Pesos (ARS) * Armenian Dram (AMD) * Aruban Florin (AWG) * Australian Dollars (AUD) * Barbadian Dollar (BBD) * Azerbaijani Manat (AZN) * Bangladesh Taka (BDT) * Bahamian Dollar (BSD) * Bahraini Dinar (BHD) * Belarusian Ruble (BYN) * Belize Dollar (BZD) * Bhutanese Ngultrum (BTN) * Bosnia and Herzegovina Convertible Mark (BAM) * Brazilian Real (BRL) * Bolivian Boliviano (BOB) * Botswana Pula (BWP) * Brunei Dollar (BND) * Bulgarian Lev (BGN) * Burmese Kyat (MMK) * Cambodian Riel (KHR) * Cape Verdean escudo (CVE) * Cayman Dollars (KYD) * Central African CFA Franc (XAF) * Chilean Peso (CLP) * Chinese Yuan Renminbi (CNY) * Colombian Peso (COP) * Comorian Franc (KMF) * Congolese franc (CDF) * Costa Rican Colones (CRC) * Croatian Kuna (HRK) * Czech Koruny (CZK) * Danish Kroner (DKK) * Dominican Peso (DOP) * East Caribbean Dollar (XCD) * Egyptian Pound (EGP) * Ethiopian Birr (ETB) * CFP Franc (XPF) * Fijian Dollars (FJD) * Gambian Dalasi (GMD) * Ghanaian Cedi (GHS) * Guatemalan Quetzal (GTQ) * Guyanese Dollar (GYD) * Georgian Lari (GEL) * Haitian Gourde (HTG) * Honduran Lempira (HNL) * Hong Kong Dollars (HKD) * Hungarian Forint (HUF) * Icelandic Kronur (ISK) * Indian Rupees (INR) * Indonesian Rupiah (IDR) * Israeli New Shekel (NIS) * Jamaican Dollars (JMD) * Japanese Yen (JPY) * Jersey Pound (JEP) * Jordanian Dinar (JOD) * Kazakhstani Tenge (KZT) * Kenyan Shilling (KES) * Kuwaiti Dinar (KWD) * Kyrgyzstani Som (KGS) * Laotian Kip (LAK) * Latvian Lati (LVL) * Lebanese Pounds (LBP) * Lesotho Loti (LSL) * Liberian Dollar (LRD) * Malagasy Ariary (MGA) * Macedonia Denar (MKD) * Macanese Pataca (MOP) * Malawian Kwacha (MWK) * Maldivian Rufiyaa (MVR) * Mexican Pesos (MXN) * Malaysian Ringgits (MYR) * Mauritian Rupee (MUR) * Moldovan Leu (MDL) * Moroccan Dirham (MAD) * Mongolian Tugrik (MNT) * Mozambican Metical (MZN) * Namibian Dollar (NAD) * Nepalese Rupee (NPR) * Netherlands Antillean Guilder (ANG) * New Zealand Dollars (NZD) * Nicaraguan Córdoba (NIO) * Nigerian Naira (NGN) * Norwegian Kroner (NOK) * Omani Rial (OMR) * Pakistani Rupee (PKR) * Papua New Guinean Kina (PGK) * Paraguayan Guarani (PYG) * Peruvian Nuevo Sol (PEN) * Philippine Peso (PHP) * Polish Zlotych (PLN) * Qatari Rial (QAR) * Romanian Lei (RON) * Russian Rubles (RUB) * Rwandan Franc (RWF) * Samoan Tala (WST) * Saudi Riyal (SAR) * Sao Tome And Principe Dobra (STD) * Serbian dinar (RSD) * Seychellois Rupee (SCR) * Singapore Dollars (SGD) * Sudanese Pound (SDG) * Syrian Pound (SYP) * South African Rand (ZAR) * South Korean Won (KRW) * South Sudanese Pound (SSP) * Solomon Islands Dollar (SBD) * Sri Lankan Rupees (LKR) * Surinamese Dollar (SRD) * Swazi Lilangeni (SZL) * Swedish Kronor (SEK) * Swiss Francs (CHF) * Taiwan Dollars (TWD) * Thai baht (THB) * Tanzanian Shilling (TZS) * Trinidad and Tobago Dollars (TTD) * Tunisian Dinar (TND) * Turkish Lira (TRY) * Turkmenistani Manat (TMT) * Ugandan Shilling (UGX) * Ukrainian Hryvnia (UAH) * United Arab Emirates Dirham (AED) * Uruguayan Pesos (UYU) * Uzbekistan som (UZS) * Vanuatu Vatu (VUV) * Venezuelan Bolivares (VEF) * Vietnamese đồng (VND) * West African CFA franc (XOF) * Yemeni Rial (YER) * Zambian Kwacha (ZMW) * Saint Helena pound * Burundian franc * Bermudian dollar * Cuban peso * Djiboutian franc * Eritrean nakfa * Guinean franc * North Korean won * Sierra Leonean leone * Somali shilling * Tajikistani somoni * Tongan paʻanga * Falkland Islands pound Bahasa Indonesia,English,한국어,简体中文,日本語,Português,العربية,Русский,Español,繁體中文,Français,ไทย,Italiano,Deutsch,Polski,Nederlands,Bahasa Melayu,svenska,norsk,čeština,Lietuvis,Latvietis,Suomalainen,Ελληνικά,Eestlane,dansk,Magyar,Romanian,Slovenščina,Український,Slovenská,Български,Tiếng Việt,Türkçe,Hrvatski jezik FUN BALL Free Shipping All Over The World Popular Team Featured Products Quick View 50% OFF 2023/2024 Arsenal Training Wear Black Soccer Jerlacksey €16.37 €32.83 Quick View 50% OFF 2023/2024 Leicester City Home Soccer Jersey €16.37 €32.83 Quick View 50% OFF 2023/2024 Manchester City Goalkeeper Green Football Shirt 1:1 Thai Quality €16.37 €32.83 Quick View 50% OFF 2023/2024 Manchester City Goalkeeper Purple Football Shirt 1:1 Thai Quality €16.37 €32.83 Quick View 50% OFF 2023/2024 Benfica Home Football Shirt €16.37 €32.83 Quick View 52% OFF 2023/2024 Player Version Liverpool Away Football Shirt 1:1 Thai Quality €20.94 €43.81 Quick View 50% OFF 2023/2024 Liverpool Goalkeeper Black Soccer Jersey 1:1 Thai Quality €16.37 €32.83 Quick View 52% OFF 2023/2024 Player Version Manchester City Home Football Shirt 1:1 Thai Quality €20.94 €43.81 Quick View 50% OFF 2023/2024 Manchester United Home Soccer Jersey 1:1 Thai Quality €16.37 €32.83 Quick View 50% OFF 2022/2023 Manchester United Special Edition Soccer Jersey 1:1 Thai Quality €16.37 €32.83 Quick View 50% OFF 2023/2024 Arsenal Third Away Soccer Jersey €16.37 €32.83 Quick View 50% OFF 2023/2024 Juventus Home Soccer Jersey 1:1 Thai Quality €16.37 €32.83 View all 2023-2024 Season Quick View 50% OFF 2023/2024 São Paulo Home Jersey 1:1 Thai Quality €16.37 €32.83 Quick View 50% OFF 2023/2024 Boca Juniors Third Away Football Jersey 1:1 Thai Quality €16.37 €32.83 Quick View 52% OFF 2023/2024 Player Version Barcelona Home 1:1 Thai Quality €20.94 €43.81 Quick View 52% OFF 2023/2024 Player Version Atletico Madrid Away 1:1 Thai Quality €20.94 €43.81 Quick View 50% OFF 2023/2024 Tottenham Goalkeeper Blue Football Shirt €16.37 €32.83 Quick View 50% OFF 2023/2024 Arsenal Home Soccer Jersey Kids Size €16.37 €32.83 Quick View 50% OFF 2023/2024 Lyon Training Wear Pink Football Shirt €16.37 €32.83 Quick View 50% OFF 2023/2024 Barcelona Training Wear Color Jersey €16.37 €32.83 View all Training Suit Quick View 49% OFF 2022/2023 Feyenoord Rotterdam Half-Pull Training Suit Black Football Shirt 1:1 Thai Quality €36.49 €71.34 Quick View 49% OFF 2022 France Half-Pull Training Suit Royal Blue Football Shirt €36.49 €71.34 Quick View 49% OFF 2023 Italy Half-Pull Training Suit Off-White Soccer Shirt €36.49 €71.34 Quick View 49% OFF 2022/2023 Ajax Half-Pull Training Suit Dark Blue Football Shirt 1:1 Thai Quality €36.49 €71.34 Quick View 49% OFF 2022/2023 Arsenal Half-Pull Training Suit Royal Blue Football Shirt 1:1 Thai Quality €36.49 €71.34 Quick View 49% OFF 2022/2023 Bayern Munich Half-Pull Training Suit Black Football Shirt 1:1 Thai Quality €36.49 €71.34 Quick View 49% OFF 2022 Argentina Half-Pull Training Suit Royal Blue Jersey €36.49 €71.34 Quick View 49% OFF 2022/2023 Psg Paris Saint-Germain Half-Pull Training Suit Black Gold €36.49 €71.34 View all Windbreaker Quick View 52% OFF 2022 Liverpool Windbreaker White €45.64 €96.04 Quick View 52% OFF 2021/2022 Liverpool Windbreaker Black-Grey Plaid Soccer Jersey 1:1 Thai Quality €45.64 €96.04 Quick View 52% OFF 2021 Windbreaker Psg Paris Saint-Germain Black €45.64 €96.04 Quick View 52% OFF 2021/2022 Manchester United Jersey Windbreaker Black And Grey Camouflage €45.64 €96.04 Quick View 52% OFF 2021 Windbreaker Psg Paris Saint-Germain Black-Blue-Purple €45.64 €96.04 Quick View 52% OFF 2021/2022 Windbreaker Football Jersey AC Milan Red 1:1 Thai Quality €45.64 €96.04 Quick View 52% OFF 2021/2022 Liverpool Windbreaker (White-Black-Red) Soccer Jersey 1:1 Thai Quality €45.64 €96.04 Quick View 52% OFF 2021/2022 Manchester United Jersey Windbreaker Black-White Stripes €45.64 €96.04 View all Sign up for our newsletter Thanks for Subscribing! We will send news to your email. ${function(){ const rules = data.data.rules; return ` ` }()} You May Also Like * 2023/2024 Barcelona Special Edition Black Football Shirt 1:1 Thai Quality Quick Shop * 2023 Japan Tokyo Special Edition Red Football Jersey Quick Shop * 2023 Italy Special Edition Black Soccer Shirt Quick Shop * 2023/2024 Barcelona Special Edition Football Shirt 1:1 Thai Quality Quick Shop * 2023/2024 Player Version Bayern Munich Home Football Jersey 1:1 Thai Quality Quick Shop * 2021/2022 Psg Paris Saint-Germain Half-Pull Training Suit White Quick Shop * 2023/2024 Player Version Arsenal Home Football Shirt 1:1 Thai Quality Quick Shop * 2023/2024 Arsenal Fourth Away Soccer Jersey Quick Shop * 2022/2023 Arsenal Soccer Jersey Away Quick Shop * 2023/2024 Psg Paris Saint-Germain Training Wear Colorful Quick Shop * 2023 Dortmund Blackout Special Edition Football Shirt Quick Shop * 2023/2024 Kids Size Manchester City Away Football Shirt 1:1 Thai Quality Quick Shop * 2023/2024 Manchester United Away Soccer Jersey 1:1 Thai Quality Quick Shop * 1998/1999 Retro Manchester United Home Football Shirt 1:1 Thai Quality Quick Shop * 2023/2024 AC Milan Third Away Soccer Jersey 1:1 Thai Quality Quick Shop * 2023/2024 Dortmund Blackout Special Edition White Football Shirt Quick Shop * 2023/2024 Bayern Munich Home Football Jersey 1:1 Thai Quality Quick Shop * 2022/2023 Bayern Munich Half-Pull Training Suit Black Football Shirt 1:1 Thai Quality Quick Shop * 2023/2024 Dortmund Home Football Shirt Quick Shop * 2014/2015 Retro Barcelona Football Shirt Home 1:1 Thai Quality Quick Shop * 2023/2024 Manchester City Special Edition Black Football Shirt 1:1 Thai Quality Quick Shop * 2023/2024 Football Shirt Psg Paris Saint-Germain Home Quick Shop * 2023/2024 Manchester City Away Football Shirt 1:1 Thai Quality Quick Shop * 1998/1999 Retro AC Milan Home Football Shirt 1:1 Thai Quality Quick Shop * 2006/2007 Retro AC Milan Away Football Shirt 1:1 Thai Quality Quick Shop * 2023/2024 AC Milan Home Soccer Jersey 1:1 Thai Quality Quick Shop * 1992/1994 Retro Manchester United Third Away Football Shirt 1:1 Thai Quality Quick Shop * 2023/2024 Manchester United Home Soccer Jersey 1:1 Thai Quality Quick Shop * 2023/2024 Real Madrid Chinese Dragon Black Football Shirt Quick Shop * 2023/2024 Player Version Liverpool Away Football Shirt 1:1 Thai Quality Quick Shop * 2006/2007 Retro AC Milan Home Football Shirt 1:1 Thai Quality Quick Shop * 2021/2022 Football Shirt Psg Paris Saint-Germain Home Quick Shop * 2023/2024 Player Version Barcelona Home 1:1 Thai Quality Quick Shop * 2023/2024 Arsenal Home Soccer Jersey Quick Shop * 2023/2024 Kids Size Manchester United Home Football Shirt 1:1 Thai Quality Quick Shop * 1997/1999 Retro Bayern Munich Home Football Jersey 1:1 Thai Quality Quick Shop * 2023/2024 Kids Size Al-Nassr Home Football Shirt Quick Shop * 2023/2024 Manchester City Home Football Shirt 1:1 Thai Quality Quick Shop * 2022 FIFA World Cup Argentina National Team Jersey Away Quick Shop * 2022 FIFA World Cup Player Version Argentina National Team Home Jersey Quick Shop * 2007-2008 Retro Long Sleeve Manchester United Home Football Shirt 1:1 Thai Quality Quick Shop * 2023/2024 Olympique de Marseille Fourth Away 30th Anniversary Edition White Football Jersey Quick Shop * 2022 Brazil Concept Edition Jersey Black Quick Shop * 2023/2024 Kids Size Barcelona Third Away Football Shirt 1:1 Thai Quality Quick Shop * 2023/2024 Bayern Munich Half-Pull Training Suit Black Football Shirt 1:1 Thai Quality Quick Shop * 2023/2024 Bayern Munich Oktoberfes Football Jersey 1:1 Thai Quality Quick Shop * For Printing Badges And Adding Custom Information Quick Shop * 2023/2024 Barcelona Half-Pull Training Suit color Jersey Quick Shop * 2023/2024 Chelsea Football Jersey Home Quick Shop * 2023/2024 Player Version Psg Paris Saint-Germain Home Quick Shop * 2023/2024 AFC Richmond Home Soccer Jersey Quick Shop * 2023/2024 Chelsea Home Football Jersey 1:1 Quality Thai Quick Shop * 2002 Retro Brazil Soccer Jersey Home Quick Shop * 1995/1996 Retro Juventus Away Soccer Jersey 1:1 Thai Quality Quick Shop * 2023 Lazio 10th Anniversary Edition Black Soccer Jersey 1:1 Thai Quality Quick Shop * 2023/2024 Player Version Manchester United Special Edition Football Shirt 1:1 Thai Quality Quick Shop * 1992/1994 Retro Tottenham Home Football Shirt 1:1 Thai Quality Quick Shop * 2022 Brazil Special Edition Black Soccer Jersey Quick Shop * 2008/2009 Retro Barcelona Football Shirt Home Champions League 1:1 Thai Quality Quick Shop * 2023/2024 Bayern Munich Away Football Jersey 1:1 Thai Quality Quick Shop * 2023/2024 Chelsea Football Jersey Away Quick Shop * 2022 FIFA World Cup Portugal Home Football Shirt Kids Size Quick Shop * 2023/2024 Tottenham Home Football Shirt Quick Shop * 2023/2024 Arsenal Third Away Soccer Jersey Quick Shop * 1996/1997 Retro Barcelona Away Football Shirt 1:1 Thai Quality Quick Shop * 2023/2024 Kids Size Chelsea Third Away Football Jersey Quick Shop * 2023/2024 Celtic Away Football Shirt 1:1 Thai Quality Quick Shop * 2018/2019 Retro Psg Paris Saint-Germain Black Soccer Jersey Quick Shop * 2017/2018 Retro Kids Size Real Madrid Third Away Football Shirt Quick Shop * 2023/2024 Barcelona Home Football Shirt 1:1 Thai Quality Quick Shop * 1997/1998 Retro Juventus Away Soccer Jersey 1:1 Thai Quality Quick Shop * 2021 Japan Football Jersey Anime Version Quick Shop * 2022 Italy Commemorative Edition Blue Soccer Shirt Quick Shop * 1990/1992 Retro Manchester United Home Football Shirt 1:1 Thai Quality Quick Shop * 2023/2024 Tottenham Away Football Shirt Quick Shop * 2023/2024 Manchester City Edisi Khusus Kaos Sepak Bola 1:1 Kualitas Thailand Quick Shop * 1998 Retro France Home Football Shirt Quick Shop * 2007/2008 Retro Manchester United Third Away Football Shirt 1:1 Thai Quality Quick Shop * 2023/2024 Liverpool Third Away Soccer Jersey 1:1 Thai Quality Quick Shop * 2023/2024 Arsenal Away Soccer Jersey Quick Shop * 2023/2024 Arsenal Home Soccer Jersey Kids Size Quick Shop * 2023/2024 Crystal Palace Home Football Shirt 1:1 Thai Quality Quick Shop * 2023/2024 Liverpool Away Soccer Jersey 1:1 Thai Quality Quick Shop * 2007/2008 Retro Manchester United Home Champions League Edition Football Shirt 1:1 Thai Quality Quick Shop * 2023/2024 Player Version Manchester United Special Black Football Shirt 1:1 Thai Quality Quick Shop * 2005/2006 Retro Arsenal Home Football Shirt 1:1 Thai Quality Quick Shop * 2002/2004 Retro Arsenal Home Football Shirt 1:1 Thai Quality Quick Shop * 2022 FIFA World Cup France Home Football Shirt Quick Shop * 1998 Retro Brazil Soccer Jersey Home Quick Shop * 2023/2024 Benfica Third Away Football Shirt Quick Shop * 2023/2024 Barcelona Training Wear Red White Blue Jersey Quick Shop * 2023/2024 Player Version Roma Legacy Home Soccer Jersey 1:1 Thai Quality Quick Shop * 2023/2024 Real Madrid Home Football Shirt Quick Shop * 1997/1998 Retro Internazionale Milan Home Football Jersey 1:1 Thai Quality Quick Shop * 2009/2010 Retro Internazionale Milan Home UEFA Champions League Edition Football Jersey 1:1 Thai Quality Quick Shop * 2018/2019 Tottenham Third Away Football Shirt 1:1 Thai Quality Quick Shop * 2022 FIFA World Cup Morocco National Team Away Shirt Quick Shop * 1990 Retro Soccer Jersey Germany Home Quick Shop * 2005/2006 Retro Barcelona Home Football Shirt UEFA Champions League 1:1 Thai Quality Quick Shop * 2023/2024 Player Version Chelsea Home Football Shirt 1:1 Thai Quality Quick Shop ${function(){ const isCart = data.data.isCart; const isCollection = data.data.isCollection; const isProduct = data.data.isProduct; const isIndex = data.data.isIndex; return ` ${isCart ? 'The items in the shopping cart do not participate in any recommendation rule. Add the participating items to your shopping cart to check the design.' : ''} ${isProduct ? 'This product did not participated in any recommendation rule. Switch to another product to check the design.' : ''} ${isCollection ? 'The items in this collection do not participate in any recommendation rule. Switch the participating items to check the design.' : ''} ${isIndex ? 'The home page do not participate in any recommendation rule.' : ''} (This prompt would not display on client-side) Recommended Products ` }()} ${function(){ const rule = data.data; const getImageHeight = function(image){ const image_size = rule.config.image_size || 0; const imageWidth = image.width || 600; const imageHeight = image.height || 800; let ratio = 0; if(image_size == 0){ ratio = (imageHeight / imageWidth).toFixed(2); }else if(image_size == 1){ ratio = 1.5; }else if(image_size == 2){ ratio = 1; }else if(image_size == 3){ ratio = 0.75; } return imageWidth * ratio; }; const toQuery = obj => Object.keys(obj) .map(k => Array.isArray(obj[k]) ? obj[k].map(v => `${k}[]=${encodeURIComponent(v)}`).join('&') : `${k}=${encodeURIComponent(obj[k])}` ) .join('&'); return ` ${rule.config.title} * ${product.title} ${rule.config.quick_shop_button_text} ` }()} 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('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); ${(function(){ const product = data.product; const toQuery = obj => Object.keys(obj) .map(k => Array.isArray(obj[k]) ? obj[k].map(v => `${k}[]=${encodeURIComponent(v)}`).join('&') : `${k}=${encodeURIComponent(obj[k])}` ) .join('&'); return ` ${product.images.map((image) => { return `` }).join('')} ${product.title} See detail Quantity Add To Cart Buy Now `; })()} ${(function(){ const product = data.product; const avail_variants = product.variants.filter(function(variant){ return variant.available; }); const selected_variant = product.min_price_variant.available ? product.min_price_variant : avail_variants.length && avail_variants[0]; return ` ${option.name} ${ option.values.map(function(value, index){ const checked = selected_variant["option"+option.position] == value ? "checked": ""; return ` ${value} ` }).join("") } ` })()} FOLLOW US HELP & SUPPORT F.A.Q Receiving time Refund and Returns Policy Security and Safe Shopping Terms Of Service Contact Us Tracking Order Funfootballdream.comprovides the best shopping experience for football lovers * * * © 2024 Funfootballdream 111 GIFTS POINTS Item has been added ${(function(){ const products = data.products; const getDefaultVariant = function(product){ if (product.min_price_variant.available){ return product.min_price_variant; }else { const avail_variants = product.variants.filter(function(variant){ return variant.available; }); if (avail_variants.length) { return avail_variants[0]; } } }; const toQuery = obj => Object.keys(obj) .map(k => Array.isArray(obj[k]) ? obj[k].map(v => `${k}[]=${encodeURIComponent(v)}`).join('&') : `${k}=${encodeURIComponent(obj[k])}` ) .join('&'); const getDefaultTrackParams = function(product, index){ const variant = getDefaultVariant(product); const params = { aid: 'smart_recommend.2.' + data.id, scm: product.scm || data.scm || '', spm: data.spmBase + '.' + index, ssp: data.ssp || '', }; const trackParams = Object.keys(params).map(function(key){ return params[key]; }).join('__'); return trackParams; }; const hasMore = (data.products.length - data.target_top_product_num - data.page * data.limit) === 0; return ` ${(function(){ return ` ${data.config.pop_title} ${data.rebate_tips || ''} `; })()} ${product.title} Added `; })()} class SpzCustomComponent extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.container_ = null; this._atcLineItem = {}; this.cart_ = {}; this.top_product_ids_ = []; this.products_ = []; this.activityId_ = null; this.rendered_ = false; this.myInterceptor_ = null; this.i18n_ = {}; this.config_ = {}; this.page_ = 1; this.limit_ = 10; this.loading_ = false; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.templates_ = SPZServices.templatesForDoc(this.element); this.setAction_(); } mountCallback() { console.log('pop mounted'); this.i18n_ = window.smartRecommendI18n && window.smartRecommendI18n[document.documentElement.lang || 'en-US'] || {}; const cartPopRenderEl = document.getElementById("smart_cart_pop_render"); const modalEl = document.getElementById("smart_cart_pop_modal"); const spmBase = `smart_recommend_2`; const extra = { spmBase: spmBase, i18n: this.i18n_, }; const that = this; document.addEventListener('dj.addToCart', (event) => { try { const e = event.detail; if (e.source === 'buy_now' || window.__upsell_block || this.rendered_) return; that.fetchActivityData({product_id: e.product_id, variant_id: e.variant_id}).then(data => { if (!data || !data.products || !data.products.length) return; that.config_ = data.config; const recommendStyle = document.createElement('style'); recommendStyle.innerHTML = ` #plugin_recommend_atc_pop { display: none !important; } `; document.head.appendChild(recommendStyle); if (data.config.pop_frequency === 'once' && window.sessionStorage.getItem('smart_pop_times') > 0) return; SPZ.whenApiDefined(cartPopRenderEl).then(function(api){ api.render(Object.assign({}, data, extra), true).then(function() { that.rendered_ = true; if (data.products.length) { const headEl = document.getElementById("smart_cart_pop_head_render"); if (headEl) { SPZ.whenApiDefined(headEl).then(function(head){ head.render({ data: data }); }); } SPZ.whenApiDefined(modalEl).then(function(api){ that.impressListen('#smart_cart_pop_activity', function(){ that.trackPluginImpression_(data); }); api.open(); const intersectionObserver = new IntersectionObserver( function (entries) { if (entries[0].intersectionRatio > 0){ !that.loading_ && (that.products_.length - that.target_top_product_num_) === that.page_ * that.limit_ && that.viewMore(); } }, { threshold: [0.1] } ); intersectionObserver.observe( document.querySelector('#smart_cart_pop_view_more_text') ); }); } }) }); }) } catch (e) { console.error(e); } }); } unmountCallback() { } viewMore () { const cartPopRenderEl = document.getElementById("smart_cart_pop_render"); const that = this; const data = {}; SPZ.whenApiDefined(cartPopRenderEl).then(function(api){ that.fetchActivityData({ page: that.page_ + 1, limit: that.limit_ }).then(function(data) { data.products = that.products_; data.target_top_product_num = that.target_top_product_num_; data.i18n = that.i18n_; data.spmBase = `smart_recommend_2`; api.render(data); }) }) } fetchActivityData(data) { const that = this; if (data.product_id) { that._atcLineItem = data; } that.loading_ = true; return that.getCart().then(cart => { that.cart_ = cart.cart; return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_activities", { method: "POST", headers: { "Content-Type": "application/json", "store-id": window.SHOPLAZZA.shop.shop_id, }, body: JSON.stringify({ "show_type": 2, "line_item": { "product_id": that._atcLineItem.product_id, "variant_id": that._atcLineItem.variant_id, }, line_items: cart.cart.line_items, "page": data.page || 1, "limit": data.limit || 10, }) }).then(function(res){ if(res.ok){ return res.json(); } }).then(function(data){ data.cart = cart.cart; if (data.page === 1) { that.target_top_product_num_ = data.target_top_product_num || 0; } that.products_ = that.products_.concat(data.products || []); that.page_ = data.page || 1; that.limit_ = data.limit || 10; return data; }).catch(function(e){ console.log(e); }).finally(function(){ that.loading_ = false; }) }); }; setAction_() { this.registerAction('changeBannerColor', (data) => { if (!data.args.data || !data.args.data.data || !data.args.data.data.data) return false; const config = data.args.data.data.data.config; const bannerBgEl = document.querySelector('.smart_cart_pop_banner_bg'); if (bannerBgEl && config) { bannerBgEl.style.background = config.banner_bg_color; bannerBgEl.style.color = config.banner_text_color; } }); this.registerAction('handleProductChange', (data) => { const that = this; const imageEl = document.getElementById(`smart_cart_pop_image_${data.args.data.product_id}`); SPZ.whenApiDefined(imageEl).then(function(api){ api.render({ data: data.args.data, config: that.config_ }); }); const atcTextEl = document.getElementById(`smart_cart_pop_atc_${data.args.data.product_id}`); SPZ.whenApiDefined(atcTextEl).then(function(api){ api.render({ data: data.args.data, defaultText: data.args.defaultText, soldOutText: that.i18n_.sold_out }); }); if (data.args.data.variant.available) { document.getElementById(`smart_cart_pop_atc_btn_${data.args.data.product_id}`).classList.remove('zb-pointer-events-none'); } else { document.getElementById(`smart_cart_pop_atc_btn_${data.args.data.product_id}`).classList.add('zb-pointer-events-none'); } }); this.registerAction('handleProduct', (detail) => { const that = this; this.renderProductsForm_(detail.args.data.data); }); this.registerAction('addATCHook', (data) => { const params = data.args; this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({ event: 'dj.addToCart', params: { aid: 'smart_recommend.2.' + params.activity_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${params.spm}`, }, once: true }); }); this.registerAction('handleAtcSuccess', (detail) => { detail.args.data.product = detail.args.data.product || {}; detail.args.data.variant = detail.args.data.variant || {}; const defParams = detail.args.product.split('__'); const product_id = detail.args.data.product.id; const product_title = detail.args.data.product.title; const variant_id = detail.args.data.variant.id; const price = detail.args.data.variant.price; const aid = defParams[0]; const ifb = detail.args.data.product.ifb; const cfb = detail.args.data.product.cfb; const scm = defParams[1]; const spm = defParams[2]; const ssp = defParams[3]; 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, } }; const activity_id = `${detail.args.activity_id}`; const target_drive_way = detail.args.target_drive_way; document.getElementById(`smart_cart_pop_loading_${product_id}`).classList.add('zb-hidden'); document.getElementById(`smart_cart_pop_added_${product_id}`).classList.remove('zb-hidden'); setTimeout(() => { document.getElementById(`smart_cart_pop_added_${product_id}`).classList.add('zb-hidden'); document.getElementById(`smart_cart_pop_atc_${product_id}`).classList.remove('zb-hidden'); document.getElementById(`smart_cart_pop_atc_btn_${product_id}`).classList.remove('zb-pointer-events-none'); }, 1000); this.tranckAddToCart(params); if (target_drive_way === 'rebate') { const bannerEl = document.getElementById(`smart_cart_pop_banner`); this.getRecommendInfo(activity_id).then(res => { if (res && res.rebate_tips) { bannerEl.innerHTML = res.rebate_tips; } }) } }); this.registerAction('handleCartSummary', (event) => { const that = this; const checkoutButtonEle = document.getElementById("smart_cart_pop_checkout_button"); if (checkoutButtonEle) { SPZ.whenApiDefined(checkoutButtonEle).then(function(api){ api.render({ i18n: that.i18n_ }, false); }); } const tipEl = document.getElementById("smart_cart_pop_tip_info"); const cart = event && event.args && event.args.data && event.args.data.data; if (!tipEl || !cart) return; let total_price = cart.total_price; if (!total_price) { SPZ.whenApiDefined(tipEl).then(function(api){ api.render({ total_price: total_price, i18n: that.i18n_ }, false); }); } else { this.getBindDiscount_(cart.line_items).then(res => { if (res && res.discount_code){ const total = cart.line_price - cart.total_discount - res.bundle_discount_value; if (total > 0) { total_price = total; } else { total_price = 0; } } SPZ.whenApiDefined(tipEl).then(function(api){ api.render({ total_price: total_price, i18n: that.i18n_ }, false); }); }) } }); this.registerAction('open', () => { window.sessionStorage.setItem('smart_pop_times', Number(window.sessionStorage.getItem('smart_pop_times')) + 1); }); this.registerAction('close', () => { this.rendered_ = false; this.products_ = []; window.djInterceptors && window.djInterceptors.track.eject(this.myInterceptor_); }); } getCart() { return fetch(`${window.SHOPLAZZA.routes.root || ''}/api/cart`, { method: 'GET', headers: { 'Content-Type': 'application/json; charset=UTF-8', }, }).then(res => res.json()) } getRecommendInfo (activity_id) { return this.getCart().then(cart => { this.cart_ = cart.cart; return fetch(`${window.SHOPLAZZA.routes.root || ''}/api/possum/recommend_info`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: JSON.stringify({ show_type: 2, rule_id: `${activity_id}`, line_items: cart.cart.line_items, line_item: this._atcLineItem, }) }).then(res => res.json()) }) } renderProductsForm_(data) { const products = data.products; const listPopRenderEl = document.getElementById("smart_cart_pop_render"); if (!listPopRenderEl) return; listPopRenderEl.querySelectorAll('.smart_cart_pop_atc_btn_bg').forEach(function(el){ el.style.background = data.config.add_to_cart_button_color; }); products.forEach(function(product){ const productId = product.id; const productFormEls = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"]`); let variantsEl = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"] #smart_cart_pop_variant_${productId}_mobile ljs-variants`); if (window.innerWidth > 768) { variantsEl = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"] #smart_cart_pop_variant_${productId}_pc ljs-variants`); } productFormEls.forEach(function(el){ SPZ.whenApiDefined(el).then(function(api){ api.setProduct(product); }); }); variantsEl.forEach(function(el){ SPZ.whenApiDefined(el).then(function(api){ api.handleRender(product); }); }) }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } trackPluginImpression_(rule){ if (window.sa && window.sa.track) { window.sa.track("module_impressions", { aid: `smart_recommend.2.${rule.id}` }); } } getBindDiscount_(carts) { let bundle_sale_ids = []; try { bundle_sale_ids = sessionStorage['bundle_sale_ids'] && JSON.parse(sessionStorage['bundle_sale_ids']).filter((item, index, arr) => arr.indexOf(item, 0) === index).slice(-5); } catch (err) { console.error(err); } if (!carts.length) { Promise.resolve(); } return fetch(`${window.SHOPLAZZA.routes.root || ''}/api/bundle-sales/cart`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', 'store-id': window.SHOPLAZZA.shop.shop_id, }, body: JSON.stringify({ cart: carts, action_type: 'cart', bundle_sale_ids }) }).then(res => res.json()) } 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', SpzCustomComponent); ${function(){ return ` ${data.data.rebate_tips || ''} `; }()} ${function(){ const getImageHeight = function(image){ const width = image.width || 500; const height = image.height || 500; const image_size = data.config.image_size || 0; let ratio = 0; if(image_size == 0){ ratio = (height / width).toFixed(2); }else if(image_size == 1){ ratio = 1.5; } return 132 * ratio; }; const image = data.data.variant.image || data.data.product.image; return ` `; }()} ${(function(){ const product = data.product; const avail_variants = product.variants.filter(function(variant){ return variant.available; }); const selected_variant = product.min_price_variant.available ? product.min_price_variant : avail_variants.length && avail_variants[0]; return ` ${option.name} ${ option.values.map(function(value, index){ const checked = selected_variant["option"+option.position] == value ? "checked": ""; return ` ${value} ` }).join("") } ` })()} ${(function(){ const variant = data.variant; return ` `; })()} ${(function(){ const variant = data.variant; return ` ${ variant.options.map(function(option){ return option.value; }).join("/") || 'Not exist' } `; })()} ${(function(){ const variant = data.data && data.data.variant; const defaultText = data.defaultText || 'Add To Cart'; const text = (!variant || variant.available) ? defaultText: data.soldOutText; return ` ${text} `; })()} ${(function(){ let cart = data; if(data.data) { cart = data.data; } return ` ${cart.item_count >=0 ? cart.item_count : '..'} `; })()} ${(function(){ return ` ${data.i18n.checkout} `; })()} Originaltext Diese Übersetzung bewerten Mit deinem Feedback können wir Google Übersetzer weiter verbessern