1<!DOCTYPE html> 2<html lang="zh-TW" style="height:100%;"> 3 <head> 4
4<script> 5 window.dataLayer = window.dataLayer || []; 6 </script>
6 7 8 <!-- CYBERBIZ Google Tag Manager --> 9
9<script>
vendor: 345 bytes, lines 9-13
9(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 10 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 11 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 12 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 13 })(window,document,'script','cyb','
13GTM-TXD9LVJ
vendor: 3 bytes, line 13
13');
13</script>
13 14 <!-- End CYBERBIZ Google Tag Manager --> 15 16 <meta charset="utf-8"> 17<meta http-equiv="X-UA-Compatible" content="IE=edge"> 18<meta name="viewport" content="width=device-width, initial-scale=1"> 19<link rel="icon" href="https://cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzEzMDY1OTMwX0xPR08uanBnLmpwZWciXV0.jpeg?convert=false&sha=3a6d167d435d3288"> 20<link rel="apple-touch-icon" href="https://cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzEzMDY1OTMwX0xPR08uanBnLmpwZWciXV0.jpeg?convert=false&sha=3a6d167d435d3288"> 21 22<meta property="og:site_name" content="æ®æ²æè£½" /> 23 24<!-- og tag --> 25 26 27<!-- og image --> 28 29 <meta property="og:image" content="https://cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L3Byb2R1Y3RzLzU3OTAzNzAyLzE3NTM1ODQ4OTlfZTdmMzY5MWY4YWE2MWM4NTk5NTYuanBlZyJdLFsicCIsInRodW1iIiwiNDgweDQ4MCJdXQ.jpeg?sha=723853b00b9af632" /> 30 31 32<title> 33 34 å層è´è¶é ¥ ï½ èèå£å³ æ®æ²æè£½ 35 36</title> 37 38 39
40<script src='//cdn1-next.cybassets.com/frontend/shop/useSettingsData-3a2e378145f8a165.js' type='text/javascript'></script>
40 41 42 43 44
44<script> 45 window.setSettingsData({"draggable_sections":{"404":[],"index":["_main_slider_custom","1720954860145_4","1763169693964_1","_index_8_blocks","1716098576837_1","_index_4_blogs","1713083305496_7","_index_4_blocks","_index_product_banner","1763169282747_1"],"product":["product_info","product_description","board_comments","related_products"],"collection":[],"category":[],"blog":[],"article":[],"cart":[],"contact":[],"express_delivery":[],"search":[],"combo_product":["combo_product_info","combo_product_desc","board_comments"]},"sections":{"navbar":{"type":"navbar","visible":true,"settings":{"navbar_image_logo_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzEzMDY1OTMwX0xPR08uanBnLmpwZWciXV0.jpeg?sha=3a6d167d435d3288","navbar_image_logo_tablet_url":"","navbar_image_logo_mobile_url":"","main_nav":"main-menu","slider_primary_linklist":"main-menu","slider_primary_linklist_set_open":true,"nav_show_three_dimension":true,"search_enabled":true,"display_only_index":true,"dict_header_banner_image_url":"","dict_header_banner_image_tablet_url":"","dict_header_banner_image_mobile_url":"","dict_header_banner_link":"","display_count_down":false,"navbar_display_style":"displayDefault","menu_display_style":"three_dimension_menu","header_banner_start":"","header_banner_end":"","timer_text_color":"#c39d6f","timer_bg_color":"#2b2b6e","link_menu_enabled":false,"link_menu":"undefined","display_banner_type":"imageBanner","header_banner_simple_text_size":"12","header_banner_simple_text_color":"#ffffff","header_banner_simple_bg":"#000000","logo_height":"","mobile_logo_position":"left"},"custom_name":"å°è¦½å"},"footer":{"type":"footer","visible":true,"settings":{"footer_link":"footer","display_facebook":true,"shop_facebook":"https://www.facebook.com/handmademooo/","display_instagram":true,"shop_instagram":"https://www.instagram.com/handmademooo/","display_line":false,"shop_line":"https://line.me/zh-hant/","display_youtube":false,"shop_youtube":"https://www.youtube.com/","footer_link_arrangement":"display_y"},"block_order":["default_link_list","default_contact_info"],"blocks":{"default_link_list":{"type":"link_list_setting","custom_name":"é¸å®","thumbnail":"list","draggable":true,"visible":true,"settings":{"dict_link_list_block_title":"éæ¼æ®æ²æè£½Moooï½ç¿é¼åéæéå ¬å¸","footer_link":"mooooæå¡"}},"default_contact_info":{"type":"contact_info_setting","custom_name":"è¯çµ¡è³è¨","thumbnail":"contactInfo","draggable":true,"visible":true,"settings":{"dict_contact_info_block_title":"è¯çµ¡è³è¨","display_phone":true,"dict_phone_number":"07-3503075","display_fax_number":false,"dict_shop_fax_number":"0222345678","display_shop_email":true,"dict_shop_email":"[email protected]","display_shop_address":true,"dict_shop_address":"813é«éå¸å·¦çåè¯å¤è·¯702è2æ¨","display_office_time":true,"dict_shop_office_time":"10:00-17:00"}}},"custom_name":"é è ³"},"_main_slider_custom":{"type":"_main_slider_custom","visible":true,"blocks":{"display_main_slider_item_1":{"type":"image","visible":true,"settings":{"dict_link":"/products/å·´æ¯å ä¹³é ªèç³-ï½basque-cheesecake","dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzE2MDk5Njk4X-i8quaSrS0xLmpwZy5qcGVnIl1d.jpeg?sha=803090d405d1d108","dict_tablet_image_url":"","dict_mobile_image_url":"","slide_contents_display":"left","slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","dict_slide_btn_link":""},"custom_name":"ç´ æ"},"display_main_slider_item_2":{"type":"image","visible":true,"settings":{"dict_link":"/products/ç¶å ¸å層è´è¶é ¥","dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzE0MTk4MTAxX-i8quaSrS0zLmpwZy5qcGVnIl1d.jpeg?sha=33576980f29cece7","dict_tablet_image_url":"","dict_mobile_image_url":"","slide_contents_display":"left","slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","dict_slide_btn_link":""},"custom_name":"ç´ æ"},"display_main_slider_item_3":{"type":"image","visible":true,"settings":{"dict_link":"/collections/è²»åéªç³»å","dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzIwOTQ2NjE5X-i8quaSrS0yLmpwZy5qcGVnIl1d.jpeg?sha=39913f3c660b58b7","dict_tablet_image_url":"","dict_mobile_image_url":"","slide_contents_display":"left","slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","dict_slide_btn_link":""},"custom_name":"ç´ æ"},"display_main_slider_item_4":{"type":"image","visible":true,"settings":{"dict_link":"/collections/çä¹³æ²ç³»å","dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzE2MDk2OTY4X-i8quaSrS00LmpwZy5qcGVnIl1d.jpeg?sha=78b65fc974
4569f460","dict_tablet_image_url":"","dict_mobile_image_url":"","slide_contents_display":"left","slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","dict_slide_btn_link":""},"custom_name":"ç´ æ"},"display_main_slider_item_5":{"type":"image","visible":false,"settings":{"dict_link":"","dict_image_url":"","dict_tablet_image_url":"","dict_mobile_image_url":""},"custom_name":"ç´ æ"},"1733710639547_0":{"type":"image","custom_name":"ç´ æ","visible":false,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzMzNzExMDQ4X-acqOacqOmAseW5tOaFti3ntrLnq5kyLmpwZy5qcGVnIl1d.jpeg?sha=d3e1212b5c089b4a","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/products/å·´æ¯å
èç³è²·å¤§éå°-é±å¹´æ
¶æ´»åéå®","slide_contents_display":"left","slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","dict_slide_btn_link":""}},"1753498361956_0":{"type":"image","custom_name":"ç´ æ","visible":false,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzUzNTAwNjA2X-S4reeni-evgOmmlumggS5qcGcuanBlZyJdXQ.jpeg?sha=705cf0b81db21fbd","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/ä¸ç§éå®","slide_contents_display":"left","dict_slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","link_open_in_new_tab":true}},"1754800860147_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzU0ODAwODc0X-i8quaSrS01LmpwZy5qcGVnIl1d.jpeg?sha=db0debae5887c593","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/products/ç«èçæ è²»åéª-禮ç","slide_contents_display":"left","dict_slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}},"1754801824685_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzYzMjU0NTQyX-i8quaSrS02LmpwZy5qcGVnIl1d.jpeg?sha=3c59e21fda7b87d3","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","slide_contents_display":"left","dict_slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}},"1754802830293_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzU0ODAyODYwX-i8quaSrS03LmpwZy5qcGVnIl1d.jpeg?sha=fb311d78de755334","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","slide_contents_display":"left","dict_slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}},"1754803269549_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzU0ODAzNDgxX-i8quaSrS04LmpwZy5qcGVnIl1d.jpeg?sha=41ef980398601887","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","slide_contents_display":"left","dict_slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}},"1754803911989_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzU0ODAzOTI1X-i8quaSrS05LmpwZy5qcGVnIl1d.jpeg?sha=491eb5d9e6ba61ca","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","slide_contents_display":"left","dict_slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}},"1754805486941_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzU0ODA1NDk3X-i8quaSrS0xMC5qcGcuanBlZyJdXQ.jpeg?sha=a8c3c7ab62bb6f42","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","slide_contents_display":"left","dict_slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}},"1762940303309_0":{"type":"image","custom_name":"ç´ æ","visible":false,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzYzMTY5MTE3X-aWsOWTgeS4iuW4gua0u-WLlS5qcGcuanBlZyJdXQ.jpeg?sha=6b939652dc76459b","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","slide_contents_display":"left","dict_slide_btn_link":"/collections/å·´æ¯å
ä¹³é
ªèç³æ°åä¸å¸æ´»å","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}},"1764657269495_0":{"type":"image","custom_name":"ç´ æ","visible":false,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzY0NjU3NDIwXzLlkajlubQtMi5qcGcuanBlZyJdXQ.jpeg?sha=4c499b9a44b0084e","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","slide_contents_display":"left","dict_slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}},"1764657476235_0":{"type":"image","custom_name":"ç´ æ","visible":false,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzY5NTU4MjI1X-aYpeevgC5qcGcuanBlZyJdXQ.jpeg?sha=aa34e0ea66db3b4f","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","slide_contents_display":"left","dict_slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}}},"block_order":["1754802830293_0","1754801824685_0","1754800860147_0","1754803911989_0","1754803269549_0","1754805486941_0","display_main_slider_item_1","display_main_slider_item_2","display_main_slider_item_3","display_main_slider_item_4","1764657476235_0","1764657269495_0","1733710639547_0","1762940303309_0"],"settings":{"swiper_delay":"3","margin_x":"0","margin_bottom":"50","image_number":"1","image_space":"12","mobile_margin_x":"0","mobile_margin_bottom":"50","mobile_image_number":"1","mobile_image_space":"8","transition_speed":"0.3"},"custom_name":"輪æç´ æ"},"_index_product_banner":{"type":"_index_product_banner","visible":true,"settings":{"dict_link":"","dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzE2NzI0MTAxX-ipkOmomeizh-ioii5qcGcuanBlZyJdXQ.jpeg?sha=cb54be302346ab6d","dict_tablet_image_url":"","dict_mobile_image_url":"","cta_btn_display_style":"topPosition","cta_btn_bg_color":"#000000","cta_btn_text_color":"#ffffff","margin_x":"50","margin_bottom":"0","mobile_margin_x":"0","mobile_margin_bottom":"24"},"custom_name":"æ©«å¹
廣å"},"_index_8_blocks":{"type":"_index_8_blocks","visible":true,"settings":{"dict_title":"åºé·æ¨è¦","collection_handle":"frontpage","limit":"12","product_arrangement":"2","margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"24","product_display":"displayPartial","product_alignment":"midPosition","product_text_align":"center","product_column_for_pc":"4","product_column_for_mobile":"2","product_card_hover_effect":"button"},"custom_name":"åååé¡"},"_index_4_blogs":{"type":"_index_4_blogs","visible":false,"blocks":{"index_4_blogs_1":{"type":"blog","visible":true,"settings":{"blog_handle":"news"},"custom_name":"é¨è½æ ¼"},"index_4_blogs_2":{"type":"blog","visible":true,"settings":{"blog_handle":"news"},"custom_name":"é¨è½æ ¼"},"index_4_blogs_3":{"type":"blog","visible":true,"settings":{"blog_handle":"news"},"custom_name":"é¨è½æ ¼"},"index_4_blogs_4":{"type":"blog","visible":true,"settings":{"blog_handle":"news"},"custom_name":"é¨è½æ ¼"}},"block_order":["index_4_blogs_1","index_4_blogs_2","index_4_blogs_3","index_4_blogs_4"],"settings":{"dict_title":"æ´å¤è³è¨","margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"50","article_c
45olumns":"4"},"custom_name":"åé é 籤"},"_index_4_blocks":{"type":"_index_4_blocks","visible":true,"blocks":{"display_index_4_block_1":{"type":"image","visible":true,"settings":{"title":"","dict_link":"https://www.mooo.tw/account/signup","dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzIzNTk3Mjg3X-acg-WToeaLm-WLny5qcGcuanBlZyJdXQ.jpeg?sha=664f6bd874be734c","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":""},"custom_name":"åç"},"1714218467882_0":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"/theme_src/i18n_shoestore/default_img/index_4_blocks_1.jpg","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":""}},"1720954261200_0":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzIwOTU0Mjc5X-mmluemrummlumBuC5qcGcuanBlZyJdXQ.jpeg?sha=a8d6b8f0c52d91a6","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/all","dict_image_description":""}}},"block_order":["display_index_4_block_1","1720954261200_0"],"custom_name":"èªè¨æçè¨è¨","settings":{"margin_x":"0","margin_bottom":"50","margin_block":"10","mobile_margin_x":"0","mobile_margin_bottom":"50","mobile_columns":1,"mobile_margin_block":"10"}},"express_delivery_index_4_blocks":{"type":"_index_4_blocks","visible":false,"blocks":{"express_delivery_display_index_4_block_1":{"type":"image","visible":true,"settings":{"title":"","dict_link":"","dict_image_url":"/theme_src/i18n_shoestore/default_img/new_index_4_blocks_1.jpg","dict_tablet_image_url":"","dict_mobile_image_url":""}}},"block_order":["express_delivery_display_index_4_block_1"]},"custom_text":{"type":"custom_text","visible":true,"settings":{}},"blog":{"type":"blog","visible":true,"settings":{"article_limit_in_blog_page":"6"}},"article":{"type":"article","visible":true,"settings":{"display_blog_menu":true,"dict_blog_tags_title":"æç« åé¡","blog_latest_post_limit":"2"}},"category":{"type":"category","visible":true,"settings":{"category_sidebar_set_open":false,"category_product_block_limit":"4","category_product_swiper_item_limit":"6","category_product_item_limit":"18"}},"shop_setting":{"type":"shop_setting","visible":true,"settings":{"favicon_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzEzMDY1OTMwX0xPR08uanBnLmpwZWciXV0.jpeg?sha=3a6d167d435d3288","og_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzEzMDY1OTMwX0xPR08uanBnLmpwZWciXV0.jpeg?sha=3a6d167d435d3288","shop_title":"æ®æ²æè£½çé»","shop_description":"ç¶²ç«ç¨æ¢ç´¢ç活細ç¯å欣è³åå³çç©å³ä¹å¿ï¼ä»¥åå´è¬¹ä½ä¸åæ¡æ¶éå¶çåéªæ¢ç´¢ç²¾ç¥ï¼ å°çæè¦ªåçå¨å°é£æï¼çç¤åºå±¬æ¼èªå·±çæ
¢æ´»æ
èª¿ã æè£¡çç度åå好ï¼ç©ºæ°£ä¸çé¦å³ä¹åå好ã é份妿²é½å
çç¾å¥½ç¶é© é¡èä½ å享簡述","shop_keywords":"å®å¿ å·´æ¯å
ä¹³é
ªèç³ è´è¶é
¥ è²»åéª çä¹³æ² ç´ç"},"custom_name":"å
¨ç«è¨å®"},"color_settings":{"type":"color_settings","visible":true,"settings":{"button_color":"#173E5B","button_text_color":"#FFFFFF","accent_color":"#2B2B6E","heading_color":"#565656","text_color":"#9A9EA2","price_color":"#C39D6F","discount_price_color":"#C39D6F","theme_bg_color":"#ffffff","product_border_color":"#E2E2E2","nav_logo_bg_color":"#FFFFFF","nav_menu_bg_color":"#FFFFFF","nav_menu_text_color":"#565656","nav_menu_icon_color":"#565656","footer_bg_color":"#173E5B","footer_text_color":"#FFFFFF","checkout_button_color":"#000000","checkout_accent_color":"#2b2b6e","tips_text_color":"#0C5460"},"custom_name":"é¡è²è¨å®"},"popup":{"type":"popup","visible":true,"blocks":{"popup_block_1":{"type":"image","visible":false,"settings":{"dict_image_url":"/theme_src/i18n_shoestore/default_img/popup_default.jpg","icon_size":"small"},"custom_name":"åç"}},"block_order":["popup_block_1"],"settings":{},"custom_name":"å½çªå»£å"},"product_info":{"type":"product_info","visible":true,"settings":{"display_product_sku":true,"dict_vip_custom_price_text":"","dict_vip_custom_price_href":""},"custom_name":"åºæ¬è¨å®"},"product_description":{"type":"product_description","visible":true,"custom_name":"ååä»ç´¹"},"board_comments":{"type":"board_comments","visible":true,"settings":{},"custom_name":"ååè©è«","thumbnail":"list","draggable":false},"related_products":{"type":"related_products","visible":true,"settings":{"display_related_cols":true,"use_custom_related_cols":true,"dict_group_related_cols_related_product":"ç¸éåå","related_products_limit":"4"},"custom_name":"ç¸éåå"},"combo_product_info":{"type":"combo_product_info","visible":true,"settings":{}},"combo_product_desc":{"type":"combo_product_desc","visible":true,"settings":{}},"contact":{"type":"contact","visible":true,"settings":{"show_google_map":true,"show_google_map_iframe":"\u003ciframe src=\"https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3613.6479170127777!2d121.56760821400371!3d25.07991984260527!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3442ac6fbd841bbd%3A0x64e16bcf25e3da31!2zMTE05Y-w5YyX5biC5YWn5rmW5Y2A55Ge5YWJ6LevNTEz5be3MzDomZ8!5e0!3m2!1szh-TW!2stw!4v1485156761267\" width=\"600\" height=\"450\" frameborder=\"0\" style=\"border:0\" allowfullscreen\u003e\u003c/iframe\u003e"}},"collection":{"type":"collection","visible":true,"settings":{"collection_sidebar":"main-menu","collection_sidebar_set_open":false,"collection_pagination_limit":"24","is_infinite_scroll":false},"custom_name":"åååé¡è¨å®"},"404":{"type":"404","visible":true,"settings":{"image_url":"/theme_src/i18n_shoestore/default_img/404_img.png","dict_404_image_url":"/theme_src/i18n_shoestore/default_img/404_img.png","dict_title_text":"æ±æï¼æ¤é é¢ä¸å卿è
å·²ç¶è¢«ç§»é¤","dict_btn_text":"è¿åé¦é "}},"blogs_all":{"type":"blogs_all","visible":true,"settings":{}},"bundle_discounts":{"type":"bundle_discounts","visible":true,"settings":{}},"cart":{"type":"cart","visible":true,"settings":{}},"cart_empty":{"type":"cart_empty","visible":true,"settings":{}},"page":{"type":"page","visible":true,"settings":{}},"search":{"type":"search","visible":true,"settings":{"search_link_list":"main-menu"}},"customers/account":{"type":"customers/account","visible":true,"settings":{}},"customers/account_edit":{"type":"customers/account_edit","visible":true,"settings":{}},"customers/activate_account":{"type":"customers/activate_account","visible":true,"settings":{}},"customers/addresses":{"type":"customers/addresses","visible":true,"settings":{}},"customers/bonus_points":{"type":"customers/bonus_points","visible":true,"settings":{}},"customers/cancel":{"type":"customers/cancel","visible":true,"settings":{}},"customers/coupons":{"type":"customers/coupons","visible":true,"settings":{}},"customers/forgot_password":{"type":"customers/forgot_password","visible":true,"settings":{}},"customers/login":{"type":"customers/login","visible":true,"settings":{}},"customers/message":{"type":"customers/message","visible":true,"settings":{}},"customers/messages":{"type":"customers/messages","visible":true,"settings":{}},"customers/modify_password":{"type":"customers/modify_password","visible":true,"settings":{}},"customers/order":{"type":"customers/order","visible":true,"settings":{}},"customers/orders":{"type":"customers/orders","visible":true,"settings":{}},"customers/periodic_order":{"type":"customers/periodic_order","visible":true,"settings":{}},"customers/periodic_orders":{"type":"customers/periodic_orders","visible":true,"settings":{}},"customers/other_valid_orders":{"type":"customers/other_valid_orders","visible":true,"settings":{}},"customers/register":{"type":"customers/register","visible":true,"settings":{}},"customers/reset_password":{"type":"customers/reset_password","visible":true,"settings":{}},"customers/return":{"type":"customers/return","visible":true,"settings":{}},"customers/tracking_items":{"type":"customers/tracking_items","visible":true,"settings":{}},"express_delivery-navbar":{"type":"express_delivery-navbar","visible":true,"settings":{}},"express_delivery-content":{"type":"express_delivery-content","visible":true,"settings":{}},"1713066229413_6":{"type":"_graphic_introduction","custom_name":"åæä»ç´¹","visible":false,"settings":{"text_display":"leftPosition","graphic_text":"#373420","graphic_bg"
45:"#F4EEE2","margin_x":"0","margin_bottom":"0","mobile_margin_x":"0","mobile_margin_bottom":"0","dict_image_url":"/theme_src/i18n_shoestore/default_img/index_4_blocks_1.jpg","dict_tablet_image_url":"","dict_mobile_image_url":"","btn_display":"leftSide","block_propotion":"50"},"blocks":{"1713066229416_0":{"type":"title","custom_name":"æ¨é¡","visible":true,"settings":{"dict_rich_text_title":"èªèæ®æ²","dict_size":"15"}},"1713066229416_1":{"type":"text","custom_name":"å
§æ","visible":true,"settings":{"dict_rich_text_content":"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.","dict_size":"14"}},"1713066229417_2":{"type":"button","custom_name":"æé","visible":true,"settings":{"dict_btn_text":"äºè§£æ´å¤","graphic-button_bg":"#255175","graphic-button_text":"#FFFFFF"}}},"block_order":["1713066229416_1","1713066229417_2"]},"1713083305496_7":{"type":"_text_editor_section","custom_name":"æå編輯","visible":false,"settings":{"margin_x":"0","margin_bottom":"0","mobile_margin_x":"0","mobile_margin_bottom":"0","dict_advanced_rich_text_content":"\u003cp style=\"text-align:center;\"\u003e\u003cspan style=\"font-size: 16px;\"\u003e\u003cstrong\u003eå ç æ
äº\u003c/strong\u003e\u003c/span\u003e\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n\u003cp style=\"text-align:center;\"\u003eï½ä¸å ´å°æ¾ç¾å³çæ
ç¨ï½\u003cbr\u003e\u003cspan style=\"font-size: 12px;\"\u003eåå¾ä¸çèå精緻çé»çç¼æºå°ï¼è´åå¸ç¿å³çµ±çé»è£½ä½å·¥åºã\u003c/span\u003e\u003cbr\u003e\u003cspan style=\"font-size: 12px;\"\u003eå¨å°ç£åªåè¸éæ¯ä¸çåå°ï¼å°æ¾å äººé¢¨æ ¼çåæï¼\u003c/span\u003e\u003cbr\u003e\u003cspan style=\"font-size: 12px;\"\u003eä¹æè¨ªä½¿ç¨ååè¾²æ³çå¨å°å°è¾²ï¼çææ¯ä¸åè½å
å°åå°è¬è³çä½ç©\u003c/span\u003eã\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n\u003cp style=\"text-align:center;\"\u003eï½æ¢ç¶è¦ï¼å°±æ¥µè´ï½\u003cbr\u003e\u003cspan style=\"font-size: 12px;\"\u003eè¼å¥¢çåå¼çé»ï¼ç´°ç¯åèæ»¿æ»¿çå¿æï¼\u003c/span\u003e\u003cbr\u003e\u003cspan style=\"font-size: 12px;\"\u003e使ç¨å°ç£å¨å°çç¢çãç¼é
µå¥¶æ²¹ãï¼é·é20å°æç使º«çæï¼ééåºæ´æ¿éçä¹³é¦ï¼\u003c/span\u003e\u003cbr\u003e\u003cspan style=\"font-size: 12px;\"\u003eå´é¸æãæ½æ·¨æ¨ç« ãçç¡æ·»å åæï¼æåç´æ·¨å°å å·¥ï¼ç¾å³ç¡éå¤é¤çè² æã\u003c/span\u003e\u003cbr\u003e\u003cspan style=\"font-size: 12px;\"\u003eå大èªç¶çé¡è²ï¼åæç´ç²¹çå³éã\u003c/span\u003e\u003c/p\u003e\n\u003cp style=\"text-align:center;\"\u003e\u003cspan style=\"font-size: 12px;\"\u003eæ¯ä¸å£é½èèèæéèèå¿ï¼\u003c/span\u003e\u003cbr\u003e\u003cspan style=\"font-size: 12px;\"\u003eæ¯ä¸æ¬¾é½èå«èæåçå¿è¡èæå¾
ã\u003c/span\u003e\u003c/p\u003e\n\u003cp style=\"text-align:center;\"\u003e\u003cspan style=\"color: rgb(195,195,195);font-size: 10px;\"\u003e------------------------------------------------------------------------------------------------------------\u003c/span\u003e\u003c/p\u003e\n\u003cp style=\"text-align:center;\"\u003e\u003c/p\u003e\n\u003cp style=\"text-align:center;\"\u003e\u003cstrong\u003e精緻æ¼å£\u003c/strong\u003eï½\u003cstrong\u003eç¶å
¸æ¼å¿\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n\u003cp style=\"text-align:center;\"\u003eï½åªçµ¦æç人ï½\u003cbr\u003e\u003cspan style=\"font-size: 12px;\"\u003eæ®æ²æè£½èªçºï¼çé»ä¸åªè¨æ¶ä¸ç童年奶é¦ï¼\u003c/span\u003e\u003cbr\u003e\u003cspan style=\"font-size: 12px;\"\u003eæ´å¤æ¯è½å°åå°æ
éä¸ååéçç¾å¥½ï¼å¸¶å°æåççæ´»ä¸ã\u003c/span\u003e\u003cbr\u003e\u003cspan style=\"font-size: 12px;\"\u003eç¨æ¢ç´¢ç活細ç¯å欣è³åå³çç©å³ä¹å¿ï¼ä»¥åå´è¬¹ä½ä¸åæ¡æ¶éå¶çåéªæ¢ç´¢ç²¾ç¥ï¼\u003c/span\u003e\u003cbr\u003e\u003cspan style=\"font-size: 12px;\"\u003eå°çæè¦ªåçå¨å°é£æï¼çç¤åºå±¬æ¼èªå·±çæ
¢æ´»æ
調ã\u003c/span\u003e\u003c/p\u003e\n\u003cp style=\"text-align:center;\"\u003e\u003cspan style=\"font-size: 12px;\"\u003eæè£¡çç度åå好ï¼ç©ºæ°£ä¸çé¦å³ä¹åå好ã\u003c/span\u003e\u003c/p\u003e\n\u003cp style=\"text-align:center;\"\u003e\u003cspan style=\"font-size: 12px;
45\"\u003eé份妿²é½å
çç¾å¥½ç¶é©\u003c/span\u003e\u003c/p\u003e\n\u003cp style=\"text-align:center;\"\u003e\u003cspan style=\"font-size: 12px;\"\u003eé¡èä½ å享\u003c/span\u003e\u003c/p\u003e\n"},"blocks":{},"block_order":[]},"1716098576837_1":{"type":"_index_product_banner","custom_name":"æ©«å¹
廣å","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzE2NzI0MTU4X-S7i-e0uS5qcGcuanBlZyJdXQ.jpeg?sha=aed78fbfcdc78af7","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","cta_btn_display_style":"topPosition","cta_btn_bg_color":"#000000","cta_btn_text_color":"#ffffff","margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"24"},"blocks":{},"block_order":[]},"1720954860145_4":{"type":"_index_4_blocks","custom_name":"èªè¨æçè¨è¨","visible":true,"settings":{"margin_x":"0","margin_bottom":"50","margin_block":"10","mobile_margin_x":"0","mobile_margin_bottom":"50","mobile_columns":1,"mobile_margin_block":"10"},"blocks":{"1720954860146_0":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzIwOTU1MDQ3X-S5s-mFquibi-ezleezu-WIly5qcGcuanBlZyJdXQ.jpeg?sha=fb61e6d6b2fb486f","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/ä¹³é
ªèç³ç³»å","dict_image_description":""}},"1720954877865_0":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzIwOTU1MDk5X-WNg-WxpOidtOidtumFpeezu-WIly5qcGcuanBlZyJdXQ.jpeg?sha=b33a76432bb77c67","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/å層è´è¶é
¥ç³»å","dict_image_description":""}},"1720954879774_0":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzIwOTU1MTIwX-iyu-WNl-mbquezu-WIly5qcGcuanBlZyJdXQ.jpeg?sha=8183fa58336f6e54","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/è²»åéªç³»å","dict_image_description":""}},"1720954881650_0":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzIwOTU1MjQ1X-eUn-S5s-aNsuezu-WIly5qcGcuanBlZyJdXQ.jpeg?sha=1f10b060a6015751","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/çä¹³æ²ç³»å","dict_image_description":""}}},"block_order":["1720954860146_0","1720954877865_0","1720954879774_0","1720954881650_0"]},"1763169693964_1":{"type":"_index_product_banner","custom_name":"æ©«å¹
廣å","visible":false,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzY0NjU3Nzc3XzLlkajlubQuanBnLmpwZWciXV0.jpeg?sha=4d43f602aef2b817","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/products/å·´æ¯å
èç³è²·å¤§éå°-2é±å¹´æ
¶æ´»åéå®","cta_btn_display_style":"topPosition","cta_btn_bg_color":"#000000","cta_btn_text_color":"#ffffff","margin_x":"0","margin_bottom":"100","mobile_margin_x":"0","mobile_margin_bottom":"24"},"blocks":{},"block_order":[]},"1763169282747_1":{"type":"_index_product_banner","custom_name":"æ©«å¹
廣å","visible":false,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzYzMTY5MTE3X-aWsOWTgeS4iuW4gua0u-WLlS5qcGcuanBlZyJdXQ.jpeg?sha=6b939652dc76459b","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","cta_btn_display_style":"topPosition","cta_btn_bg_color":"#000000","cta_btn_text_color":"#ffffff","margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"24"},"blocks":{},"block_order":[]},"announcement_bar":{"type":"announcement_bar","visible":true,"blocks":{"announcement_bar_block_1":{"type":"image","visible":true,"settings":{"display_only_index":true,"display_period":"always","dict_link":"","link_open_in_new_tab":false,"dict_image_url":"","dict_image_tablet_url":"","dict_image_mobile_url":"","image_alt":"","dict_content":"","text_size":"12","text_color":"#ffffff","bg_color":"#000000","timer_text_color":"#c39d6f","timer_bg_color":"#2b2b6e","migrated_from_navbar":true}}},"block_order":["announcement_bar_block_1"],"settings":{"display_mode":"vertical","carousel_interval":"3"}}},"navbar_image_logo":true,"show_default_all_products":true,"one_dimension_limit":"
456","two_dimension_limit":"10","header_banner_display":true,"header_banner_link":"/","display_main_slider":true,"display_phone":true,"phone_number":"0912345678","display_fax_number":true,"shop_fax_number":"0222345678","display_shop_email":true,"shop_email":"[email protected]","display_shop_address":true,"shop_address":"測試å°å","display_office_time":true,"shop_office_time":"10:00-17:00","index_event_slider_display":true,"index_event_slider_item_1_display":true,"dict_index_event_slider_item_1_link":"#","index_event_slider_item_2_display":true,"dict_index_event_slider_item_2_title":"2019ç§å£é款æ°åä¸å¸","dict_index_event_slider_item_2_link":"#","index_event_slider_item_3_display":true,"dict_index_event_slider_item_3_title":"å
¨é¤¨ä»»é¸ä¸ä»¶çµå¸³åäº«ææ£ï¼ï¼8æï¼ï¼","dict_index_event_slider_item_3_link":"#","index_event_slider_item_4_display":true,"dict_index_event_slider_item_4_title":"FINAL SALE/å¤å¤©ç±é·ç¾æé款è£è²¨å°åº","dict_index_event_slider_item_4_link":"#","index_event_slider_item_5_display":true,"dict_index_event_slider_item_5_title":"ç±è³£åæ¸","dict_index_event_slider_item_5_link":"#","index_event_slider_item_6_display":true,"dict_index_event_slider_item_6_title":"ç¾å¨è¨»åæå¡å³å¯äº«ææ£éï¼50ï¼ç¾æï¼","dict_index_event_slider_item_6_link":"#","index_event_slider_item_7_display":false,"dict_index_event_slider_item_7_title":"","dict_index_event_slider_item_7_link":"","index_event_slider_item_8_display":false,"dict_index_event_slider_item_8_title":"","dict_index_event_slider_item_8_link":"#","index_event_slider_item_9_display":false,"dict_index_event_slider_item_9_title":"","dict_index_event_slider_item_9_link":"#","index_event_slider_item_10_display":false,"dict_index_event_slider_item_10_title":"","dict_index_event_slider_item_10_link":"#","index_4_slider_display":true,"dict_index_4_slider_title":"Instagram","index_4_slider_item_1_display":true,"dict_index_4_slider_item_1_link":"#","index_4_slider_item_2_display":true,"dict_index_4_slider_item_2_link":"#","index_4_slider_item_3_display":true,"dict_index_4_slider_item_3_link":"#","index_4_slider_item_4_display":true,"dict_index_4_slider_item_4_link":"#","index_4_slider_item_5_display":true,"dict_index_4_slider_item_5_link":"#","index_4_slider_item_6_display":false,"dict_index_4_slider_item_6_link":"#","index_4_slider_item_7_display":false,"dict_index_4_slider_item_7_link":"#","index_4_slider_item_8_display":false,"dict_index_4_slider_item_8_link":"#","index_video_blocks_display":true,"dict_index_video_blocks_title":"Youtube","dict_index_video_blocks_video_link":"https://www.youtube.com/watch?v=3bI4IUIVjCk","collection_sidebar":"main-menu","collection_sidebar_set_open":false,"collection_pagination_limit":"24","product_slogan_display":false,"display_product_total_sold":false,"display_periodic_order_label":false,"cart_quantity_limit":"0","is_empty_clickable":true,"is_first_selected":false,"display_product_images_color":false,"discount_product_images_color_expand":false,"display_product_discounts_list":true,"display_discount_price_name":false,"discount_price_slogan_url":"","dict_discount_price_name":"","display_discount_price_suggestion_name":false,"dict_discount_price_suggestion_name":"","display_product_section_description":true,"dict_product_section_description":"ååä»ç´¹","description_section_spec_setting":true,"dict_product_description_section_spec":"è³å³æé","description_section_shipping_setting":true,"dict_product_description_section_shipping":"ééæ¹å¼","vip_custom_price_visible":false,"display_global_event_1":false,"dict_show_global_event_1_link":"#","display_global_event_2":false,"dict_show_global_event_2_link":"#","display_global_event_3":false,"dict_show_global_event_3_link":"#","display_contact_address":true,"dict_contact_address":"測試å°å","show_google_map":true,"show_google_map_iframe":"\u003ciframe src=\"https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3613.6479170127777!2d121.56760821400371!3d25.07991984260527!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3442ac6fbd841bbd%3A0x64e16bcf25e3da31!2zMTE05Y-w5YyX5biC5YWn5rmW5Y2A55Ge5YWJ6LevNTEz5be3MzDomZ8!5e0!3m2!1szh-TW!2stw!4v1485156761267\" width=\"600\" height=\"450\" frameborder=\"0\" style=\"border:0\" allowfullscreen\u003e\u003c/iframe\u003e","display_selected_blog":true,"selected_blog":"news","display_inventory_policy":true,"google_font":"{'ja':{'value':'Noto Sans JP'},'zh-TW':{'value':'Noto Sans TC'},'en':{'value':'Noto Sans TC'},'zh-CN':{'value':'Noto Sans TC'}}","styled_shop_menu":"buttonType","product_scale":"default_scale","display_product_vendor":true,"product_video_display_location":"before","product_text_align":"start","nav_icon_style":"icon_type_default","product_labels":{"displayPeriodicEventLabel":false,"periodicEventLabelType":"text","dictPerio
45dicEventLabelText":"","periodicEventLabelImage":"","displaySaleLabel":false,"saleLabelType":"text","dictSaleLabelText":"","saleLabelImage":"/theme_src/beta_theme/default_img/onsale_icon.png","displayOutOfStockLabel":false,"outOfStockLabelType":"text","dictOutOfStockLabelText":"","outOfStockLabelImage":"","displayCustomLabel1":false,"customLabel1Type":"text","customLabel1Tag":"","dictCustomLabel1Text":"","customLabel1Image":"","displayCustomLabel2":false,"customLabel2Type":"text","customLabel2Tag":"","dictCustomLabel2Text":"","customLabel2Image":"","displayCustomLabel3":false,"customLabel3Type":"text","customLabel3Tag":"","dictCustomLabel3Text":"","customLabel3Image":"","displayCustomLabel4":false,"customLabel4Type":"text","customLabel4Tag":"","dictCustomLabel4Text":"","customLabel4Image":"","displayCustomLabel5":false,"customLabel5Type":"text","customLabel5Tag":"","dictCustomLabel5Text":"","customLabel5Image":""}}); 46 </script>
46 47 48 49 50 51 52 53 54 55 56 57 <!-- for vendor --> 58 <!-- cyb_snippet _bootstrap start --> 59 60<!-- cyb_snippet _bootstrap end --> 61 <link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/vendor-3a2e378145f8a165.css' rel='stylesheet' type='text/css' media='all' /> 62 63 <!-- common css rulesets --> 64 <link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/common-3a2e378145f8a165.css' rel='stylesheet' type='text/css' media='all' /> 65 66 <!-- for navbar --> 67 <link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/navbar-3a2e378145f8a165.css' rel='stylesheet' type='text/css' media='all' /> 68 69 <!-- for footer --> 70 <link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/footer-3a2e378145f8a165.css' rel='stylesheet' type='text/css' media='all' /> 71 72 <!-- theme assets --> 73 <link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/main-3a2e378145f8a165.css' rel='stylesheet' type='text/css' media='all' /> 74 75 <!-- for vendor --> 76
76<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/vendor-3a2e378145f8a165.js' type='text/javascript'></script>
76 77 78
78<script> 79 window.sci = "eyJzaG9wX2lkIjoyODMwNCwic2hvcF9wbGFuIjoiYWR2YW5jZSIsImRpbV9h\nZmZpbGlhdGUiOm51bGwsImN1c3RvbWVyX2lkIjpudWxsLCJjdXN0b21lcl9u\nYW1lIjpudWxsLCJzaG9wX25hbWUiOiLmmq7mspDmiYvoo70iLCJzaGFyZV9h\ndHRyaWJ1dGlvbl9lbmFibGVkIjp0cnVlfQ==\n"; 80 </script>
80 81 82 83<meta name="csrf-param" content="authenticity_token" /> 84<meta name="csrf-token" content="P7AIs-4lIQFCGKE2L_8V9zEutT-oo0GhnRE0mm7xv0pHRM86jE1buzDKJ2BtZfSB6OVO8-EeBTkrPkD3qZ2dmg" />
85<script>(function () { 86 window.gaConfigurations = {"useProductIdInProductEvents":false}; 87})(); 88</script>
vendor: 1 bytes, line 88
88
89<script>(function () { 90 window.CYBERBIZ_PageContext = {"page_type":"product"}; 91})(); 92</script>
92 93<link href="//cdn1-next.cybassets.com/frontend/shop/quark-3a2e378145f8a165.css" rel="stylesheet" type="text/css" media="all" /> 94
94<script> 95 window.shopScriptHelper = { 96 i18nLocale: "zh-TW", 97 i18nLocaleDefault: "zh-TW", 98 availableCurrencies: [], 99 defaultCurrency: "TWD", 100 currenciesInfo: [{"name":"æ°å°å¹£ (TWD)","html":"NT${{amount_no_decimals}}","money_format":"%u%n","unit":"","decimal_precision":0,"email_unit":"NT${{amount_no_decimals}}","html_unit":"NT${{amount_no_decimals}}","format":"NT${{amount_no_decimals}}","trailing_zeros":false,"code":"TWD","email":"NT${{amount_no_decimals}}","symbol":"NT$"}], 101 vueOverrideTranslations: {"zh-TW":{"vue":{"theme_pages":{"order_return":{"address1":"詳細é貨å°åï¼è·¯/å··/å¼/è/æ¨","keyin_address1":"è«å¡«å¯«è©³ç´°é貨å°åï¼è·¯/å··/å¼/è/æ¨"}}}}}, 102 hasI18nInContextEditing: false, 103 shopMultipleCurrenciesCheckout: false, 104 hasLocalizedShopPriceFormat: true, 105 } 106 </script>
106 107 108 109
109<script 110 src="//cdn1-next.cybassets.com/frontend/shop/tolgeeIntegration-3a2e378145f8a165.js"> 111 </script>
111 112
112<script defer> 113 /* 114 * Enable in-context translation for Liquid part on the page. 115 * This must be executed last to prevent conflicts with other Vue apps. 116 * So put it to `onload`, which will be executed after DOM ready's app mount 117 */ 118 window.onload = function() { 119 if ( 120 window.shopScriptHelper && 121 window.shopScriptHelper.hasI18nInContextEditing 122 ) { 123 window.initTolgeeForLiquid() 124 } 125 } 126 </script>
126 127
128<script> var google_con_event_labels = []</script>
vendor: 1 bytes, line 128
128
129<script src="//cdn1-next.cybassets.com/frontend/shop/pageEventHandler-3a2e378145f8a165.js"></script>
vendor: 1 bytes, line 129
129
130<script src="//cdn1-next.cybassets.com/frontend/shop/globalAnalysis-e4c650eb0b.js"></script>
130 131
131<script> 132 window.c12t = {"customer_id":null,"product":{"id":57903702,"name":"å層è´è¶é ¥ ï½ èèå£å³","price":480.0,"brand":"æ®æ²æè£½"}}; 133 </script>
133 134 135 <meta name="request-id" content="4529EA1AB0568D128D457D6A48725745"/> 136 137<link rel="canonical" href="https://www.mooo.tw/products/%E5%8D%83%E5%B1%A4%E8%9D%B4%E8%9D%B6%E9%85%A5-%EF%BD%9C-%E6%96%B0%E5%93%81-%E8%9C%82%E8%9C%9C%E5%8F%A3%E5%91%B3">
138<script src="//cdn1-next.cybassets.com/frontend/shop/carousel-3a2e378145f8a165.js"></script>
138 139
139<script> 140 window.parent.postMessage({ type: 'previewShopInit', currentUrl: window.location.href }, '*'); 141 </script>
141 142
143<script src="//cdn1-next.cybassets.com/frontend/appStoreSDK/main.2798231628aa7fab87a9.js"></script>
vendor: 1 bytes, line 143
143
144<script>window.CYBERBIZ_AppScriptSettings = {"shop_add_ons":"W3sidmVuZG9yX3R5cGUiOiJDWUJFUkJJWiBHb29nbGUgQW5hbHl0aWNzIDQi\nLCJhcHBfaWQiOiJRVWo1WnFvZUlPUjlaM2JaS2trMG44N3l5a0FpOWU0NURE\naDJ0YlFnaUJBIiwic2V0dGluZ3MiOnsiZ3RhZ19pZCI6IkctRUc0MkJFM1dK\nUywgRy00QjdSSzdGSFdIIn19LHsidmVuZG9yX3R5cGUiOiJEaWdpdGFsIElu\ndGVsbGlnZW5jZSBUcmFja2VyIiwiYXBwX2lkIjoiMWI1MGE4NmRjMmQxNDE4\nMzg4ZmRlZGY3YTBkNDM5YWUiLCJzZXR0aW5ncyI6e319XQ==\n"} 145</script>
vendor: 1 bytes, line 145
145
146<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/9d6f4550aad572e9f70abb70ae5a6552482cf617ea5e4d5a32ed4ebbb5d60d54.js"></script>
vendor: 1 bytes, line 146
146
147<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/35cd1f36a4a855bacbaa53900f8e17b376d4cab44c73812eef261aef6435163d.js"></script>
vendor: 1 bytes, line 147
147
148<script>window.CYBERBIZ.initializeSDK.initialize();</script>
vendor: 1 bytes, line 148
148
149<script src="//cdn1-next.cybassets.com/frontend/shop/setAffliateCookie-3a2e378145f8a165.js"></script>
vendor: 1 bytes, line 149
149
150<script src="//cdn1-next.cybassets.com/assets/url-share-attribution-087b8170482449a1d92fbb0c92f9ce3ef38a84f35c52016ed831bd3efd8eed8b.js"></script>
150 151 152 153 154<meta name="title" content="å層è´è¶é ¥ ï½ èèå£å³ | æ®æ²æè£½"> 155<meta property="og:title" content="å層è´è¶é ¥ ï½ èèå£å³ | æ®æ²æè£½"> 156<meta name="description" content="天ç¶èèèå19èç¼é µå¥¶æ²¹ï¼é ¥ç®å±¤å±¤å çï¼ççåºè¿·äººèé¦èæ¿é奶é¦ãé ¥èä¸è©ï¼çèä¸è©ï¼æ¯åå¾é»å¿èé禮çåªé 鏿ãð¯ãèèå層è´è¶é ¥ç¦®çã禮çå §å®¹ç©ï¼èèè´è¶é ¥ââºâ x16ç"> 157<meta property="og:description" content="天ç¶èèèå19èç¼é µå¥¶æ²¹ï¼é ¥ç®å±¤å±¤å çï¼ççåºè¿·äººèé¦èæ¿é奶é¦ãé ¥èä¸è©ï¼çèä¸è©ï¼æ¯åå¾é»å¿èé禮çåªé 鏿ãð¯ãèèå層è´è¶é ¥ç¦®çã禮çå §å®¹ç©ï¼èèè´è¶é ¥ââºâ x16ç"> 158<meta name="keywords" content="å層è´è¶é ¥ ï½ èèå£å³"> 159<meta property="og:url" content="https://www.mooo.tw/products/å層è´è¶é ¥-ï½-æ°å-èèå£å³"> 160<meta property="og:type" content="og:product">
161<script type="application/ld+json">{"@context":"https://schema.org/","@type":"Product","name":"å層è´è¶é
¥ ï½ èèå£å³","image":"https://cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L3Byb2R1Y3RzLzU3OTAzNzAyLzE3NTM1ODQ4OTlfZTdmMzY5MWY4YWE2MWM4NTk5NTYuanBlZyJdLFsicCIsInRodW1iIiwiNDgweDQ4MCJdXQ.jpeg?sha=723853b00b9af632","description":"天ç¶èèèå19èç¼é
µå¥¶æ²¹ï¼é
¥ç®å±¤å±¤å çï¼ççåºè¿·äººèé¦èæ¿é奶é¦ã\né
¥èä¸è©ï¼çèä¸è©ï¼æ¯åå¾é»å¿èé禮çåªé
鏿ã\n\nð¯ãèèå層è´è¶é
¥ç¦®çã\n禮çå
§å®¹ç©ï¼\nèèè´è¶é
¥ââºâ x16ç","brand":"æ®æ²æè£½","sku":"","offers":{"@type":"Offer","url":"https://www.mooo.tw/products/å層è´è¶é
¥-ï½-æ°å-èèå£å³","priceCurrency":"TWD","price":"480.0","priceValidUntil":"","availability":"OutOfStock"},"productId":57903702}</script>
161 162 163
163<script> 164 document.addEventListener("DOMContentLoaded", function() { 165 gtag('event', 'view_item', {"items":[{"id":70021235,"name":"å層è´è¶é ¥ ï½ èèå£å³","price":480.0}],"send_to":["cyberbiz","dynamic_remarketing"]}); 166 }) 167 </script>
167 168 169 170
170<script> 171 document.addEventListener("DOMContentLoaded", function() { 172 try { 173 var productData = [{"id":null,"product_id":57903702,"variant_id":70021235,"sku":null,"name":"å層è´è¶é ¥ ï½ èèå£å³","price":480.0,"compare_at_price":480.0,"currency":"TWD","inventory_quantity_status":"empty","category":null,"categories":["å層è´è¶é ¥ç³»å,ææåå"],"properties":[{"name":"å£å³","value":"èèå£å³"}],"list_name":""}]; 174 175 if (document.referrer.indexOf('collection') !== -1 || document.referrer.indexOf('products') !== -1) { 176 for (var i = 0; i < productData.length; i++) { 177 productData[i].list_name = sessionStorage.getItem("viewedCollection"); 178 } 179 } 180 181 window.CYBERBIZ.eventSDK.callEvent("viewItem", productData) 182 183 window.addEventListener("beforeunload", function(event) { 184 var collection = "ç¸éåå"; 185 sessionStorage.setItem("viewedCollection", collection); 186 }); 187 188 } catch (error) { 189 console.error('Exception catched in appMarketViewItemEvent') 190 } 191 }) 192 </script>
192 193 194
195<script src="//cdn1-next.cybassets.com/frontend/shop/gallery-3a2e378145f8a165.js"></script>
195 196 197 <style id="color_settings"> 198 :root { 199 200 --button: #173E5B; 201 202 203 204 --button_text: #FFFFFF; 205 206 207 208 --accent: #2B2B6E; 209 210 211 212 --heading: #565656; 213 214 215 216 --text: #9A9EA2; 217 218 219 220 --price: #C39D6F; 221 222 223 224 --discount_price: #C39D6F; 225 226 227 228 --theme_bg: #ffffff; 229 230 231 232 --nav_logo_bg: #FFFFFF; 233 234 235 236 --nav_menu_bg: #FFFFFF; 237 238 239 240 --nav_menu_text: #565656; 241 242 243 244 --nav_menu_icon: #565656; 245 246 247 248 --footer_bg: #173E5B; 249 250 251 252 --footer_text: #FFFFFF; 253 254 255 256 --checkout_button: #000000; 257 258 259 260 --checkout_accent: #2b2b6e; 261 262 263 264 --product_border: #E2E2E2; 265 266 267 268 --tips_text: #0C5460; 269 270 271 272 273 274 } 275</style> 276 277 278 279 280 281 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 74 bytes, lines 281-282
281 282 <script async src="https://www.googletagmanager.com/gtag/js?id=
282G-EG42BE3WJS
vendor: 22 bytes, lines 282-283
282"></script> 283
283<script> 284 window.dataLayer = window.dataLayer || []; 285 function gtag(){dataLayer.push(arguments);} 286 gtag('js', new Date()); 287 288 289 </script>
289 290
290<script> 291 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 292 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 293 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 294 })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 295 296 ga('create', '', 'auto', {'name': 'cyberbiz'}); 297 ga('cyberbiz.require', 'displayfeatures'); 298 ga('cyberbiz.set', 'dimension1', '28304'); 299 ga('cyberbiz.require', 'ec'); 300 ga('cyberbiz.send', 'pageview'); 301 </script>
301 302 </head> 303 304 <body style="display: flex; flex-direction: column;">
vendor: 74 bytes, lines 304-306
304 305 <noscript><iframe 306 src="//www.googletagmanager.com/ns.html?id=
306GTM-TXD9LVJ
vendor: 117 bytes, lines 306-312
306" 307 height="0" 308 width="0" 309 style="display:none;visibility:hidden"> 310 </iframe></noscript> 311 312
312<!-- Navigation --> 313 <!-- cyb_snippet liquid_helper start -->
314<script> 315 function getDiscountPriceName() { 316 return "false" === "true" ? "" : ""; 317 } 318 319 function getDiscountPriceSuggestionName() { 320 return "false" === "true" ? "" : ""; 321 } 322 323 document.addEventListener('DOMContentLoaded', function() { 324 const languageHandle = Cookies.get("language"); 325 const defaultLanguage = {"handle":"zh-TW","currency_code":"TWD","title":"ç¹é«ä¸æ"}; 326 const languages = []; 327 const currency = window.shopScriptHelper.defaultCurrency; 328 const currencies = window.shopScriptHelper.currenciesInfo; 329 window.liquidHelper = { 330 shopInternational: false, 331 defaultLanguage: defaultLanguage, 332 language: languages.find(function(l) { 333 return l.handle === languageHandle; 334 }) || defaultLanguage, 335 shopMultipleCurrenciesCheckout: false, 336 shopMultipleCurrencies: false, 337 defaultCurrencyFormat: "NT${{amount_no_decimals}}", 338 defaultCurrency: currency, 339 getCurrency: function() { 340 const currencyValue = Cookies.get("currencyValue") || currency; 341 return currencies.find(function(c) { return c.code === currencyValue; } 342 )}, 343 getDefaultCurrency: function() { return currencies.find(function(c) { 344 return c.code === currency; 345 })}, 346 getAvailableCurrencies: function() { return currencies.map(c => c.code) },
347 getCurrencyFormatInfo: function(currency) { 348 const currencyInfo = currencies.find(c => c.code === currency) 349 return _.pick(currencyInfo, [ 350 'decimal_precision', 351 'symbol', 352 'money_format', 353 'unit', 354 'trailing_zeros', 355 'html_unit', 356 'code', 357 ]); 358 }, 359 cartQuantityLimit: (function() { 360 const limit = Number("0" || undefined); 361 return limit <= 0 || isNaN(limit) ? Number.POSITIVE_INFINITY : limit; 362 })(), 363 isFirstVariantSelected: false , 364 isImageColorsUsed: false , 365 isEmptyClickable: true , 366 hasAddBuyProduct: '' !== "" ? true : false, 367 hasPriceWithDiscountPlugin: 'false' ? true : false, 368 conversionBonus: 1, 369 hasLocalizedShopPriceFormat: true, 370 hasCustomerCartPlugin: true, 371 isCartEnabled: true, 372 cdnHost: '//cdn1-next.cybassets.com', 373 hasShopCustomPasswordRulePlugin: false, 374 hasDisableProductQuantityValidation: false, 375 hasBreadcrumbReferrerEnabled: false, 376 }; 377 }); 378</script>
378 379 380<!-- cyb_snippet liquid_helper end --> 381
382<script src='//cdn1-next.cybassets.com/frontend/shop/navbarSection-3a2e378145f8a165.js' type='text/javascript'></script>
382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399<style> 400 401 #navbar { 402 --navbar-pc-title-scale: 0.9; 403 --navbar-pc-body-scale: 1.0; 404 --navbar-mobile-title-scale: 0.9; 405 --navbar-mobile-body-scale: 1.0; 406 } 407 408 409 410 411 412</style> 413 414 415 <span id="navbar" class="drawer drawer--left font-size-setting-enabled"> 416 <header id="header" class="qk-w--100vw qk-pos--fixed qk-t--0 qk-l--0"> 417 418 419 420 <div id="announcement-bar"></div> 421 422 423 424 425 <div class="computer_nav qk-hidden--mobile "> 426 <div class="header_logo qk-bg--nav_logo_bg"> 427 <div class="qk-pos--rel"> 428 <div class="qk-text--center"> 429 <!-- logo start --> 430 431 <nav class="logo qk-display--il_bk"> 432 <a href="/" class="qk-w--100"> 433 <img 434 src="//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzEzMDY1OTMwX0xPR08uanBnLmpwZWciXV0.jpeg?sha=3a6d167d435d3288" 435 class="qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--pc_logo qk-hidden--mobile" 436 style="width: auto; height: 52px;" 437 alt="" 438 height="52" 439 width="auto" 440 > 441 </a> 442 </nav> 443 444 <!-- logo end --> 445 <!-- tool-nav start --> 446 447 <!-- cyb_snippet tool_nav start --> 448 449 450 451 452 453 454<nav class="tool-nav qk-pos--rel qk-float--r qk-display--flex"> 455 <ul class="link_shelf_top qk-display--flex qk-flex--row qk-justify--end qk-align--center qk-pos--abs qk-r--0"> 456 457 458 <!-- member --> 459 460 <li class="customer_account qk-pos--rel qk-pd--05"> 461 <div class="dropdown qk-pos--static"> 462 <div class="qk-cursor--pointer" data-toggle="dropdown"> 463 <div data-icon-type="custom_icon_type_account"></div> 464 <span class="text"></span> 465 </div> 466 <div class="member qk-dropdown_menu dropdown-menu qk-pos--abs qk-r--0 qk-bd--default qk-bd--product_border qk-bg--theme_bg" role="menu"> 467 <ul id="customer-logined-menu" style="display: none"> 468 <li> 469 <div class="qk-fs--body qk-text--heading"> 470 <p class="customer-name qk-whitespace-break-spaces"></p> 471 <p>æ¨å¥½ï¼</p> 472 </div> 473 </li> 474 </ul> 475 <ul id="customer-not-login-menu"> 476 <li class="button qk-text--center"> 477 <a href="/account/login" class="btn-login qk-btn qk-btn--lg qk-btn--primary qk-w--100">æå¡ç»å ¥</a> 478 </li> 479 <li class="button qk-text--center"> 480 <a href="/account/signup" class="btn-orders qk-btn qk-btn--lg qk-btn--secondary qk-w--100 qk-bg--transparent">è¨»åæ°æå¡</a> 481 </li> 482 </ul> 483 <span class="menu-bd qk-bd_t--default qk-bd--product_border"></span> 484 <ul class="member-menu qk-bd_t--default qk-bd--product_border"> 485 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg"> 486 <a href="/account/index" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">æç帳æ¶</a> 487 </li> 488 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg"> 489 <a href="/account/orders" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">è¨å®æ¥è©¢</a> 490 </li> 491 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg"> 492 <a href="/account/coupons" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">å°å±¬åªæ å¸</a> 493 </li> 494 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg"> 495 <a href="/account/tracking_items" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">æ¶èæ¸ å®</a> 496 </li> 497 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg customer-logout-li" style="display: none"> 498 <a href="/account/logout" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">æå¡ç»åº</a> 499 </li> 500 </ul> 501 </div> 502 </div> 503 </li> 504 505 <!-- for money symbol --> 506 <div id="money-symbol" data-money-symbol="NT${{amount_no_decimals}}" hidden></div> 507 <!-- cart --> 508 509 <li class="cart qk-pos--rel qk-pd--05"> 510 <!--é»è ¦ççè³¼ç©è»é¸å®--> 511 <div class="dropdown qk-pos--static"> 512 <div data-toggle="dropdown" class="shopcart qk-cursor--pointer" > 513 <div data-icon-type="custom_icon_type_cart"></div>
514 <span class="global-cart-count qk-circle qk-circle--sm qk-bg--accent qk-text--white qk-vert--mid qk-pos--abs qk-bd" style="display: none;">0</span> 515 <span class="global-cart-loading"></span> 516 </div> 517 <div class="qk-dropdown_menu dropdown-menu qk-pos--abs qk-r--0 qk-bd--default qk-bd--product_border qk-bg--theme_bg" role="menu"> 518 <div class="cart_list global-cart-item-list custom-scrollbar qk-of_x--hidden qk-of_y--scroll qk-of_y--overlay qk-display--flex qk-flex--column qk-justify--between default_scale"></div> 519 <p class="cart_empty qk-fs--body qk-text--heading qk-text--center">ç®åçè³¼ç©è»æ¯ç©ºçï¼</p> 520 <ul> 521 <li class="button qk-text--center"> 522 <a class="btn-checkout qk-btn qk-btn--lg qk-btn--primary qk-w--100" href="/cart" style="display: none">ç«å³è³¼è²·</a> 523 <a class="btn-tracking qk-btn qk-btn--lg qk-btn--secondary qk-w--100 qk-bg--transparent" href="/account/tracking_items">å徿¶èæ¸ å®</a> 524 </li> 525 </ul> 526 </div> 527 </div> 528 </li> 529 530 <!-- search --> 531 532 <li class="search qk-pos--rel qk-pd--05" id="search-icon"> 533 <div class="dropdown qk-pos--static"> 534 <div class="qk-cursor--pointer" data-toggle="dropdown"> 535 <div data-icon-type="custom_icon_type_search"></div> 536 </div> 537 <div class="qk-dropdown_menu dropdown-menu qk-pos--abs qk-r--0 qk-bd--default qk-bd--product_border qk-bg--theme_bg" role="menu"> 538 <div class="search-area qk-display--flex qk-flex--row qk-justify--start qk-align--center qk-vert--mid"> 539 <form action="/search" class="form-inline qk-search_form qk-display--flex qk-justfify--between qk-align--center qk-flex--1"> 540 <input class="search-input form-control qk-inputbox qk-inputbox--lg qk-flex--1 qk-w--100 qk-bg--transparent qk-text--heading" type="search" placeholder="æå°" aria-label="Search" name="q" value="" /> 541 <button class="search-btn qk-btn qk-btn--lg qk-btn--primary qk-pd--0" type="submit">æå°</button> 542 </form> 543 </div> 544 </div> 545 </div> 546 </li> 547 548 <!-- express delivery --> 549 550 </ul> 551</nav> 552 553<!-- cyb_snippet tool_nav end --> 554 555 <!-- tool-nav end --> 556 </div> 557 </div> 558 </div> 559 560 <div class="header_nav qk-bg--nav_menu_bg"> 561 <div class="qk-pd_x--15"> 562 <div class="qk-pos--relative center"> 563 <!-- main-nav start --> 564 <nav class="main_nav qk-display--init"></nav> 565 <!-- main-nav end --> 566 </div> 567 </div> 568 </div> 569 570 </div> 571 572 <div class="qk-hidden--pc "> 573 <!-- mobile-nav start --> 574 <nav class="mobile-nav qk-bg--nav_logo_bg"> 575 <ul class="qk-display--flex qk-flex--row qk-justify--between qk-align--center qk-pd_x--05 qk-pd_y--0"> 576 <!-- menu --> 577 578 <li class="sidebar-menu-icon drawer-toggle qk-text--center qk-pd_x--05 qk-pd_y--0 qk-display--flex qk-align--center"> 579 <div data-icon-type="custom_icon_type_menu"></div> 580 </li> 581 582 <!-- logo --> 583 584 <li class="logo qk-mg_r--auto qk-pd_x--05 qk-pd_y--0"> 585 586 <a href="/" class="qk-display--il_flex qk-align--center qk-h--100 qk-hidden--phone"> 587 <img 588 src="//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzEzMDY1OTMwX0xPR08uanBnLmpwZWciXV0.jpeg?sha=3a6d167d435d3288" 589 height="25" 590 width="auto" 591 alt="" 592 > 593 </a> 594 595 596 <a href="/" class="qk-display--il_flex qk-align--center qk-h--100 qk-hidden--tablet"> 597 <img 598 src="//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzEzMDY1OTMwX0xPR08uanBnLmpwZWciXV0.jpeg?sha=3a6d167d435d3288" 599 height="25" 600 width="auto" 601 alt="" 602 > 603 </a> 604 605 </li> 606 607 608 <!-- search --> 609 610 <li class="search qk-text--center qk-pd_x--05 qk-pd_y--0 qk-display--flex qk-align--center "> 611 <div class="dropdown qk-pos--static qk-text--center"> 612 <div class="qk-cursor--pointer" data-toggle="dropdown"> 613 <div data-icon-type="custom_icon_type_search"></div> 614 </div> 615 <div 616 class="qk-dropdown_menu dropdown-menu qk-w--100vw qk-bg--theme_bg qk-bd--default qk-bd--product_border qk-mg--0" 617 role="menu" 618 > 619 <div class="search-area qk-display--flex qk-flex--row qk-justify--start qk-align--center qk-sp_bt--5 qk-w--100"> 620 <form action="/search" class="form-inline qk-display--flex qk-justfify--center qk-flex--1"> 621 <div class="form-inline qk-search_form qk-display--flex qk-justfify--center qk-align--center qk-flex--1"> 622 <input 623 class="form-control qk-flex--1 qk-inputbox qk-inputbox--lg qk-bg--trans
623parent qk-text--heading" 624 type="search" 625 placeholder="æå°" 626 aria-label="Search" 627 name="q" 628 value="" 629 > 630 <button class="search-btn qk-btn qk-btn--lg qk-btn--primary qk-pd--0" type="submit"> 631 æå° 632 </button> 633 </div> 634 </form> 635 </div> 636 </div> 637 </div> 638 </li> 639 640 <!-- express delivery --> 641 642 643 </ul> 644 </nav> 645 <!-- mobile-nav end --> 646 </div> 647 648 </header> 649 650 <!-- Sidebar --> 651 <nav class="drawer-nav drawer-nav_width qk-bg--nav_menu_bg " role="navigation"> 652 <div class="drawer-menu"> 653 <!-- cyb_snippet side_menu start --> 654 655 656<ul id="index_sidebar_shelf_top" class="sidebar qk-pd_b--1"> 657 658 <li class="logo qk-pos--rel qk-bg--nav_logo_bg qk-pd_x--1 qk-pd_y--05"> 659 <a href="/" class="qk-pd--0"> 660 <img src="//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzEzMDY1OTMwX0xPR08uanBnLmpwZWciXV0.jpeg?sha=3a6d167d435d3288" height="32" width="auto" alt="logo"> 661 </a> 662 <button class="drawer-toggle qk-pos--abs qk-bg--transparent qk-pd--0"></button> 663 </li> 664 665 666 667 668 669 <!-- cyb_snippet components/side_menu/menu start --> 670 671 <li class="category_title qk-fs--breadcrumb qk-bd--nav_menu_text qk-text--nav_menu_text qk-bd_b--default qk-fw--500">主é¸å®</li> 672 673 674 675 676 677 <li class="qk-pos--rel qk-pd--0"> 678 679 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/">é¦é </a> 680 681 </li> 682 683 684 685 686 687 <!-- cyb_snippet components/side_menu/collection_all start --> 688 689 690 691 692 <li class="qk-pos--rel qk-pd--0"> 693 <button class="collection_all bt-toggle qk-display--il_bk qk-w--100 qk-text--left qk-bg--nav_menu_bg qk-bd--none qk-pos--rel qk-fw--bold" data-toggle="collapse" data-target=".collapse_collection_all_index_sidebar_2" aria-expanded=" true "> 694 <a href="/collections/all" class="collection_all_link qk-display--il_bk qk-text--left qk-fs--body qk-fw--bold qk-bg--nav_menu_bg qk-text--nav_menu_text"> 695 ååå表 696 </a> 697 </button> 698 <ul id="index_sidebar_collection_all_shelf_second_2" class="collapse_collection_all_index_sidebar_2 collapse shelf_second qk-pd--0 show "> 699 700 701 702 <li class="qk-pos--rel qk-pd--0"> 703 <button class="collection_all qk-fw--500 bt-toggle qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg " data-toggle="collapse" data-target=".collapse_collection_all_index_sidebar_2_1" aria-expanded=" true "> 704 <a href="/collections/frontpage" class="qk-fw--500 collection_all_link qk-display--il_bk qk-text--left qk-fs--body qk-text--nav_menu_text"> 705 ææåå 706 </a> 707 </button> 708 <ul class="qk-bd--nav_menu_text collapse_collection_all_index_sidebar_2_1 collapse shelf_third qk-pd--0 show "> 709 710 <li class="qk-pos--rel qk-pd--0"> 711 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/å層è´è¶é ¥-ï½-æ°å-èèå£å³">å層è´è¶é ¥ ï½ èèå£å³</a> 712 </li> 713 714 <li class="qk-pos--rel qk-pd--0"> 715 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/âçç奶ç³ï¼å層è´è¶é ¥">å層è´è¶é ¥ ï½ çç奶ç³</a> 716 </li> 717 718 <li class="qk-pos--rel qk-pd--0"> 719 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/å層è´è¶é ¥-ï½ç¦ç³æ´è¥">å層è´è¶é ¥ ï½ç¦ç³æ´è¥</a> 720 </li> 721 722 <li class="qk-pos--rel qk-pd--0"> 723 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/ç¶å ¸å層è´è¶é ¥">å層è´è¶é ¥ ï½ç¶å ¸åå³</a> 724 </li> 725 726 <li class="qk-pos--rel qk-pd--0"> 727 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/âç¶å-å層è´è¶é ¥">å層è´è¶é ¥ ï½ç¶å</a> 728 </li> 729 730 <li class="qk-pos--rel qk-pd--0"> 731 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/âèèèæå¨å£«å¿">å·´æ¯å ä¹³é ªèç³ ï½ èèèæå¨å£«å¿</a> 732 </li> 733 734 <li class="qk-pos--rel qk-pd--0"> 735 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/å·´æ¯å ä¹³é ªèç³-ï½basque-cheesecake">å·´æ¯å ä¹³é ªèç³ï½ç¶å ¸åå³</a> 736 </li> 737 738 <li class="qk-pos--rel qk-pd--0"> 739 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/æè¢">æè¢</a> 740 </li> 741 742 <li class="qk-pos--rel qk-pd--0"> 743 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/âå¡å£«é-çä¹³æ²">ç´ççä¹³å· ï½ å¡å£«é</a> 744 </li> 745 746 <li class="qk-pos--rel qk-pd--0"> 747 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/åå³ç´ççä¹³æ²">ç´ççä¹³å· ï½ åå³</a> 748 </li> 749 750 <li class="qk-pos--rel qk-pd--0"> 751 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/è²»åéªèç³">è²»åéª Financier ï½ 6種å£å³</a> 752 </li> 753 754 <li class="qk-pos--rel qk-pd--0"> 755 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/è²»åéªèç³-20240427180544">è²»åéªFinancier ï½ ç¦®ç</a> 756 </li> 757 758 </ul> 759 </li> 760 761 762 763 <li class="qk-pos--rel qk-pd--0"> 764 <button class="collection_all qk-fw--500 bt-toggle qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg " data-toggle="collapse" data-target=".collapse_collection_all_index_sidebar_2_2" aria-expanded=" true "> 765 <a href="/collections/çä¹³æ²ç³»å" class="qk-fw--500 collection_all_link qk-display--il_bk qk-text--left qk-fs--body qk-text--nav_menu_text"> 766 çä¹³æ²ç³»å 767 </a> 768 </button> 769 <ul class="qk-bd--nav_menu_text collapse_collection_all_index_sidebar_2_2 collapse shelf_third q
769k-pd--0 show "> 770 771 <li class="qk-pos--rel qk-pd--0"> 772 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/âå¡å£«é-çä¹³æ²">ç´ççä¹³å· ï½ å¡å£«é</a> 773 </li> 774 775 <li class="qk-pos--rel qk-pd--0"> 776 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/åå³ç´ççä¹³æ²">ç´ççä¹³å· ï½ åå³</a> 777 </li> 778 779 </ul> 780 </li> 781 782 783 784 <li class="qk-pos--rel qk-pd--0"> 785 <button class="collection_all qk-fw--500 bt-toggle qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg " data-toggle="collapse" data-target=".collapse_collection_all_index_sidebar_2_3" aria-expanded=" true "> 786 <a href="/collections/è²»åéªç³»å" class="qk-fw--500 collection_all_link qk-display--il_bk qk-text--left qk-fs--body qk-text--nav_menu_text"> 787 è²»åéªç³»å 788 </a> 789 </button> 790 <ul class="qk-bd--nav_menu_text collapse_collection_all_index_sidebar_2_3 collapse shelf_third qk-pd--0 show "> 791 792 <li class="qk-pos--rel qk-pd--0"> 793 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/ç«èçæ è²»åéª-禮ç">ç«èçæ è²»åéªï½ 禮ç</a> 794 </li> 795 796 <li class="qk-pos--rel qk-pd--0"> 797 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/è²»åéªèç³">è²»åéª Financier ï½ 6種å£å³</a> 798 </li> 799 800 <li class="qk-pos--rel qk-pd--0"> 801 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/è²»åéªèç³-20240427180544">è²»åéªFinancier ï½ ç¦®ç</a> 802 </li> 803 804 </ul> 805 </li> 806 807 808 809 <li class="qk-pos--rel qk-pd--0"> 810 <button class="collection_all qk-fw--500 bt-toggle qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg " data-toggle="collapse" data-target=".collapse_collection_all_index_sidebar_2_4" aria-expanded=" true "> 811 <a href="/collections/ä¹³é ªèç³ç³»å" class="qk-fw--500 collection_all_link qk-display--il_bk qk-text--left qk-fs--body qk-text--nav_menu_text"> 812 ä¹³é ªèç³ç³»å 813 </a> 814 </button> 815 <ul class="qk-bd--nav_menu_text collapse_collection_all_index_sidebar_2_4 collapse shelf_third qk-pd--0 show "> 816 817 <li class="qk-pos--rel qk-pd--0"> 818 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/å·´æ¯å ä¹³é ªèç³-ï½-è±å¼ä¼¯çµç´ è¶">å·´æ¯å ä¹³é ªèç³ ï½ è±å¼ä¼¯çµç´ è¶</a> 819 </li> 820 821 <li class="qk-pos--rel qk-pd--0"> 822 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/âèèèæå¨å£«å¿">å·´æ¯å ä¹³é ªèç³ ï½ èèèæå¨å£«å¿</a> 823 </li> 824 825 <li class="qk-pos--rel qk-pd--0"> 826 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/å·´æ¯å ä¹³é ªèç³-ï½å¤ªå¦ç³é¬">å·´æ¯å ä¹³é ªèç³ ï½å¤ªå¦ç³é¬</a> 827 </li> 828 829 <li class="qk-pos--rel qk-pd--0"> 830 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/å·´æ¯å ä¹³é ªèç³-ï½basque-cheesecake">å·´æ¯å ä¹³é ªèç³ï½ç¶å ¸åå³</a> 831 </li> 832 833 </ul> 834 </li> 835 836 837 838 <li class="qk-pos--rel qk-pd--0"> 839 <button class="collection_all qk-fw--500 bt-toggle qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg " data-toggle="collapse" data-target=".collapse_collection_all_index_sidebar_2_5" aria-expanded=" true "> 840 <a href="/collections/å層è´è¶é ¥ç³»å" class="qk-fw--500 collection_all_link qk-display--il_bk qk-text--left qk-fs--body qk-text--nav_menu_text"> 841 å層è´è¶é ¥ç³»å 842 </a> 843 </button> 844 <ul class="qk-bd--nav_menu_text collapse_collection_all_index_sidebar_2_5 collapse shelf_third q
844k-pd--0 show "> 845 846 <li class="qk-pos--rel qk-pd--0"> 847 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/å層è´è¶é ¥-ï½-æ°å-èèå£å³">å層è´è¶é ¥ ï½ èèå£å³</a> 848 </li> 849 850 <li class="qk-pos--rel qk-pd--0"> 851 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/âçç奶ç³ï¼å層è´è¶é ¥">å層è´è¶é ¥ ï½ çç奶ç³</a> 852 </li> 853 854 <li class="qk-pos--rel qk-pd--0"> 855 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/å層è´è¶é ¥-ï½ç¦ç³æ´è¥">å層è´è¶é ¥ ï½ç¦ç³æ´è¥</a> 856 </li> 857 858 <li class="qk-pos--rel qk-pd--0"> 859 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/ç¶å ¸å層è´è¶é ¥">å層è´è¶é ¥ ï½ç¶å ¸åå³</a> 860 </li> 861 862 <li class="qk-pos--rel qk-pd--0"> 863 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/âç¶å-å層è´è¶é ¥">å層è´è¶é ¥ ï½ç¶å</a> 864 </li> 865 866 </ul> 867 </li> 868 869 870 871 <li class="qk-pos--rel qk-pd--0"> 872 <button class="collection_all qk-fw--500 bt-toggle qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg " data-toggle="collapse" data-target=".collapse_collection_all_index_sidebar_2_6" aria-expanded=" true "> 873 <a href="/collections/æè¢" class="qk-fw--500 collection_all_link qk-display--il_bk qk-text--left qk-fs--body qk-text--nav_menu_text"> 874 æè¢ 875 </a> 876 </button> 877 <ul class="qk-bd--nav_menu_text collapse_collection_all_index_sidebar_2_6 collapse shelf_third qk-pd--0 show "> 878 879 <li class="qk-pos--rel qk-pd--0"> 880 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-text--nav_menu_text qk-bg--nav_menu_bg qk-fs--body" href="/products/æè¢">æè¢</a> 881 </li> 882 883 </ul> 884 </li> 885 886 </ul> 887 </li> 888 889 890<!-- cyb_snippet components/side_menu/collection_all end --> 891 892 893 894 895 896 <li class="qk-pos--rel qk-pd--0"> 897 898 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/blogs/news">ææ°åæ </a> 899 900 </li> 901 902 903 904 905 906 <li class="qk-pos--rel qk-pd--0"> 907 908 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/pages/about-us">éæ¼æå</a> 909 910 </li> 911 912 913 914 915 916 <li class="qk-pos--rel qk-pd--0"> 917 918 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/contact">客æä¸å¿</a> 919 920 </li> 921 922 923 924 925 926 <li class="qk-pos--rel qk-pd--0"> 927 928 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/blogs">é¨è½æ ¼ç¸½è¦½</a> 929 930 </li> 931 932 933 934 935 936 <li class="qk-pos--rel qk-pd--0"> 937 938 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/pages/mooooæå¡">Mooooæå¡</a> 939 940 </li> 941 942 943 944 945 946 <li class="qk-pos--rel qk-pd--0"> 947 948 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/pages/é£²åªæ ¼ï½æ©è½åªæ ¼é£²"> é£²åªæ ¼ï½æ©è½åªæ ¼é£²</a> 949 950 </li> 951 952 953
954<script> 955 $('button a').on('click', function(e) {e.stopPropagation()}); 956</script>
956 957 958<!-- cyb_snippet components/side_menu/menu end --> 959 960 961 962 963 <li class="category_account-title qk-bd--nav_menu_text qk-fs--breadcrumb qk-text--nav_menu_text qk-bd_y--default qk-fw--500">帳æ¶</li> 964 <li class="qk-pos--rel qk-pd--0"> 965 <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none"> 966 <a href="/account/index" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">æç帳æ¶</a> 967 </div> 968 </li> 969 <li class="qk-pos--rel qk-pd--0"> 970 <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none"> 971 <a href="/account/orders" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">è¨å®æ¥è©¢</a> 972 </div> 973 </li> 974 <li class="qk-pos--rel qk-pd--0"> 975 <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none"> 976 <a href="/account/logout" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">æå¡ç»åº</a> 977 </div> 978 </li> 979 <li class="qk-pos--rel qk-pd--0"> 980 <a href="/account/login"> 981 <div class="customer-not-login-menu qk-bd--nav_menu_text qk-bg--nav_menu_text customer-not-login-menu_login qk-display--il_flex qk-justify--center qk-align--center qk-w--100 qk-text--center "> 982 <span class="qk-text--nav_menu_bg qk-fw--500 qk-fs--body"> 983 æå¡ç»å ¥ 984 </span> 985 </div> 986 </a> 987 </li> 988 <li class="qk-pos--rel qk-pd--0"> 989 <a href="/account/signup"> 990 <div class="customer-not-login-menu qk-bd--nav_menu_text customer-not-login-menu_signup qk-display--il_flex qk-justify--center qk-align--center qk-w--100 qk-text--center qk-bd--nav_menu_text qk-bd--default"> 991 <span class="qk-text--nav_menu_text qk-fs--body qk-fw--500"> 992 è¨»åæ°æå¡ 993 </span> 994 </div> 995 </a> 996 </li> 997 998 999 1000 1001 1002</ul> 1003 1004<link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/sidebar-3a2e378145f8a165.css' rel='stylesheet' type='text/css' media='all' /> 1005
1006<script> 1007 $(document).ready(function(){ 1008 // å´éé¸å® 1009 if ($('.drawer').length){ 1010 $('.drawer').drawer(); 1011 $('.bt-toggle').click(function(){ 1012 setTimeout(function(){ 1013 $('.drawer')[0].iScroll.refresh() 1014 },500) 1015 }) 1016 } 1017 }); 1018</script>
1018 1019 1020 1021<!-- cyb_snippet side_menu end --> 1022 1023 </div> 1024 </nav> 1025 <!-- Bottombar --> 1026 1027 1028 </span> 1029 1030<div id="index-popular-tags"></div> 1031 1032<style id="timer_color"> 1033 :root { 1034 1035 --timer_text: #c39d6f; 1036 1037 1038 1039 --timer_bg: #2b2b6e; 1040 1041 } 1042</style> 1043
1044<script> 1045 window.language = {"account_name":"æ¶å","add_cart_error_try_again":"å å ¥è³¼ç©è»æèª¤ï¼è«éæ°å試","add_to_cart":"å å ¥è³¼ç©è»","addcart_rate_limit_desc":"ç§å¾å¯åè©¦ä¸æ¬¡ï¼å»ºè°æ¨åç卿¤é é¢ã","address1":"詳細é貨å°åï¼è·¯/å··/å¼/è/æ¨","all_filters":"ææç¯©é¸æ¢ä»¶","apply_fail":"ç³è«å¤±æ","apply_return":"é貨ç³è«","apply_return_success":"æ¨çé貨ç³è«å·²æç«","apply_success":"ç³è«æå","arrive_soon":"å³å°å°è²¨","articles_total":"å ± {{ totalArticleCounts }} ç¯æç« ","bank_account":"éè¡å¸³è","bank_branch_name":"åè¡å稱","bonus_redemption":"ç´ å©æè³¼","cancel":"åæ¶","cart_price_total":"çµå¸³éé¡ç´","check_order":"è¨å®æ¥è©¢","choose_branch_bank":"è«é¸æåè¡","choose_return_reason":"è«é¸æé貨åå ","city":"åå¸","common_price":"å®å¹: ","comply_group_number":"符å {{comply_group_number}} çµåªæ ï¼","confirm":"確èª","confirm_return":"ç³è«é貨","confirm_submit":"確å®éåº","congratulations_for_verify_mobile_success":"æåï¼æ¨å·²æåé©èæ¨çææ©ï¼","contact_form":"è¯çµ¡æå","continue_reading":"ç¹¼çºé±è®","country_placeholder":"è«é¸æåå®¶","coupon_free_shipping":"å é叿æµ","coupon_items":"åªæ 叿æ£é ç®","date_error":"æ¥æé¯èª¤","default_sort":"é è¨æåº","deliver_error":"å¯éååé¯èª¤","discount_detail":"ææ£æç´°","email":"é»åéµä»¶","email_placeholder":"è«è¼¸å ¥æ¨çé»åéµä»¶ï¼ä¾ï¼[email protected]","enter_account_name":"è«è¼¸å ¥æ¶å","enter_bank_account":"è«è¼¸å ¥éè¡å¸³è","enter_return_reason":"è«å¡«å¯«é貨åå ...","error_message":"é©èç°¡è¨ç¼çé¯èª¤ï¼è«ç¨å¾å試ã","fail_operation":"æä½å¤±æ!","filter_button":"篩é¸","filter_no_result":"徿±æï¼ç¡åå符åç¯©é¸æ¢ä»¶","free":"å è²»","gift_price":"å è³¼å¹","gift_purchase":"滿é¡/ä»¶è´","go_check_email":"è«è³ä¿¡ç®±æ¶åä¿¡ä»¶","group_percent_discount":"çµåå §ååæ{{discount}}æ","has_stock":"å°æåº«å ","include_discount_and_shipping_fee":"å«åªæ ææ£èéè²»","invalid_email":"é䏿¯ææçé»åéµä»¶","invalid_name":"å§åçºå¿ å¡«","invalid_phone_number":"è¯çµ¡é»è©±çºå¿ å¡«","invalid_question_content":"åé¡å §å®¹çºå¿ å¡«","keep_shopping":"ç¹¼çºè³¼ç©","keyin_address1":"è«å¡«å¯«è©³ç´°é貨å°åï¼è·¯/å··/å¼/è/æ¨","keyin_city":"è«è¼¸å ¥åå¸","keyin_zip":"è«è¼¸å ¥éµéåè","less_then_one":"æ¸éä¸å¾å°æ¼1","line_item_quantity":"æ¸éï¼{{ lineItemQuantity }}","literal_points":"é»","login_btn":"æå¡ç»å ¥","mail_send_fail":"ä¿¡ä»¶å¯é失æ","message_confirmation_token_error":"ç°¡è¨é©è碼æèª¤","messenger_error_please_try_again":"ç°¡è¨å¯éç¼çé¯èª¤ï¼è«ç¨å¾å試ã","mobile_number_error":"ææ©è碼æèª¤","name":"å§å","name_placeholder":"è«è¼¸å ¥æ¨çå§å","new_password_is_sent":"å·²éåºæ°å¯ç¢¼","new_product_defect":"æ°åççµ","nn_collection_save_more_money_title":"å¯äº«ï¼è²· {{quantity}} ä»¶ {{price}} å åªæ ","no_stock":"庫åä¸è¶³","notification_enabled":"å·²ç»è¨è£è²¨éç¥","notify_me_when_stock_arrives":"å·²å®å®ï¼è²¨å°éç¥æ","onsale":"ç¹å¹","order_date":"è¨è³¼æ¥æ","order_number":"è¨å®ç·¨è","order_retrun_confirm":"æ¨ç¢ºèªè¦ç³è«é貨?","ori_price":"åå¹","others":"å ¶ä»","over_cart_limit":"æ¸éè¶ é購買ä¸é","over_product_quantity":"æ¸éè¶ é庫å","over_stock_count":"åå庫åå©é¤ {{ count }} ä»¶","over_stock_quantity":"è¶ éåº«åæ¸é","phone_number":"è¯çµ¡é»è©±","phone_number_placeholder":"è«è¼¸å ¥è¯çµ¡é»è©±","piece":"{{quantity}} ä»¶","please_choose_bank":"è«é¸æéè¡","please_choose_product":"è«é¸æå忬¾å¼","please_choose_variant":"è«é¸æå忬¾å¼","please_enter_number":"è«è¼¸å ¥æ¸å","please_reselect":"è«éæ°è¼¸å ¥ç¯©é¸","please_send_and_confirm_verify_code":"è«å ç¼é並確èªç°¡è¨é©è碼","pre_order":"é è³¼åå","price_asc":"广 ¼ç±ä½å°é«","price_desc":"广 ¼ç±é«å°ä½","price_filter":"广 ¼","price_includes_tax":"(å §å«æ¶è²»ç¨ ï¼{{ tax }})","product_content_defect":"ååå §å®¹ä¸å ¨","product_defect":"ååæç¼ºé·","product_limit_buy":"æ¤ååéè³¼ {{ count }} ä»¶","product_rate_limit_btn":"éæ°é²å ¥ååé ","product_rate_limit_desc":"ç§å¾å¯éæ°é²å ¥ååé ï¼å»ºè°æ¨åç卿¤é é¢ã","product_rate_limit_title":"ç®åæ¶è³¼äººæ½®ç¾å¤ï¼è«èå¿çå","product_rate_limit_warn":"è¥é¢éæ¤é é¢ï¼å¯è½æå»¶é·çå¾ æéã","product_sold":"å·²é·å®ï¼{{ productSold }}","products_total":"å ± {{ totalProductCounts }} ä»¶åå","quantity":"æ¸éï¼","quantity_over_product_stock":"æ¸éè¶ éåå庫å","question_content":"åé¡å
1045
§å®¹","question_content_placeholder":"è«è¼¸å
¥åé¡å
§å®¹","question_submit_fail":"ç¼çåé¡ï¼è«ç¨å¾å試","question_submit_success":"åé¡å·²æåéåºï¼æåå°ç¡å¿«èæ¨è¯ç¹«","question_type":"åé¡é¡å","reached_favorable":"å·²éåªæ ","recent_days_sold_desc":"æ¬é±ç±è³£","reenter_password_still_error":"éè¤è¼¸å
¥å¯ç¢¼æèª¤","refund":"鿬¾éé¡","refund_account":"鿬¾å¸³æ¶","refund_info":"鿬¾è³è¨","refund_invoice_check":"æ¬äººåæç¼ç¥¨ä½å»¢æãçæ¥äººé·è²¨éåé²è²¨éåºè²¨ææè®èæå®ãå°å
¨æ¬ç±{{ envoiceCompanyName }}èçï¼ä»¥å©å é鿬¾ä½æ¥ã妿é貨/æè®ï¼å°ç´æ¥éç«æè®å®ä¸å³è³è²¡æ¿é¨é»åç¼ç¥¨æ´åæåå¹³å°åèã","resend_verify_code":"éç¼é©è碼","reset_all_filters":"æ¸
餿æç¯©é¸","reset_filter_button":"æ¸
é¤ç¯©é¸","return":"è¿å","return_address":"é貨å°å","return_email_notification":"é貨ç³è«ä¿¡å·²å¯è³æ¨çä¿¡ç®±","return_info":"é貨è³è¨","return_instruction":"é貨說æ","return_msg_Australia":"1. 妿¶å°ååå¾ï¼ç¼ç¾æççµæç ´æï¼éè¦ç³è«æè²¨æé款ï¼è«ç¡éè³ãæç帳æ¶ãï¼é»æãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®ä¸ï¼é»æãç³è«é貨ãã\u003cbr\u003e 2. æ¶å°é貨ç³è«å¾ï¼æåæè¯ç¹«æ¨ï¼ä¸¦ååé貨æµç¨ãå¦ææ¨æä»»ä½é貨åé¡ï¼æ¨å¯ä»¥å¨ãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®æç´°ï¼çä¸åçç´éã è«ä¸è¦èªè¡é貨ã\u003cbr\u003e 3. éæè²¨æï¼è«ä¿æåå
è£å®æ´ï¼å
æ¬è³¼è²·çååãé
ä»¶ãè´åçï¼ã\u003cbr\u003e 4. 符åéè²¨è³æ ¼å¾ï¼ååºæåä¾ç
§æ¨ç仿¬¾æ¹å¼é款ã\u003cbr\u003e 5. 詳細çé貨è¦å®èæµç¨èªªæï¼è«å鱿¬åºçé貨æ¿çã\u003cbr\u003e","return_msg_Japan":"1. 妿¶å°ååå¾ï¼ç¼ç¾æççµæç ´æï¼éè¦ç³è«æè²¨æé款ï¼è«ç¡éè³ãæç帳æ¶ãï¼é»æãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®ä¸ï¼é»æãç³è«é貨ãã\u003cbr\u003e 2. æ¶å°é貨ç³è«å¾ï¼æåæè¯ç¹«æ¨ï¼ä¸¦ååé貨æµç¨ãå¦ææ¨æä»»ä½é貨åé¡ï¼æ¨å¯ä»¥å¨ãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®æç´°ï¼çä¸åçç´éã è«ä¸è¦èªè¡é貨ã\u003cbr\u003e 3. éæè²¨æï¼è«ä¿æåå
è£å®æ´ï¼å
æ¬è³¼è²·çååãé
ä»¶ãè´åçï¼ã\u003cbr\u003e 4. 符åéè²¨è³æ ¼å¾ï¼ååºæåä¾ç
§æ¨ç仿¬¾æ¹å¼é款ã\u003cbr\u003e 5. 詳細çé貨è¦å®èæµç¨èªªæï¼è«å鱿¬åºçé貨æ¿çã\u003cbr\u003e","return_msg_Japan_to_Taiwan":"1. 妿¶å°ååå¾ï¼ç¼ç¾æççµæç ´æï¼éè¦ç³è«æè²¨æé款ï¼è«ç¡éè³ãæç帳æ¶ãï¼é»æãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®ä¸ï¼é»æãç³è«é貨ãã\u003cbr\u003e 2. æ¶å°é貨ç³è«å¾ï¼æåæè¯ç¹«æ¨ï¼ä¸¦ååé貨æµç¨ãå¦ææ¨æä»»ä½é貨åé¡ï¼æ¨å¯ä»¥å¨ãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®æç´°ï¼çä¸åçç´éã è«ä¸è¦èªè¡é貨ã\u003cbr\u003e 3. éæè²¨æï¼è«ä¿æåå
è£å®æ´ï¼å
æ¬è³¼è²·çååãé
ä»¶ãè´åçï¼ã\u003cbr\u003e 4. 符åéè²¨è³æ ¼å¾ï¼ååºæåä¾ç
§æ¨ç仿¬¾æ¹å¼é款ã\u003cbr\u003e 5. 詳細çé貨è¦å®èæµç¨èªªæï¼è«å鱿¬åºçé貨æ¿çã\u003cbr\u003e","return_msg_SEA":"1. 妿¶å°ååå¾ï¼ç¼ç¾æççµæç ´æï¼éè¦ç³è«æè²¨æé款ï¼è«ç¡éè³ãæç帳æ¶ãï¼é»æãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®ä¸ï¼é»æãç³è«é貨ãã\u003cbr\u003e 2. æ¶å°é貨ç³è«å¾ï¼æåæè¯ç¹«æ¨ï¼ä¸¦ååé貨æµç¨ãå¦ææ¨æä»»ä½é貨åé¡ï¼æ¨å¯ä»¥å¨ãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®æç´°ï¼çä¸åçç´éã è«ä¸è¦èªè¡é貨ã\u003cbr\u003e 3. éæè²¨æï¼è«ä¿æåå
è£å®æ´ï¼å
æ¬è³¼è²·çååãé
ä»¶ãè´åçï¼ã\u003cbr\u003e 4. 符åéè²¨è³æ ¼å¾ï¼ååºæåä¾ç
§æ¨ç仿¬¾æ¹å¼é款ã\u003cbr\u003e 5. 詳細çé貨è¦å®èæµç¨èªªæï¼è«å鱿¬åºçé貨æ¿çã\u003cbr\u003e","return_msg_Taiwan":"1. æ¶å°ååå¾å¦æç¼ç¾ççµæç ´æçæ³ï¼éè¦è¾¦çææè²¨ï¼è«æ¼æ¶å°è²¨å¾7天å
§ç»å
¥ãæç帳æ¶ãé é¢é»é¸ãç³è«é貨ãã\u003cbr\u003e 2. æ¶å°ååå¾å¯äº«æ7天å
è²»éè³
1045æï¼å«ä¾åæ¥ï¼ãéæè²¨æè«ä¿æåå
è£ååç宿´ï¼å
å«è³¼è²·ååï¼éä»¶ï¼è´åçï¼ã\u003cbr\u003e 3. æ¶å°ç³è«å¾ï¼æåå°èæ¨è¯ç¹«ååååãè¥æä»»ä½é貨åé¡ï¼æ¨å¯ä»¥å¨ãè¨å®æç´°ãä¸ï¼é»é¸ãæè¦è©¢åãï¼è«å¿èªè¡å¯åååã\u003cbr\u003e 4. ç¶ä½ ç³è«é貨å¾ï¼è«åå°æ¬ç³è«å®é¨ååä¸èµ·å¯åã\u003cbr\u003e 5. æ¶å°æ¨çé貨åå並審æ¥ééå¾ï¼å°æ¼7åå·¥ä½å¤©å
§é款è³ä½ ç鿬¾å¸³æ¶ã\u003cbr\u003e","return_msg_USA":"1. 妿¶å°ååå¾ï¼ç¼ç¾æççµæç ´æï¼éè¦ç³è«æè²¨æé款ï¼è«ç¡éè³ãæç帳æ¶ãï¼é»æãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®ä¸ï¼é»æãç³è«é貨ãã\u003cbr\u003e 2. æ¶å°é貨ç³è«å¾ï¼æåæè¯ç¹«æ¨ï¼ä¸¦ååé貨æµç¨ãå¦ææ¨æä»»ä½é貨åé¡ï¼æ¨å¯ä»¥å¨ãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®æç´°ï¼çä¸åçç´éã è«ä¸è¦èªè¡é貨ã\u003cbr\u003e 3. éæè²¨æï¼è«ä¿æåå
è£å®æ´ï¼å
æ¬è³¼è²·çååãé
ä»¶ãè´åçï¼ã\u003cbr\u003e 4. 符åéè²¨è³æ ¼å¾ï¼ååºæåä¾ç
§æ¨ç仿¬¾æ¹å¼é款ã\u003cbr\u003e 5. 詳細çé貨è¦å®èæµç¨èªªæï¼è«å鱿¬åºçé貨æ¿çã\u003cbr\u003e","return_product":"é貨åå","return_reason":"é貨åå ","save_more_money_discount":"å¯äº« {{discount}} æåªæ ","save_more_money_dollar":"å¯ç {{dollar}}","search_article_label":"æç« æå°çµæ ({{ totalArticleCounts }})","search_no_result":"徿±æï¼æ¾ä¸å° {{ queryString }} è«éæ°è¼¸å
¥æå°ã","search_product_label":"ååæå°çµæ ({{ totalProductCounts }})","search_total":"æå° {{ queryString }} çµæå
± {{ totalSearchCount }} ç","select_sort_by":"鏿æåºæ¹å¼","sell_from_asc":"ä¸å¸æ¥æèå°æ°","sell_from_desc":"ä¸å¸æ¥ææ°å°è","send_too_many_times_try_again_later":"ç¼é次æ¸éå¤ï¼è«ç¨å¾å試","sending_msg_few_minutes_get":"ç°¡è¨ç¼éä¸ï¼å¹¾åé徿¨å°æ¶å°é©è碼","shipping_fee":"éè²»","sold_out":"å·²å®å®","state_placeholder":"è«é¸æå·/ç","submit":"éåº","subtotal":"å°è¨","success_operation":"æä½æå!","successfully_copy_tracking_number":"å·²æåè¤è£½ä½ çç©æµå®è","system_busy_try_again":"系統å¿ç¢ï¼è«ç¨å¾å試","tax":"ç¨
é¡","thanks_for_advise":"è¬è¬æ¨çå¯
1045¶è²´æè¦","thanks_you_have_signed_up":"è¬è¬æ¨å·²è¨»å","total_bonus_redemption":"ç¸½ç´ å©æè³¼é»æ¸","tw_city_placeholder":"è«é¸æç¸£å¸","tw_district_placeholder":"è«é¸æéé®å¸å","unreach_favorable":"æªéåªæ ","verification_error_please_correct":"é©èæèª¤è«ä¿®æ£","verify_success":"é©èç¢¼ç¢ºèªæå","view_product":"æ¥çåå","vip_shipping_free":"VIPå éè²»","zip":"éµéåè","suggested_range":"建è°åé:","periodic_order_label":"宿å®é¡","check_account_length":"è«æª¢æ¥éè¡å¸³èé·åº¦"} 1046 $(document).ready(function(){ 1047 if(window.location.pathname != '' && window.location.pathname != '/' ){ 1048 document.getElementById('index-popular-tags').style.display = 'none' 1049 } 1050 // åæ¸è¨æ 1051 1052 1053 function adjustContentTop() { 1054 1055 const isNavbarTransparent = false; 1056 let headerHeight = $("#header").outerHeight(); 1057 if (isNavbarTransparent && $('#template').width() >= 992) { 1058 headerHeight -= $('.computer_nav').height(); 1059 } 1060 const floatFilterHeight = $('#float-filter').innerHeight() || 0; 1061 $("body").css({ 1062 "padding-top": (headerHeight - floatFilterHeight) + "px", 1063 }); 1064 } 1065 1066 window.adjustContentTop = adjustContentTop; 1067 1068 // navbarè¨å®éæ 1069 1070 1071 // Call it first once DOM is ready to prevent CLS 1072 adjustContentTop(); 1073 1074 // å»¶é²åå§åï¼çå¾ app banner åå§å宿 1075 $(window).on("resize", adjustContentTop); 1076 1077 // ä½¿ç¨ setTimeout ç¢ºä¿ banner çæ å·²ç¶ç¢ºå® 1078 $(window).on("load", function() { 1079 setTimeout(function() { 1080 adjustContentTop(); 1081 }, 200); // 給 banner è¶³å¤ æéåå§å 1082 }); 1083 1084 $('img.header_banner').on('load', adjustContentTop); 1085 1086 window.renderNavbarSection('.main_nav', { 1087 navbarCollections: [{"title":"ææåå","url":"/collections/frontpage","products":[{"title":"å層è´è¶é ¥ ï½ èèå£å³","url":"/products/å層è´è¶é ¥-ï½-æ°å-èèå£å³"},{"title":"å層è´è¶é ¥ ï½ çç奶ç³","url":"/products/âçç奶ç³ï¼å層è´è¶é ¥"},{"title":"å層è´è¶é ¥ ï½ç¦ç³æ´è¥","url":"/products/å層è´è¶é ¥-ï½ç¦ç³æ´è¥"},{"title":"å層è´è¶é ¥ ï½ç¶å ¸åå³","url":"/products/ç¶å ¸å層è´è¶é ¥"},{"title":"å層è´è¶é ¥ ï½ç¶å","url":"/products/âç¶å-å層è´è¶é ¥"},{"title":"å·´æ¯å ä¹³é ªèç³ ï½ èèèæå¨å£«å¿","url":"/products/âèèèæå¨å£«å¿"},{"title":"å·´æ¯å ä¹³é ªèç³ï½ç¶å ¸åå³","url":"/products/å·´æ¯å ä¹³é ªèç³-ï½basque-cheesecake"},{"title":"æè¢","url":"/products/æè¢"},{"title":"ç´ççä¹³å· ï½ å¡å£«é","url":"/products/âå¡å£«é-çä¹³æ²"},{"title":"ç´ççä¹³å· ï½ åå³","url":"/products/åå³ç´ççä¹³æ²"},{"title":"è²»åéª Financier ï½ 6種å£å³","url":"/products/è²»åéªèç³"},{"title":"è²»åéªFinancier ï½ ç¦®ç","url":"/products/è²»åéªèç³-20240427180544"}]},{"title":"çä¹³æ²ç³»å","url":"/collections/çä¹³æ²ç³»å","products":[{"title":"ç´ççä¹³å· ï½ å¡å£«é","url":"/products/âå¡å£«é-çä¹³æ²"},{"title":"ç´ççä¹³å· ï½ åå³","url":"/products/åå³ç´ççä¹³æ²"}]},{"title":"è²»åéªç³»å","url":"/collections/è²»åéªç³»å","products":[{"title":"ç«èçæ è²»åéªï½ 禮ç","url":"/products/ç«èçæ è²»åéª-禮ç"},{"title":"è²»åéª Financier ï½ 6種å£å³","url":"/products/è²»åéªèç³"},{"title":"è²»åéªFinancier ï½ ç¦®ç","url":"/products/è²»åéªèç³-20240427180544"}]},{"title":"ä¹³é ªèç³ç³»å","url":"/collections/ä¹³é ªèç³ç³»å","products":[{"title":"å·´æ¯å ä¹³é ªèç³ ï½ è±å¼ä¼¯çµç´ è¶","url":"/products/å·´æ¯å ä¹³é ªèç³-ï½-è±å¼ä¼¯çµç´ è¶"},{"title":"å·´æ¯å ä¹³é ªèç³ ï½ èèèæå¨å£«å¿","url":"/products/âèèèæå¨å£«å¿"},{"title":"å·´æ¯å ä¹³é ªèç³ ï½å¤ªå¦ç³é¬","url":"/products/å·´æ¯å ä¹³é ªèç³-ï½å¤ªå¦ç³é¬"},{"title":"å·´æ¯å ä¹³é ªèç³ï½ç¶å ¸åå³","url":"/products/å·´æ¯å ä¹³é ªèç³-ï½basque-cheesecake"}]},{"title":"å層è´è¶é ¥ç³»å","url":"/collections/å層è´è¶é ¥ç³»å","products":[{"title":"å層è´è¶é ¥ ï½ èèå£å³","url":"/products/å層è´è¶é ¥-ï½-æ°å-èèå£å³"},{"title":"å層è´è¶é ¥ ï½ çç奶ç³","url":"/products/âçç奶ç³ï¼å層è´è¶é ¥"},{"title":"å層è´è¶é ¥ ï½ç¦ç³æ´è¥","url":"/products/å層è´è¶é ¥-ï½ç¦ç³æ´è¥"},{"title":"å層è´è¶é ¥ ï½ç¶å ¸åå³","url":"/products/ç¶å ¸å層è´è¶é ¥"},{"title":"å層è´è¶é ¥ ï½ç¶å","url":"/products/âç¶å-å層è´è¶é ¥"}]},{"title":"æè¢","url":"/collections/æè¢","products":[{"title":"æè¢","url":"/products/æè¢"}]}], 1088 navbarItems: [{"id":1234678,"title":"é¦é ","url":"/","item_type":"frontpage","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1234679,"title":"ååå表","url":"/collections/all","item_type":"collections_all","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1234680,"title":"ææ°åæ ","url":"/blogs/news","item_type":"http","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1234681,"title":"éæ¼æå","url":"/pages/about-us","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1234682,"title":"客æä¸å¿","url":"/contact","item_type":"contact","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1234683,"title":"é¨è½æ ¼ç¸½è¦½","url":"/blogs","item_type":"http","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1340969,"title":"Mooooæå¡","url":"/pages/mooooæå¡","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769599,"title":" é£²åªæ ¼ï½æ©è½åªæ ¼é£²","url":"/pages/é£²åªæ ¼ï½æ©è½åªæ ¼é£²","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":null}], 1089 settings: { 1090 menuDisplayStyle: "three_dimension_menu", 1091 pcLogoImgUrl: "//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzEzMDY1OTMwX0xPR08uanBnLmpwZWciXV0.jpeg?sha=3a6d167d435d3288", 1092 mobileLogoImgUrl: "//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L2F0dGFjaGVkX3Bob3Rvcy8xNzEzMDY1OTMwX0xPR08uanBnLmpwZWciXV0.jpeg?sha=3a6d167d435d3288", 1093 navbarDisplayStyle: "displayDefault", 1094 } 1095 } 1096 ); 1097 1098 1099 // for link menu 1100 const linkMenuElement = document.querySelector('.link-nav'); 1101 const data = [] 1102 data.forEach((item) => { 1103 const wrapper = document.createElement('a'); 1104 const link = document.createElement('ul'); 1105 1106 wrapper.href = item.url; 1107 link.textContent = item.title; 1108 link.classList.add('link-item'); 1109 1110 wrapper.appendChild(link); 1111 linkMenuElement.appendChild(wrapper); 1112 }); 1113 1114 // for safe-area space on iOS devices 1115 const userAgent = navigator.userAgent; 1116 const isIOS = /iPad|iPhone|iPod/.test(userAgent) && !window.MSStream; 1117 const isLiff = /Line\/[\d.]+/i.test(userAgent); 1118 const $mobileBottomBar = $('#mobile-bottom-bar'); 1119 1120 if ($mobileBottomBar.length && isIOS && isLiff) { 1121 $mobileBottomBar.addClass('is-ios-liff'); 1122 } 1123 }); 1124 document.addEventListener('DOMContentLoaded', function() { 1125 window.getCartAmount = function() { 1126 return parseInt($('.global-cart-count').html()); 1127 }; 1128 }); 1129</script>
1129 1130
1131<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/navbar-3a2e378145f8a165.js' type='text/javascript'></script>
vendor: 1 bytes, line 1131
1131
1132<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/currencies-3a2e378145f8a165.js' type='text/javascript'></script>
1132 1133<!-- cyb_snippet i18n_modal start --> 1134 1135 1136<!-- cyb_snippet i18n_modal end --> 1137<!-- cyb_snippet _load_fonts start -->
1138<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/load_fonts-3a2e378145f8a165.js' type='text/javascript'></script>
vendor: 1 bytes, line 1138
1138
1139<script> 1140 document.addEventListener('DOMContentLoaded', function() { 1141 window.loadFontSetting("{'ja':{'value':'Noto Sans JP'},'zh-TW':{'value':'Noto Sans TC'},'en':{'value':'Noto Sans TC'},'zh-CN':{'value':'Noto Sans TC'}}") 1142 }) 1143</script>
1143 1144 1145<!-- cyb_snippet _load_fonts end --> 1146<!-- cyb_snippet _custom_icon start -->
1147<script src='//cdn1-next.cybassets.com/frontend/shop/navIcon-3a2e378145f8a165.js' type='text/javascript'></script>
1147 1148
1149<script> 1150 (function() { 1151 const iconUrlMap = new Map([ 1152 ['custom_icon_type_home', null], 1153 ['custom_icon_type_tracking_items', null], 1154 ['custom_icon_type_account', null], 1155 ['custom_icon_type_cart', null], 1156 ['custom_icon_type_search', null], 1157 ['custom_icon_type_menu', null] 1158 ]); 1159 const elements = document.querySelectorAll('[data-icon-type]'); 1160 elements.forEach((element, index) => { 1161 const iconAttributes = element.getAttribute('data-icon-type'); 1162 1163 const uniqueId = `icon_${iconAttributes}_${index}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`; 1164 element.id = uniqueId; 1165 window.renderNavCustomIcon(`#${uniqueId}`, { 1166 navIconStyle: "icon_type_default", 1167 customIconUrl: iconUrlMap.get(iconAttributes) || '', 1168 iconAttributes: iconAttributes, 1169 currentTemplate: "product", 1170 }); 1171 }); 1172 })(); 1173</script>
1173 1174 1175<!-- cyb_snippet _custom_icon end --> 1176 1177 1178 1179 1180 1181
1181<script src='//cdn1-next.cybassets.com/frontend/shop/announcementBar-3a2e378145f8a165.js' type='text/javascript'></script>
1181 1182 1183 1184 1185 1186 1187
1187<script> 1188 $(document).ready(function() { 1189 window.renderAnnouncementBar('#announcement-bar', { 1190 sectionId: "announcement_bar", 1191 isIndex: false, 1192 }); 1193 }); 1194 </script>
1194 1195 1196 1197 1198 1199 1200 1201 <!-- template --> 1202 <div id="template" style="flex:1 0 auto; background-color: var(--theme_bg);"> 1203 <!-- cyb_snippet breadcrumb start --> 1204 1205<link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/breadcrumb-3a2e378145f8a165.css' rel='stylesheet' type='text/css' media='all' /> 1206 1207 1208<div id="site_path" class="qk-bd_b--default qk-bd--product_border"> 1209 <!-- mobile: toggle button (hidden on PC) --> 1210 <div class="qk-container qk-hidden--pc"> 1211 <div class="breadcrumb qk-bg--theme_bg qk-pd_x--0 qk-mg--0 qk-fs--breadcrumb"> 1212 <button 1213 class="bt-toggle qk-bg--theme_bg qk-pd_x--0 qk-w--100 qk-text--left qk-bd--none qk-pos--rel collapsed" 1214 data-toggle="collapse" 1215 data-target=".breadcrumb-content" 1216 > 1217 <a href="/" class="qk-text--text"> 1218 <i class="fas fa-home"></i> 1219 </a> 1220 </button> 1221 </div> 1222 </div> 1223 <!-- breadcrumb nav: single DOM, PC always visible, mobile as collapse dropdown --> 1224 <div class="breadcrumb-content qk-bg--theme_bg collapse"> 1225 <div class="qk-container"> 1226 <!-- cyb_snippet breadcrumb_nav start --> 1227<!-- 主é¡çå麵å å± --> 1228<nav aria-label="breadcrumb"> 1229 <ol 1230 class="breadcrumb qk-bg--theme_bg qk-pd_x--0 qk-mg--0 qk-fs--breadcrumb" 1231 itemscope 1232 itemtype="http://schema.org/BreadcrumbList" 1233 > 1234 1235 <li 1236 class="breadcrumb-item 1237 1238 " 1239 itemprop="itemListElement" 1240 itemscope itemtype="http://schema.org/ListItem"> 1241 <!-- home --> 1242 1243 <a href="/" class="qk-text--text" itemprop="item"> 1244 <i class="fas fa-home"></i> 1245 <span class="qk-display--none" itemprop="name">é¦é </span> 1246 </a> 1247 <!-- account --> 1248 1249 <meta itemprop="position" content="1"/> 1250 </li> 1251 1252 <li 1253 class="breadcrumb-item 1254 1255 " 1256 itemprop="itemListElement" 1257 itemscope itemtype="http://schema.org/ListItem"> 1258 <!-- home --> 1259 1260 1261 <a href="#" itemprop="item" style="display: none;"> 1262 <span itemprop="name">åå</span> 1263 </a> 1264 1265 1266 <span class="qk-text--text" data-breadcrumb-links> 1267 <a href='/collections/å層è´è¶é ¥ç³»å' class='qk-text--text' itemprop='item'><span itemprop='name'>å層è´è¶é ¥ç³»å</span></a>, <a href='/collections/frontpage' class='qk-text--text' itemprop='item'><span itemprop='name'>ææåå</span></a> 1268 </span> 1269 1270 <!-- product --> 1271 1272 <meta itemprop="position" content="2"/> 1273 </li> 1274 1275 <li 1276 class="breadcrumb-item 1277 1278 active " 1279 itemprop="itemListElement" 1280 itemscope itemtype="http://schema.org/ListItem"> 1281 <!-- home --> 1282 1283 <a href="/products/å層è´è¶é ¥-ï½-æ°å-èèå£å³" class="qk-text--text" itemprop="item"> 1284 <span itemprop="name">å層è´è¶é ¥ ï½ èèå£å³</span> 1285 </a> 1286 <!-- search --> 1287 1288 <meta itemprop="position" content="3"/> 1289 </li> 1290 1291 </ol> 1292</nav>
1293<script> 1294 $(document).ready(function () { 1295 if (!window.liquidHelper || !window.liquidHelper.hasBreadcrumbReferrerEnabled) return; 1296 1297 var $collections = $('[data-breadcrumb-links]'); 1298 if (!$collections.length) return; 1299 1300 var refMatch = document.referrer.match(/\/collections\/([^/?#]+)/); 1301 if (!refMatch || refMatch[1] === 'all') return; 1302 1303 var referrerHandle = decodeURIComponent(refMatch[1]); 1304 1305 function getCollectionHandle(url) { 1306 if (!url) return null; 1307 try { 1308 var pathname = new URL(url, location.origin).pathname; 1309 var parts = pathname.split('/'); 1310 var idx = parts.indexOf('collections'); 1311 if (idx === -1 || !parts[idx + 1]) return null; 1312 return decodeURIComponent(parts[idx + 1]); 1313 } catch (e) { 1314 return null; 1315 } 1316 } 1317 1318 var $link = $collections.find('a').filter(function () { 1319 return getCollectionHandle(this.href) === referrerHandle; 1320 }); 1321 1322 if ($link.length) { 1323 $collections.siblings('a.qk-text--accent[href="#"]').remove(); 1324 $collections.empty().append($link); 1325 } 1326 }); 1327</script>
1327 1328 1329<!-- cyb_snippet breadcrumb_nav end --> 1330 </div> 1331 </div> 1332</div> 1333 1334 1335<!-- cyb_snippet breadcrumb end --> 1336 1337<div id="img"></div> 1338 1339 1340 1341 1342
1343<script> 1344 var gallery_img = undefined; 1345 document.addEventListener("DOMContentLoaded", function(){ 1346 gallery_img = renderGallery( 1347 '#img', 1348 { 1349 urls: ["//cdn-general.cybassets.com/media/W1siZiIsIjI4MzA0L3Byb2R1Y3RzLzU3OTAzNzAyLzE3NTM1ODQ4OTlfZTdmMzY5MWY4YWE2MWM4NTk5NTYuanBlZyJdLFsicCIsInRodW1iIiwiMjA0OHgyMDQ4Il1d.jpeg?sha=425a27cd55866d49","//cdn-general.cybassets.com/media/W1siZiIsIjI4MzA0L3Byb2R1Y3RzLzU3OTAzNzAyLzE3NTM1ODQ4OTlfOTk3MDk0YjM3NzI5ZjIwZmQ3ZTMuanBlZyJdLFsicCIsInRodW1iIiwiMjA0OHgyMDQ4Il1d.jpeg?sha=3cf483e0677d73c7"], 1350 onSwiperGalleryChange: function (payload) { 1351 var eventPayload = Object.assign({ galleryName: "img" }, payload); 1352 $(document).trigger('swiper-gallery-change', [eventPayload]); 1353 }, 1354 }, 1355 ); 1356 }); 1357</script>
1357 1358 1359<div id="product" class="product"> 1360 <div class="qk-container"> 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370<div id="product_info" class="product_info qk-display--grid" data-purchase-eligibility='{"required":false,"eligible":true,"status":"eligible"}' data-hide-price="false" data-sales-mode-purchasable="true"> 1371 <!-- product image start --> 1372 <div id="variant_photos" class="variant_photos"> 1373 1374 1375 1376 1377 <variant-photos-block 1378 :product-photos-json="'[{\'id\':29212630,\'imageUrl\':\'//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L3Byb2R1Y3RzLzU3OTAzNzAyLzE3NTM1ODQ4OTlfZTdmMzY5MWY4YWE2MWM4NTk5NTYuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=328d757fa9b00aa8\',\'imageMaxUrl\':\'//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L3Byb2R1Y3RzLzU3OTAzNzAyLzE3NTM1ODQ4OTlfZTdmMzY5MWY4YWE2MWM4NTk5NTYuanBlZyJdLFsicCIsInRodW1iIiwiMjA0OHgyMDQ4Il1d.jpeg?sha=425a27cd55866d49\'}, {\'id\':29212631,\'imageUrl\':\'//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L3Byb2R1Y3RzLzU3OTAzNzAyLzE3NTM1ODQ4OTlfOTk3MDk0YjM3NzI5ZjIwZmQ3ZTMuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=cd4165e66d6ea415\',\'imageMaxUrl\':\'//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L3Byb2R1Y3RzLzU3OTAzNzAyLzE3NTM1ODQ4OTlfOTk3MDk0YjM3NzI5ZjIwZmQ3ZTMuanBlZyJdLFsicCIsInRodW1iIiwiMjA0OHgyMDQ4Il1d.jpeg?sha=3cf483e0677d73c7\'}]'" 1379 :display-product-images-color=false 1380 :product-id="57903702" 1381 product-title="å層è´è¶é ¥ ï½ èèå£å³" 1382 1383 /> 1384 </div> 1385 <!-- product image end --> 1386 <!-- product content start --> 1387 <div id="product_content" class="product_content qk-display--flex" data-tracking-variant-ids="null"> 1388 1389 <!-- æ¨é¡ --> 1390 <div class="product_title"> 1391 <h1 class="qk-text--heading qk-fs--hd1 qk-fw--bold qk-mg--0">å層è´è¶é ¥ ï½ èèå£å³</h1> 1392 </div> 1393 1394 <!-- ç°¡è¿° --> 1395 1396 <div class="product_brief qk-text--text qk-fs--body"> 1397 天ç¶èèèå19èç¼é µå¥¶æ²¹ï¼é ¥ç®å±¤å±¤å çï¼ççåºè¿·äººèé¦èæ¿é奶é¦ã<br>é ¥èä¸è©ï¼çèä¸è©ï¼æ¯åå¾é»å¿èé禮çåªé 鏿ã<br><br>ð¯ãèèå層è´è¶é ¥ç¦®çã<br>禮çå §å®¹ç©ï¼<br>èèè´è¶é ¥ââºâ x16ç 1398 </div> 1399 1400 <!-- å» å,æ¨èª --> 1401 <div class="product_vendor_slogan qk-display--il_bk qk-align--center"> 1402 1403 1404 <span class="product_slogan qk-text--heading qk-fs--body">é ¥é²å¿è£¡ççï¼ä¸å±¤å±¤æ²èèé¦è奶é¦</span> 1405 1406 </div> 1407 <!-- ååå®å¹ --> 1408 1409 1410 1411 <div 1412 class="product_price" 1413 id="price_title" 1414 data-discount-price-name="" 1415 data-discount-price-suggestion-name=""> 1416 <!-- 广 ¼title --> 1417 1418 1419 1420 1421 <!-- åå广 ¼ --> 1422 <div class="qk-display--il_bk"> 1423 <span class="qk-text--price price qk-fs--hd1 qk-fw--bold qk-display--il_bk qk-vert--mid"><span class="money_tag" data-currency-from="TWD" data-amount="480.0">NT$480</span></span> 1424 </div> 1425 <del class="qk-text--text qk-fs--body qk-pd_l--05 qk-display--il_bk qk-vert--mid"></del> 1426 1427 <!--æå¡å¯è¦å¹--> 1428 1429 </div> 1430 1431 <!-- ååsku --> 1432 1433 <div class="product_sku qk-text--heading qk-fs--body"> 1434 <span>ååç·¨è: 1435 </span> 1436 <span class="val"></span> 1437 </div> 1438 1439 <!-- ä¾è²¨çæ³ --> 1440 1441 <div class="product_inventory_policy qk-text--heading qk-fs--body"> 1442 <span>ä¾è²¨çæ³: 1443 </span> 1444 <span class="val">å°æåº«å</span> 1445 </div> 1446 1447 1448 <!-- å忬¾å¼ --> 1449 <div id="variant_options" class="variant_options"> 1450 <variant-options-block 1451 :product-api-url="'/products/å層è´è¶é ¥-ï½-æ°å-èèå£å³'" 1452 :sku="sku" 1453 :auto-select-variant-by-sku="false" 1454 :hide-other-variants-by-sku="false" 1455 :hide-single-variant-options="false" 1456 :sales-mode-purchasable="true" 1457 default-price="NT$480" 1458 default-compare-price="" 1459 :default-discounted="false" 1460 @set-choose="getSelectedDatas" 1461 @get-option-image="getCurrentImage"></variant-options-block> 1462 </div> 1463 1464 <div id="product-tags"></div> 1465 1466 <!-- product discounts_list start --> 1467 <div class="product_discounts_list force-show-scrollbar hide qk-bd--default qk-bd--product_border qk-pd--1 qk-of_y--auto qk-of_x--hidden "> 1468 <div class="list_block custom-scrollbar qk-of_x--hidden"> 1469 <p class="qk-text--heading qk-fs--body qk-mg_b--05">æ¤åååèçåªæ æ´»å</p> 1470 1471 </div> 1472 </div> 1473 <!-- product discounts_list end --> 1474 1475 <!-- è¦æ ¼,æ¸é --> 1476 1477 <div class="product_variant_quantity">
1478 <span class="product_quantity"> 1479 <div 1480 class="btn-group" 1481 role="group" 1482 aria-label="First group"> 1483 <button class="btn add-down qk-bd--product_border" type="button"></button> 1484 <input 1485 class="btn item-quantity qk-text--heading qk-bd--product_border" 1486 type="text" 1487 name="quantity" 1488 value="1" 1489 data-old-value="1"> 1490 <button class="btn add-up qk-bd--product_border" type="button"></button> 1491 </div> 1492 </span> 1493 </div> 1494 1495 <!-- 購買æé --> 1496 <div class="product_button qk-display--flex qk-hidden--mobile"> 1497 <!-- cyb_snippet _product_info_button start --> 1498<button class="btn addToCart btn_to_cart qk-btn qk-text--button qk-bd--button qk-btn--lg qk-pd--0 qk-flex--1 qk-fs--title" type="button" 1499 data-brand="" 1500 data-id="57903702" 1501 data-category="" 1502 data-list="å®ç¢å細覽" 1503 data-name="å層è´è¶é ¥ ï½ èèå£å³" 1504 data-quantity="1" 1505 data-position="å ¨é " 1506 1507 data-ga-custom-dimension="" 1508 data-ga-custom-value="" 1509 data-sku="">å å ¥è³¼ç©è»</button> 1510<button class="btn addToCart btn-quick_buy qk-btn qk-btn--primary qk-btn--lg qk-pd--0 qk-flex--1 qk-fs--title" type="button" data-buy="quick_buy" 1511 data-brand="" 1512 data-id="57903702" 1513 data-category="" 1514 data-list="å®ç¢å細覽" 1515 data-name="å層è´è¶é ¥ ï½ èèå£å³" 1516 data-quantity="1" 1517 data-position="å ¨é " 1518 1519 data-ga-custom-dimension="" 1520 data-ga-custom-value="" 1521 data-sku=""><span>ç«å³è³¼è²·</span></button> 1522 1523<!-- cyb_snippet _product_info_button end --> 1524 <!-- cyb_snippet _product_info_status_button start --> 1525<button class="btn btn_not_sale hidden qk-btn qk-btn--soldout qk-btn--lg qk-pd--0 qk-flex--1 qk-fs--title" type="button"> 1526 å°æªéè³£ 1527</button> 1528<button class="btn btn_login_to_view hidden qk-btn qk-btn--soldout qk-btn--lg qk-pd--0 qk-flex--1 qk-fs--title" type="button"> 1529 ç»å ¥æ¥çè³æ ¼ 1530</button> 1531<button class="btn btn_not_eligible hidden qk-btn qk-btn--soldout qk-btn--lg qk-pd--0 qk-flex--1 qk-fs--title" type="button"> 1532 è³¼è²·è³æ ¼ä¸ç¬¦ 1533</button> 1534<!-- cyb_snippet _product_info_status_button end --> 1535 1536 <button class="btn btn_notice hidden qk-btn qk-btn--primary qk-btn--lg qk-pd--0 qk-flex--1 qk-fs--title" type="button"> 1537 å·²å®å®ï¼è²¨å°éç¥æ 1538 </button> 1539 1540 <button class="btn btn_soldout hidden qk-btn qk-btn--soldout qk-btn--lg qk-pd--0 qk-flex--1 qk-fs--title" type="button"> 1541 å·²å®å® 1542 </button> 1543 <button 1544 class="btn buy-together hidden qk-btn qk-text--button qk-bd--button qk-btn--lg qk-pd--0 qk-flex--1 qk-fs--title" 1545 type="button" 1546 data-brand="" 1547 data-id="57903702" 1548 data-category="" 1549 data-list="å®ç¢å細覽" 1550 data-name="å層è´è¶é ¥ ï½ èèå£å³" 1551 data-quantity="1" 1552 data-position="å ¨é " 1553 1554 data-ga-custom-dimension="" 1555 data-ga-custom-value="" 1556 data-sku="">åæå è³¼ç©è»</button> 1557 <button 1558 class="btn buy-together hidden qk-btn qk-btn--primary qk-btn--lg qk-pd--0 qk-flex--1 qk-fs--title" 1559 type="button" 1560 data-buy="quick_buy" 1561 data-brand="" 1562 data-id="57903702" 1563 data-category="" 1564 data-list="å®ç¢å細覽" 1565 data-name="å層è´è¶é ¥ ï½ èèå£å³" 1566 data-quantity="1" 1567 data-position="å ¨é " 1568 1569 data-ga-custom-dimension="" 1570 data-ga-custom-value="" 1571 data-sku="">åæè³¼è²·</button> 1572 </div> 1573 1574 <div class="product_button_mobile qk-display--flex qk-align--center qk-hidden--pc"> 1575 <span class="product_love_mobile qk-display--il_bk"> 1576 <input 1577 type="hidden" 1578 class="product-variant-id" 1579 value="70021235" 1580 data-sku="" 1581 data-price="480.0" 1582 data-compare_at_price="480.0" 1583 data-variant="èèå£å³" 1584 data-inventory_quantity="0"> 1585 <a 1586 class="btn_love scupio-add-wishlist qk-text--text qk-fs--body qk-cursor--pointer" 1587 data-itemid="" 1588 1589 > 1590 <div data-icon-type="custom_icon_type_tracking_items" ></div> 1591 1592 </a> 1593 </span> 1594 1595 <div class="cart qk-text--center qk-pd_x--05 qk-pd_y--0"> 1596 <a href="/cart" class="qk-display--il_flex qk-flex--row qk-justify--center qk-align--center qk-vert--mid qk-pos--rel"> 1597 <div data-icon-type="custom_icon_type_cart" ></div> 1598
1599 <span class="number global-cart-count qk-circle qk-circle--sm qk-bg--accent qk-text--white qk-text--center qk-vert--mid qk-pos--abs" style="display: none;">0</span> 1600 </a> 1601 </div> 1602 <!-- cyb_snippet _product_info_button_mobile start --> 1603<button 1604 class="btn addToCart_mobile btn_to_cart_mobile open_product_modal qk-btn qk-flex--1 qk-fs--title qk-text-truncate qk-bd--button qk-text--button" 1605 data-handle="å層è´è¶é ¥-ï½-æ°å-èèå£å³"> 1606 å å ¥è³¼ç©è»</button> 1607<button 1608 class="btn addToCart_mobile btn_quick_buy_mobile open_quick_buy_modal qk-btn qk-btn--primary qk-flex--1 qk-fs--title qk-text-truncate" 1609 data-handle="å層è´è¶é ¥-ï½-æ°å-èèå£å³"> 1610 ç«å³è³¼è²·</button> 1611 1612<!-- cyb_snippet _product_info_button_mobile end --> 1613 <!-- cyb_snippet _product_info_status_button start --> 1614<button class="btn btn_not_sale hidden qk-btn qk-btn--soldout qk-btn--lg qk-pd--0 qk-flex--1 qk-fs--title" type="button"> 1615 å°æªéè³£ 1616</button> 1617<button class="btn btn_login_to_view hidden qk-btn qk-btn--soldout qk-btn--lg qk-pd--0 qk-flex--1 qk-fs--title" type="button"> 1618 ç»å ¥æ¥çè³æ ¼ 1619</button> 1620<button class="btn btn_not_eligible hidden qk-btn qk-btn--soldout qk-btn--lg qk-pd--0 qk-flex--1 qk-fs--title" type="button"> 1621 è³¼è²·è³æ ¼ä¸ç¬¦ 1622</button> 1623<!-- cyb_snippet _product_info_status_button end --> 1624 1625 <button class="btn btn_notice btn_notice_mobile hidden qk-btn qk-btn--primary qk-btn--lg qk-pd--0 qk-flex--1 qk-fs--title" type="button"> 1626 å·²å®å®ï¼è²¨å°éç¥æ 1627 </button> 1628 1629 <button class="btn btn_soldout hidden qk-btn qk-btn--soldout qk-btn--lg qk-pd--0 qk-flex--1 qk-fs--title" type="button"> 1630 å·²å®å® 1631 </button> 1632 <button 1633 class="btn buy-together hidden qk-btn qk-flex--1 qk-fs--title qk-bd--button qk-text--button" 1634 type="button" 1635 data-brand="" 1636 data-id="57903702" 1637 data-category="" 1638 data-list="å®ç¢å細覽" 1639 data-name="å層è´è¶é ¥ ï½ èèå£å³" 1640 data-quantity="1" 1641 data-position="å ¨é " 1642 1643 data-sku="">åæå è³¼ç©è»</button> 1644 <button 1645 class="btn buy-together hidden qk-btn qk-btn--primary qk-flex--1 qk-fs--title" 1646 type="button" 1647 data-buy="quick_buy" 1648 data-brand="" 1649 data-id="57903702" 1650 data-category="" 1651 data-list="å®ç¢å細覽" 1652 data-name="å層è´è¶é ¥ ï½ èèå£å³" 1653 data-quantity="1" 1654 data-position="å ¨é " 1655 1656 data-sku="">åæè³¼è²·</button> 1657 1658 </div> 1659 1660 1661 1662 1663 1664 <!-- å å ¥ææ,é·å®æ¸é,ç´ å©ææµ --> 1665 <div class="product_others qk-display--flex qk-flex--wrap qk-align--center"> 1666 <span class="product_love qk-display--il_bk qk-hidden--phone"> 1667 <input 1668 type="hidden" 1669 class="product-variant-id" 1670 value="70021235" 1671 data-sku="" 1672 data-price="480.0" 1673 data-compare_at_price="480.0" 1674 data-variant="èèå£å³" 1675 data-inventory_quantity="0"> 1676 <a 1677 class="btn_love scupio-add-wishlist qk-text--text qk-fs--body qk-bd--default qk-bd--product_border qk-cursor--pointer qk-display--flex qk-align--center" 1678 data-itemid="" 1679 1680 > 1681 <svg 1682 width="15" 1683 height="15"
1684 viewBox="0 0 24 24" 1685 fill="none" 1686 xmlns="http://www.w3.org/2000/svg"> 1687 <path 1688 d="M21.3899 4.54287C20.8146 4.01265 20.1366 3.60344 19.3969 3.34002C18.6572 3.0766 17.8711 2.96444 17.0863 3.01034C16.5593 3.01219 16.0362 3.09923 15.5375 3.26802C15.0194 3.44412 14.5265 3.68572 14.071 3.98682C13.6676 4.25092 13.2787 4.53613 12.906 4.84124C12.5762 5.09996 12.2648 5.38092 11.974 5.6821C11.6833 5.38092 11.3719 5.09996 11.042 4.84124C10.6516 4.53452 10.2443 4.24928 9.82221 3.98682C9.3967 3.69278 8.93642 3.45138 8.45163 3.26802C7.93995 3.0948 7.40254 3.0077 6.86175 3.01034C6.07688 2.96365 5.2906 3.07544 4.55076 3.3389C3.81091 3.60236 3.13296 4.01199 2.55813 4.54287C2.02401 5.11052 1.61146 5.77922 1.3453 6.50873C1.07914 7.23825 0.964875 8.01351 1.00937 8.78786C1.01359 9.36893 1.11073 9.94569 1.29719 10.4967C1.45989 11.0166 1.68054 11.517 1.95507 11.9886C2.20373 12.4073 2.47838 12.8104 2.77742 13.1956C3.09266 13.5889 3.32566 13.8601 3.46271 14.0093C3.56921 14.1255 3.6837 14.2343 3.80536 14.3348L11.4395 21.7669C11.5066 21.8412 11.5891 21.9002 11.6813 21.94C11.7736 21.9798 11.8734 21.9994 11.974 21.9975C12.0836 22.0067 12.1938 21.9906 12.296 21.9506C12.3983 21.9106 12.4898 21.8477 12.5634 21.7669L20.1838 14.3484C21.8272 12.9359 22.8376 10.9363 22.9935 8.78786C23.0307 8.0097 22.9078 7.23217 22.6321 6.50246C22.3565 5.77274 21.9339 5.10606 21.3899 4.54287V4.54287Z" 1689 stroke="currentColor" 1690 stroke-width="2" 1691 stroke-linecap="round" 1692 stroke-linejoin="round" /> 1693 </svg> 1694 å å ¥ææ 1695 </a> 1696 </span> 1697 1698 <span 1699 class="product_bonus qk-text--text qk-fs--body qk-display--il_bk" 1700 > 1701 æ¤åå ã æé« ãå¯ä»¥ææµç´ å© 1702 <span class="val">422</span> 1703 é» 1704 1705 (ç´çæ¼ <span class="money_tag" data-currency-from="TWD" data-amount="422">NT$422</span> ) 1706 </span> 1707 </div> 1708 </div> 1709 <!-- product content end --> 1710</div> 1711<div class="add-buy-products-container"> 1712 <!-- cyb_snippet add_buy_products start --> 1713 1714 1715 1716 1717<!-- cyb_snippet add_buy_products end --> 1718 1719</div> 1720
1721<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/cart-3a2e378145f8a165.js' type='text/javascript'></script>
vendor: 1 bytes, line 1721
1721
1722<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/product_variant-3a2e378145f8a165.js' type='text/javascript'></script>
1722 1723<link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/product-3a2e378145f8a165.css' rel='stylesheet' type='text/css' media='all' />
1724<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/product_info-3a2e378145f8a165.js' type='text/javascript'></script>
1724 1725 1726<!-- cyb_snippet new_addcart_modal start --> 1727<link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/vue_product_modal-3a2e378145f8a165.css' rel='stylesheet' type='text/css' media='all' /> 1728 1729<div id="new-addcart-modal" class="container"> 1730 <transition name="modal"> 1731 <product-modal 1732 v-if="showProductModal" 1733 :only-description="onlyDescription" 1734 :product-url="popProductUrl" 1735 :color="color" 1736 :is-collection="isCollection" 1737 :is-show-description="isShowDescription" 1738 :is-quick-buy="isQuickBuy" 1739 :selected-variant-id="selectedVariantId" 1740 :categories="categories" 1741 :call-back="checkoutAddToCartCallback" 1742 ref="productModal" 1743 > 1744 </product-modal> 1745 </transition> 1746</div> 1747 1748<!-- cyb_snippet components/product_modal/product_modal start -->
1749<script type="text/x-template" id="product-modal"> 1750 <div class="modal-mask qk-h--100 qk-w--100 qk-l--0 qk-t--0 qk-pos--fixed" @click="closeModal"> 1751 <div class="modal-content qk-bd--none qk-center qk-bg--theme_bg" :class="{'only-description': onlyDescription}" @click.stop> 1752 <button class="btn-close qk-circle qk-circle--md qk-pos--abs qk-op--100 qk-bg--theme_bg qk-text--heading qk-bd--product_border qk-bd--default" @click="closeModal"></button> 1753 <div class="modal-body custom-scrollbar qk-w--100"> 1754 <div v-if="!isLoading"> 1755 <div id="checkout-product" class="row"> 1756 <div class="col-sm-6 col-xs-4"> 1757 <photo-swiper 1758 :mediaItems="swiperItems" 1759 :current-image-index="currentImageIndex" 1760 :current-variant="currentVariant" 1761 :video-after-image="videoAfterImage" 1762 ></photo-swiper> 1763 </div> 1764 <div class="col-sm-6 col-xs-8"> 1765 <h4 class="qk-fs--hd2 qk-fw--bold qk-text--heading qk-mg--0" v-html="product.title"></h4> 1766 <p class="product_brief qk-text--text qk-fs--body" v-html="product.brief"></p> 1767 <p class="product_slogan qk-text--heading qk-fs--body" v-html="product.slogan"></p> 1768 <div class="swiper_thumbnails" style="margin-bottom: 10px;"> 1769 <swiper-thumbnails 1770 :mediaItems="swiperItems" 1771 :current-image-index="currentImageIndex" 1772 :title="product.title" 1773 @update-current-image-index="(thumbnailIndex) => { currentImageIndex = thumbnailIndex }" 1774 ></swiper-thumbnails> 1775 </div> 1776 1777 <div v-if="!hidePrice" style="margin-bottom: 10px;"> 1778 1779 <span class="price-title qk-fs--body qk-fw--500 qk-text--heading">${ priceTitleTag }</span> 1780 1781 <div> 1782 <span v-html="variantPrice" class="variant-price qk-fs--hd1 qk-fw--bold" :class="[isDiscountPrice ? 'qk-text--discount_price' : 'qk-text--price']"></span> 1783 <del v-html="marketPrice" class="variant-del-price qk-fs--body qk-fw--500 qk-text--text"></del> 1784 </div> 1785 </div> 1786 <div v-if="!onlyDescription" class="controls"> 1787 <div class="variant-quantity qk-display--flex qk-flex--column"> 1788 <div v-if="hasVariant" class="product-variant-options"> 1789 <div v-for="(option, index) in optionInfo" class="product-variant-option" :class="{'product-variant-option--hidden': shouldHideSingleVariantOptions}"> 1790 <div class="advance variant-select-option" v-if="styledShopMenu==='dropDownType'"> 1791 1792 <label>${option.name}</label> 1793 <svg height="20" width="20" viewBox="0 0 20 20" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><path d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"> </path></svg> 1794 <select class="qk-bg--theme_bg" :class="{'select_placeholder-color': currentOption[`option${index + 1}`] === null}" v-show="!isMobileSize" :value="String(currentOption[`option${index + 1}`])" @change="setOption(`option${index + 1}`, $event.target.value, option.types )" @click="onClickSelectModal(option,`option${index + 1}`)"> 1795 <option value="null" class="select_option-hidden">è«é¸æ${option.name}</option> 1796 <option :style="{ visibility : isMobileSize ? 'hidden' : 'visible' }" v-for="(types) in option.types" :disabled="!types.isValid" :value="types.name">${types.name}</option> 1797 </select> 1798 <span class="select_placeholder-color" v-if="currentOption[`option${index + 1}`] === null" v-show="isMobileSize" @click="onClickSelectModal(option,`option${index + 1}`)">è«é¸æ${option.name}</span>
1799 <span v-else :value="currentOption[`option${index + 1}`]" v-show="isMobileSize" @click="onClickSelectModal(option,`option${index + 1}`)" v-html="currentOption[`option${index + 1}`]"></span> 1800 </div> 1801 <advance-option v-else :option-key="'option' + (index + 1)" :option="option" :current-option="currentOption" :toggle-current-option="toggleCurrentOption"/> 1802 </div> 1803 </div> 1804 <div class="product_discounts_list qk-bg--theme_bg qk-bd--default qk-bd--product_border qk-pd--1 qk-mg_b--1" v-show="displayProductDiscountsList && ((displayPeriodicSalesPages && product.showableSalesPages.length > 0) || !!discountsList)"> 1805 <div class="list_block custom-scrollbar qk-of_x--hidden"> 1806 <h4 class="qk-text--heading qk-fs--body">æ¤åååèçåªæ æ´»å 1807 </h4> 1808 <template v-if="displayPeriodicSalesPages"> 1809 <div v-for="salesPage in product.showableSalesPages" class="discount-list"> 1810 <span class="discount-label qk-fs--breadcrumb qk-bd--default qk-bd--accent qk-bg--white qk-display--il_bk qk-text--accent">宿å®é¡ 1811 </span> 1812 <a class="discount-title qk-text--accent qk-fs--body" :href="salesPage.path">${ salesPage.title }</a> 1813 </div> 1814 </template> 1815 <template v-for="discounts in discountsList"> 1816 <div v-for="discount in discounts" class="discount-list"> 1817 <a v-if="discount.url" :href="discount.url" class="discount-title qk-text--accent qk-fs--body"> 1818 ${ discount.title } 1819 </a> 1820 <span v-else class="discount-title qk-text--accent qk-fs--body">${ discount.title }</span> 1821 </div> 1822 </template> 1823 </div> 1824 </div> 1825 <div v-if="showPurchaseControls" class="product-quantity qk-bd--product_border" v-show="!isMobileSize"> 1826 <div class="btn-group qk-w--100" role="group" aria-label="First group"> 1827 <button class="btn add-down qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityDecrease">ï¼</button> 1828 <input class="btn item-quantity qk-bd--default qk-bd--border qk-w--100 qk-text--heading" type="text" name="quantity" :value="quantity" @change="quantityChange"> 1829 <button class="btn add-up qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityIncrease">ï¼</button> 1830 </div> 1831 </div> 1832 </div> 1833 <div v-if="showPurchaseControls" class="add-button-wrapper"> 1834 <!-- cyb_snippet _product_modal_button start --> 1835<button 1836 class="btn btn-default add-button qk-cursor--pointer qk-w--100 qk-btn--primary" 1837 :class="{selected: isChoose, adding: adding || isHideAddCartBtn, secondary: isSecondaryBtn, 'qk-btn--disabled': isHideAddCartBtn && isNewNnCollection, 'qk-bd--none': isHideAddCartBtn && isNewNnCollection}" 1838 type="button" 1839 :disabled="isHideAddCartBtn" 1840 @click="addProduct" 1841> 1842 ${ addCartText } 1843</button> 1844 1845<!-- cyb_snippet _product_modal_button end --> 1846 </div> 1847 <div class="product-others qk-fs--body"> 1848 <span class="product-love"> 1849 <a class="btn-love qk-text--text qk-bg--theme_bg qk-bd--default qk-bd--product_border qk-display--il_bk qk-text--center qk-cursor--pointer qk-tst qk-tst_timing--ease_io qk-tst_dur--15" @click="addWishList"> 1850 <svg 1851 width="15" 1852 height="15"
1853 viewBox="0 0 24 24" 1854 fill="none" 1855 xmlns="http://www.w3.org/2000/svg"> 1856 <path 1857 d="M21.3899 4.54287C20.8146 4.01265 20.1366 3.60344 19.3969 3.34002C18.6572 3.0766 17.8711 2.96444 17.0863 3.01034C16.5593 3.01219 16.0362 3.09923 15.5375 3.26802C15.0194 3.44412 14.5265 3.68572 14.071 3.98682C13.6676 4.25092 13.2787 4.53613 12.906 4.84124C12.5762 5.09996 12.2648 5.38092 11.974 5.6821C11.6833 5.38092 11.3719 5.09996 11.042 4.84124C10.6516 4.53452 10.2443 4.24928 9.82221 3.98682C9.3967 3.69278 8.93642 3.45138 8.45163 3.26802C7.93995 3.0948 7.40254 3.0077 6.86175 3.01034C6.07688 2.96365 5.2906 3.07544 4.55076 3.3389C3.81091 3.60236 3.13296 4.01199 2.55813 4.54287C2.02401 5.11052 1.61146 5.77922 1.3453 6.50873C1.07914 7.23825 0.964875 8.01351 1.00937 8.78786C1.01359 9.36893 1.11073 9.94569 1.29719 10.4967C1.45989 11.0166 1.68054 11.517 1.95507 11.9886C2.20373 12.4073 2.47838 12.8104 2.77742 13.1956C3.09266 13.5889 3.32566 13.8601 3.46271 14.0093C3.56921 14.1255 3.6837 14.2343 3.80536 14.3348L11.4395 21.7669C11.5066 21.8412 11.5891 21.9002 11.6813 21.94C11.7736 21.9798 11.8734 21.9994 11.974 21.9975C12.0836 22.0067 12.1938 21.9906 12.296 21.9506C12.3983 21.9106 12.4898 21.8477 12.5634 21.7669L20.1838 14.3484C21.8272 12.9359 22.8376 10.9363 22.9935 8.78786C23.0307 8.0097 22.9078 7.23217 22.6321 6.50246C22.3565 5.77274 21.9339 5.10606 21.3899 4.54287V4.54287Z" 1858 stroke="currentColor" 1859 stroke-width="2" 1860 stroke-linecap="round" 1861 stroke-linejoin="round" /> 1862 </svg> 1863 å å ¥ææ 1864 </a> 1865 </span> 1866 <span class="product_sold qk-text--text" v-if="false"> 1867 <span>å·²é·å®ï¼ 1868 ${ product.totalSold } 1869 ä»¶ 1870 </span> 1871 </span> 1872 <span class="product_bonus qk-text--text" v-if="true"> 1873 æ¤åå ã æé« ãå¯ä»¥ææµç´ å© 1874 <span class="val qk-fw--600 qk-fs--hd2" v-if="currentVariant">${currentVariant.maxUsableBonus}</span> 1875 <span class="val qk-fw--600 qk-fs--hd2" v-else>${maxUsableBonus}</span> 1876 é» 1877 <span v-html="bonusToPrice"/> 1878 </span> 1879 </div> 1880 <div class='product_limit_buy qk-fs--body' v-show="product.minBuy > 0 || product.limitBuy > 0"> 1881 ${limitBuyText} 1882 </div> 1883 </div> 1884 </div> 1885 </div> 1886 <div v-if="isShowDescription" class="row"> 1887 <div class="col-sm-12"> 1888 1889 <div v-if="product.bodyHtml"> 1890 <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading"> 1891 ååä»ç´¹ 1892 </h5> 1893 <div class="ckeditor"> 1894 <div v-html="product.bodyHtml"></div> 1895 </div> 1896 </div> 1897 1898 1899 <div v-if="otherDescriptions['product_description_section_spec']"> 1900 <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading"> 1901 è³å³æé 1902 </h5> 1903 <div class="ckeditor"> 1904 <div v-html="otherDescriptions['product_description_section_spec']"></div> 1905 </div> 1906 </div> 1907 1908 1909 <div v-if="otherDescriptions['product_description_section_shipping']"> 1910 <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading"> 1911 ééæ¹å¼ 1912 </h5> 1913 <div class="ckeditor"> 1914 <div v-html="otherDescriptions['product_description_section_shipping']"></div> 1915 </div> 1916 </div> 1917 1918 </div> 1919 </div> 1920 </div> 1921 <div v-show="isLoading" style="text-align: center; padding-bottom: 20px;"> 1922 <i class="fas fa-spinner fa-spin fa-fw fa-2x"></i> 1923 </div> 1924 </div> 1925 <!-- cyb_snippet _product_modal_button_mobile start --> 1926 <div 1927 v-if="showPurchaseControls" 1928 v-show="isMobileSize" 1929 class="mobile_footer" 1930 :class="{'mobile_footer-z': variantSize > 1 }"> 1931 <div class="product-quantity"> 1932 <div class="btn-group qk-w--100" role="group" aria-label="First group"> 1933 <button class="btn add-down qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityDecrease">ï¼</button> 1934 <input class="btn item-quantity qk-bd--default qk-bd--border qk-w--100 qk-text--heading" type="text" name="quantity" :value="quantity" @change="quantityChange"> 1935 <button class="btn add-up qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityIncrease">ï¼</button> 1936 </div> 1937 </div> 1938 <button 1939 v-if="!isLoading && !onlyDescription" 1940 class="btn btn-mobile add-button qk-btn qk-btn--primary qk-btn--lg" 1941 :class="{selected: isChoose, adding: adding || isHideAddCartBtn, 'qk-btn--disabled': isHideAddCartBtn && isNewNnCollection, 'qk-bd--none': isHideAddCartBtn && isNewNnCollection}" 1942 type="button" 1943 :disabled="isHideAddCartBtn" 1944 @click="addProduct"> 1945 ${ addCartText } 1946 </button> 1947</div> 1948<div 1949 class="mobile-modal" 1950 :class="{ 'modal-open': isModalSelectShow && isMobileSize }"> 1951 <div class="mobile_modal-content"> 1952 <div class="modal_close-button"> 1953 <button class="btn-close qk-circle qk-circle--md qk-pos--abs qk-op--100 qk-text--heading qk-bd--product_border qk-bd--default" @click="onChangeModalSelect(false,true)"></button> 1954 </div> 1955 1956 <p>è«é¸æ${modalOption.name}</p> 1957 <div class="modal_select-templete qk-display--flex qk-of_y--auto qk-w--100"> 1958 <div class="options-container"> 1959 <label :class="{'seleced-option': currentOption && currentOption[selectOption] === data.name, 'avoid-clicks':!data.isValid}" v-for="data in modalOption.types" @click="setOption(selectOption, data.name, modalOption.types)">${data.name}</label> 1960 </div> 1961 </div> 1962 <div v-if="variantSize > 1" class="modal_select_footer qk-display--flex"> 1963 <button type="button" class="modal_cancel qk-bd--default qk-btn--secondary qk-bd--button qk-text--button" @click="onChangeModalSelect(false,false)">åæ¶</button> 1964 <button type="button" class="qk-btn qk-btn--primary qk-btn--lg qk-fs--body qk-bd--button qk-test--button_text" @click="onChangeModalSelect(false,true)">宿</button> 1965 </div> 1966 </div> 1967</div> 1968 1969<!-- cyb_snippet _product_modal_button_mobile end --> 1970 </div> 1971 </div> 1972</script>
1972 1973 1974<!-- cyb_snippet components/product_modal/color_image_option start -->
1975<script id="color-image-option" type="text/x-template"> 1976 <div class="color-image qk-display--flex qk-flex--wrap qk-align--center"> 1977 <div class="title">é¡è²</div> 1978 <div 1979 v-for="(imageColor, index) in imageColors" 1980 :class="{ 1981 'focus': !currentOption[optionKey] === option.types[index].name && currentImageIndex === index, 1982 'selected': currentOption[optionKey] === option.types[index].name, 1983 'disabled': !option.types[index].isValid 1984 }" 1985 class="image-option img-flex qk-bd--default qk-bd--transparent qk-display--block qk-pos--rel" 1986 @mouseleave="setCurrentImageIndex(index)" 1987 @mouseover="getOptionImageIndex(index)" 1988 @click="setOption(optionKey, index)" 1989 > 1990 <img v-if="imageColor !== 'noColorImage'" :src="imageColor.large" alt="image"> 1991 <img v-else src="/assets/no-image-large.png" alt="image"> 1992 </div> 1993 </div> 1994</script>
1994 1995
1996<script type="text/javascript"> 1997 $(document).ready(function() { 1998 window.themeHelper.productModalComponents['color-image-option'] = { 1999 template: '#color-image-option', 2000 delimiters: ['${', '}'], 2001 props: { 2002 optionKey: String, 2003 option: Object, 2004 product: Object, 2005 imageColors: Array, 2006 isChoose: Boolean, 2007 currentImageIndex: Number, 2008 setCurrentImageIndex: Function, 2009 getOptionImageIndex: Function, 2010 currentOption: Object, 2011 toggleCurrentOption: Function, 2012 }, 2013 methods: { 2014 setOption: function(optionKey, index) { 2015 const type = this.option.types[index]; 2016 if(type.isValid){ 2017 this.toggleCurrentOption(optionKey, type.name); 2018 } 2019 } 2020 } 2021 }; 2022 }); 2023</script>
2023 2024 2025<!-- cyb_snippet components/product_modal/color_image_option end --> 2026<!-- cyb_snippet components/product_modal/advance_option start -->
2027<script id="advance-option" type="text/x-template"> 2028 <div class="advance"> 2029 <div class="title qk-text--heading qk-fs--body">${option.name}</div> 2030 <div 2031 v-for="type in option.types" 2032 :class="{ 2033 'selected': currentOption[optionKey] === type.name, 2034 'disabled': !type.isValid 2035 }" 2036 @click="setOption(optionKey, type)" 2037 class="option qk-btn qk-bd--button qk-text--button qk-pd_x--1" 2038 > 2039 ${type.name} 2040 </div> 2041 </div> 2042</script>
2042 2043
2044<script type="text/javascript"> 2045 $(document).ready(function() { 2046 window.themeHelper.productModalComponents['advance-option'] = { 2047 template: '#advance-option', 2048 delimiters: ['${', '}'], 2049 props: { 2050 optionKey: String, 2051 option: Object, 2052 product: Object, 2053 currentOption: Object, 2054 toggleCurrentOption: Function, 2055 }, 2056 methods: { 2057 setOption: function(optionKey, type) { 2058 if(type.isValid){ 2059 this.toggleCurrentOption(optionKey, type.name); 2060 } 2061 } 2062 } 2063 }; 2064 }); 2065</script>
2065 2066 2067<!-- cyb_snippet components/product_modal/advance_option end --> 2068 2069<!-- cyb_snippet components/product_modal/photo_swiper start --> 2070 2071
2072<script id="photo-swiper" type="text/x-template"> 2073 <div ref="photoSwiper" id="photo_swiper" class="photos swiper swiper-container"> 2074 <div class="swiper-wrapper"> 2075 <template v-if="hasImage"> 2076 <div v-for="(item, index) in mediaItems" :key="index" class="photo swiper-slide qk-align--center qk-display--flex qk-justify--center qk-vert--text_top default_scale"> 2077 <video-player v-if="item.url" :video="item" 2078 :video-poster=" !!mediaItems[firstImageIndex] ? mediaItems[firstImageIndex].large : '//cdn1-next.cybassets.com/img_loading.svg' " 2079 > 2080 </video-player> 2081 <img v-else class="qk-center" :src="item.large" alt="image"/> 2082 </div> 2083 </template> 2084 <div v-else class="photo swiper-slide qk-align--center qk-display--flex qk-justify--center qk-vert--text_top default_scale"> 2085 <img src="//cdn1-next.cybassets.com/assets/no-image-large-2b95ea56c455be9ce081d81c14eded925df68bf8fa38809e46f6af8fcdd5f9bc.png" alt="image" /> 2086 </div> 2087 </div> 2088 <div v-show="showBtn" class="photo-prev qk-swiper_btn--prev qk-hidden--mobile qk-swiper_btn qk-swiper_btn--lg qk-swiper_btn--v2 qk-mg_l--05"></div> 2089 <div v-show="showBtn" class="photo-next qk-swiper_btn--next qk-hidden--mobile qk-swiper_btn qk-swiper_btn--lg qk-swiper_btn--v2 qk-mg_l--05"></div> 2090 2091 <div class="photo-pagination qk-bd--default qk-bd--body qk-text--center qk-text--body qk-fs--breadcrumb qk-visible-sm"> 2092 <span class="current-index qk-text--default_dark">${currentImageIndex +1 }</span><span class="pagination-slash">/</span> 2093 <span>${mediaItems.length}</span> 2094 </div> 2095 </div> 2096</script>
2096 2097
2098<script> 2099 $(document).ready(function () { 2100 window.themeHelper.productModalComponents['photo-swiper'] = { 2101 template: '#photo-swiper', 2102 delimiters: ['${', '}'], 2103 props: { 2104 mediaItems: Array, 2105 currentImageIndex: Number, 2106 currentVariant: Object, 2107 videoAfterImage: Boolean, 2108 }, 2109 data: function () { 2110 return { 2111 swiper: {}, 2112 swiperOption: { 2113 preventInteractionOnTransition: true, 2114 rewind: true, 2115 spaceBetween: 5, 2116 slidesPerView: 1, 2117 navigation: { 2118 nextEl: '.photo-next', 2119 prevEl: '.photo-prev' 2120 } 2121 }, 2122 showBtn: true, 2123 isVariantReposition: false, 2124 } 2125 }, 2126 mounted: function() { 2127 this.swiper = new Swiper('#photo_swiper', this.swiperOption); 2128 this.swiper.on('slideChange', this.slideOnChange); 2129 }, 2130 watch: { 2131 currentImageIndex: function() { 2132 this.slideToIndex(); 2133 }, 2134 currentVariant: { 2135 immediate: true, 2136 handler: function() { 2137 this.showBtn = this.mediaItems.length > 1; 2138 this.isVariantReposition = true; 2139 this.$nextTick(() => { 2140 if (this.swiper) { 2141 this.swiper.update(); 2142 this.swiper.slideToLoop(this.initialItemIndex) 2143 this.slideOnChange(); 2144 this.isVariantReposition = false; 2145 } 2146 }); 2147 }, 2148 }, 2149 }, 2150 computed: { 2151 hasImage: function() { 2152 return this.mediaItems.length > 0; 2153 }, 2154 hasVideo: function() { 2155 return this.mediaItems.findIndex(item => !!item.url) !== -1; 2156 }, 2157 variantPhotos: function() { 2158 if (this.currentVariant?.photos?.length) { 2159 return this.currentVariant.photos; 2160 } else { 2161 return null; 2162 } 2163 }, 2164 initialItemIndex: function() { 2165 if (this.hasVideo && !this.videoAfterImage) { 2166 // Focus on photo if "variant with photos" selected, video otherwise 2167 return this.variantPhotos?.length ? 1 : 0; 2168 } else { 2169 // Focus on first photo 2170 return 0; 2171 } 2172 }, 2173 }, 2174 methods: { 2175 slideOnChange: function() { 2176 themeHelper.EventBus.$emit('photoOnChange', this.swiper.realIndex, this.isVariantReposition); 2177 }, 2178 slideToIndex: function() { 2179 if(this.swiper.realIndex != this.currentImageIndex) { 2180 this.swiper.slideToLoop(this.currentImageIndex); 2181 this.swiper.update(); 2182 } 2183 }, 2184 } 2185 }; 2186 }); 2187</script>
2187 2188 2189 2190<!-- cyb_snippet components/product_modal/video_player start -->
2191<script id="video-player" type="text/x-template"> 2192 <div class="videoPlayer__wrapper" @click="handleVideoClick"> 2193 <video 2194 id='modal-video' 2195 class="videoPlayer__video qk-cursor--pointer qk-center" 2196 :poster="videoPoster" 2197 loop defaultMuted muted playsinline webkit-playsinline autoplay 2198 > 2199 <source :src="videoUrl" type="video/mp4"> 2200 <p>ä½ çç覽å¨ä¸æ¯æ´ HTML 5 video</p> 2201 </video> 2202 <button id="modal-video-button" class="videoPlayer__pauseButton"></button> 2203 </div> 2204</script>
2204 2205
2206<script> 2207 $(document).ready(function () { 2208 window.themeHelper.productModalComponents['video-player'] = { 2209 template: '#video-player', 2210 delimiters: ['${', '}'], 2211 props: { 2212 video: Object, 2213 videoPoster: String, 2214 }, 2215 data: function() { 2216 return { 2217 videoElement: null, 2218 buttonElement: null, 2219 }; 2220 }, 2221 mounted: function() { 2222 this.videoElement = $('#modal-video')[0]; 2223 this.buttonElement = $('#modal-video-button'); 2224 this.setVideoVolumeZero(); 2225 this.videoElement.addEventListener('canplay', (event) => { 2226 this.sendGtag('play'); 2227 }, { once: true }); 2228 }, 2229 computed: { 2230 videoUrl: function() { 2231 return this.video.url; 2232 } 2233 }, 2234 methods: { 2235 sendGtag: function(action) { 2236 window.productVideoView && productVideoView(action); 2237 }, 2238 setVideoVolumeZero: function() { 2239 this.videoElement.volume = 0; 2240 }, 2241 handleVideoClick: function() { 2242 if (this.videoElement.paused){ 2243 this.videoElement.play(); 2244 this.sendGtag('play'); 2245 } else { 2246 this.videoElement.pause(); 2247 this.sendGtag('paused'); 2248 } 2249 this.handleVideoButtonDisplay(this.buttonElement, this.videoElement); 2250 }, 2251 handleVideoButtonDisplay: function(button, video) { 2252 button.toggleClass('videoPlayer__playButton', video.paused); 2253 button.toggleClass('videoPlayer__pauseButton', !video.paused); 2254 }, 2255 } 2256 }; 2257 }); 2258</script>
2258 2259 2260<!-- cyb_snippet components/product_modal/video_player end --> 2261 2262<!-- cyb_snippet components/product_modal/photo_swiper end --> 2263<!-- cyb_snippet components/product_modal/swiper_thumbnails start -->
2264<script id="swiper-thumbnails" type="text/x-template"> 2265 <div 2266 v-for="(thumbnail, index) in allThumbnails" 2267 :key="index" 2268 class="product-thumbnail img-flex qk-of--hidden qk-display--il_bk qk-cursor--pointer qk-bd--default qk-bd--transparent default_scale" 2269 :class="{ focus: index === currentImageIndex }" 2270 @mouseover="updateCurrentImageIndex(index)" 2271 > 2272 <template v-if="thumbnail.isVideo"> 2273 <video class="qk-w--100 qk-h--100" :src="thumbnail.url" defaultMuted playsinline></video> 2274 <button class="videoPlayer__playButton"></button> 2275 </template> 2276 <img v-else :src="thumbnail.url" :alt="title" class="qk-w--100 qk-h--100"> 2277 </div> 2278</script>
2278 2279
2280<script type="text/javascript"> 2281 $(document).ready(function () { 2282 window.themeHelper.productModalComponents['swiper-thumbnails'] = { 2283 template: '#swiper-thumbnails', 2284 delimiters: ['${', '}'], 2285 props: { 2286 title: String, 2287 mediaItems: Array, 2288 currentImageIndex: Number, 2289 }, 2290 emits: ['updateCurrentImageIndex'], 2291 methods: { 2292 updateCurrentImageIndex: function(thumbnailIndex) { 2293 if (thumbnailIndex !== this.currentImageIndex ) { 2294 this.$emit('updateCurrentImageIndex', thumbnailIndex); 2295 } 2296 }, 2297 }, 2298 mounted() { 2299 // can be removed after replacing video thumbnail with img 2300 const thumbnailVideo = $('.product-thumbnail video')[0]; 2301 if (!!thumbnailVideo) { 2302 thumbnailVideo.volume = 0; 2303 const promise = thumbnailVideo.play(); 2304 promise.then(() => { 2305 thumbnailVideo.pause(); 2306 }) 2307 } 2308 }, 2309 computed: { 2310 allThumbnails: function() { 2311 return this.mediaItems.map(item => ({ 2312 isVideo: !!item.url, 2313 url: item.url || item.medium 2314 })); 2315 }, 2316 }, 2317 watch: { 2318 allThumbnails: { 2319 handler(){ 2320 this.updateCurrentImageIndex(this.currentImageIndex); 2321 } 2322 } 2323 } 2324 }; 2325 }); 2326</script>
2326 2327 2328<!-- cyb_snippet components/product_modal/swiper_thumbnails end --> 2329 2330 2331<!-- cyb_snippet _product_modal_js start -->
2332<script type="text/javascript"> 2333 $(document).ready(function() { 2334 var categoryLevels = []; 2335 var productCategoryLevels = ["å層è´è¶é ¥ç³»å,ææåå"]; 2336 var pageMainProductId = 57903702; 2337 window.themeHelper.productModalComponents['product-modal'] = { 2338 template: '#product-modal', 2339 delimiters: [ 2340 '${', '}' 2341 ], 2342 props: { 2343 onlyDescription: Boolean, 2344 cartItems: Array, 2345 groupId: Number, 2346 productUrl: String, 2347 color: String, // unused 2348 collectionId: Number, 2349 categories: Array, 2350 // 夿·æ¯å¦æè²ç¥¨å±é 2351 isCollection: { 2352 type: Boolean, 2353 required: false, 2354 default: false, 2355 }, 2356 // 夿·å å ¥è³¼ç©è»çæ¹æ³ 2357 isNnCollection: Boolean, 2358 isNewNnCollection: Boolean, 2359 isBundleDiscount: Boolean, 2360 2361 // 夿·æ¯å¦é¡¯ç¤ºååæè¿° 2362 isShowDescription: { 2363 type: Boolean, 2364 default: true 2365 }, 2366 2367 // 夿·æ¯å¦çºç«å³è³¼è²· 2368 isQuickBuy: { 2369 type: Boolean, 2370 default: false 2371 }, 2372 selectedVariantId: Number, 2373 callBack: Function 2374 }, 2375 data: function() { 2376 return { 2377 styledShopMenu: "buttonType", 2378 selectOption: '', 2379 selectCurrentStr:'', 2380 isModalSelectShow: false, 2381 modalOption: {}, 2382 adding: false, 2383 currentImageIndex: 0, 2384 _navState: { variantId: null, photoIndex: 0 }, 2385 currentOption: { 2386 option1: null, 2387 option2: null, 2388 option3: null 2389 }, 2390 currentVariant: null, 2391 variantNotifications: null, 2392 currentVariantIndex: null, 2393 product: {}, 2394 isChoose: false, 2395 isLoading: true, 2396 isEmptyClickable: liquidHelper.isEmptyClickable, 2397 quantity: 1, 2398 maxUsableBonus: 0, 2399 isDiscountPrice: false, 2400 displayProductDiscountsList: true, 2401 displayPeriodicSalesPages:false, 2402 discountsList: null, 2403 hasVideoPlugin: false, 2404 videoDisplayLocation: "before", 2405 hasStockNotificationPlugin: true, 2406 isDisplayPriceRange: null, 2407 hasVariantPriceRangePlugin: true, 2408 hasHideSingleVariantOptionsPlugin: false, 2409 } 2410 }, 2411 mounted: function() { 2412 this.getProductDetail(); 2413 $('.custom-scrollbar').addCustomScrollbar(); 2414 themeHelper.EventBus.$on('photoOnChange', this.photoOnChange); 2415 }, 2416 beforeUnmount: function() { 2417 themeHelper.EventBus.$off('photoOnChange', this.photoOnChange); 2418 }, 2419 computed: { 2420 photoUrls: function() { 2421 return this.product.photoUrls.length > 0 2422 ? this.product.photoUrls 2423 : [this.featuredImage]; 2424 }, 2425 photoUrlsMap: function() { 2426 var map = {}; 2427 var urls = this.product.photoUrls; 2428 this.product.photos.forEach(function(photo, index) { 2429 map[photo.photo.id] = urls[index]; 2430 }); 2431 2432 return map; 2433 }, 2434 featuredImage: function() { 2435 return this.product.featuredImage; 2436 }, 2437 swiperPhotos: function() { 2438 if (!this.photoUrls.length) { 2439 return [this.featuredImage]; 2440 } 2441 2442 if (this.currentVariant && this.currentVariant.photos.length) { 2443 var map = this.photoUrlsMap; 2444 return this.currentVariant.photos.map(function(p) { 2445 return map[p.id]; 2446 }); 2447 } 2448 2449 return this.photoUrls; 2450 }, 2451 productVideo: function() { 2452 return this.product.video; 2453 }, 2454 videoAfterImage: function() { 2455 return this.videoDisplayLocation === 'after'; 2456 }, 2457 swiperItems: function() { 2458 const media = [...this.swiperPhotos]; 2459 if ( 2460 this.hasVideoPlugin && this.productVideo.url 2461 ) { 2462 this.videoAfterImage 2463 ? media.push(this.productVideo) 2464 : media.unshift(this.productVideo); 2465 } 2466 return media; 2467 }, 2468 firstImageIndex: function() { 2469 return this.hasVideoPlugin && this.productVideo.url && !this.videoAfterImage 2470 ? 1 2471 : 0 2472 }, 2473 otherDescriptions: function() { 2474 var descriptions = {}; 2475 this.product.otherDescriptions.forEach(function(od) { 2476 descriptions[od.settingName] = od.bodyHtml; 2477 }) 2478 return descriptions 2479 }, 2480 variantOptions: function() { 2481 return themeHelper.variantOptions(this.product); 2482 }, 2483 firstValidVariant: function() { 2484 var self = this; 2485 var result = this.product.variants.find(function(variant) { 2486 // å¢å product modal è¯çµ¡åºå®¶ property 2487 variant.imgUrl = ""; 2488 variant.productTitle = ""; 2489 2490 return variant.available; 2491 }); 2492 2493 return result 2494 ? result 2495 : null; 2496 }, 2497 selectedValidVariant: function() { 2498 var self = this; 2499 var result = this.variantOptions.find(function(variant) { 2500 return variant.id === self.selectedVariantId; 2501 }); 2502 2503 return result 2504 ? result 2505 : null; 2506 }, 2507 totalInventoryQuantity: function(product) { 2508 return themeHelper.totalInventoryQuantity(this.product) 2509 }, 2510 addCartText: function() { 2511 var variants = parseInt("1"); 2512 let isRegisteredNotification = this.currentVariant && this.variantNotifications && this.variantNotifications[this.currentVariant.id] 2513 if (this.isNnCollection || this.isBundleDiscount) { 2514 if (this.currentVariant && !themeHelper.variantIsAvailable(this.currentVariant)) { 2515 if (this.currentVariant.inventoryPolicy === 'continue') { 2516 if (this.isNnCollection) { 2517 return this.isChoose && !this.isNewNnCollection 2518 ? 'å·²é è³¼' 2519 : 'é è³¼åå'; 2520 } 2521 } else { 2522 return 'å·²å®å®'; 2523 } 2524 } 2525 if (this.totalInventoryQuantity === 0) { 2526 return 'å·²å®å®'; 2527 } 2528 return this.isChoose && !this.isNewNnCollection 2529 ? 'å·²é¸è³¼' 2530 : 'é¸è³¼'; 2531 } else { 2532 if (this.isQuickBuy) { 2533 if (this.currentVariant && !themeHelper.variantIsAvailable(this.currentVariant)) { 2534 if (this.currentVariant.inventoryPolicy === 'continue'){ 2535 return 'ç«å³é è³¼' 2536 } 2537 return this.hasStockNotificationPlugin 2538 ? (isRegisteredNotification 2539 ? 'å·²ç»è¨è£è²¨éç¥' 2540 : 'å·²å®å®ï¼è²¨å°éç¥æ') 2541 : 'è¯çµ¡åºå®¶' 2542 } 2543 return 'ç«å³è³¼è²·'; 2544 } else { 2545 if (this.currentVariant) { 2546 if (!themeHelper.variantIsAvailable(this.currentVariant)) { 2547 if (this.currentVariant.inventoryPolicy === 'continue'){ 2548 return 'é è³¼åå' 2549 } 2550 return this.hasStockNotificationPlugin 2551 ? (isRegisteredNotification 2552 ? 'å·²ç»è¨è£è²¨éç¥' 2553 : 'å·²å®å®ï¼è²¨å°éç¥æ') 2554 : 'è¯çµ¡åºå®¶' 2555 } 2556 } else { 2557 if (this.totalInventoryQuantity === 0) { 2558 return 'å·²å®å®'; 2559 } 2560 } 2561 return 'å å ¥è³¼ç©è»'; 2562 } 2563 } 2564 }, 2565 cartItem: function() { 2566 if (!this.currentVariant) { 2567 return null 2568 } 2569 return { 2570 id: this.currentVariant.id, 2571 groupId: this.groupId, 2572 productId: this.product.id, 2573 title: this.product.title, 2574 photo: this.currentVariant.imgUrl || this.featuredImage.large, 2575 quantity: this.quantity, 2576 price: this.currentVariant.price, 2577 variant: this.currentVariant, 2578 product: this.product 2579 } 2580 }, 2581 options: function() { 2582 return this.product.options; 2583 }, 2584 optionTypes: function() { 2585 2586 // å æ ¹æè¨å®çvariantsä¾æåº 2587 var self = this; 2588 2589 var option1 = []; 2590 var option2 = []; 2591 var option3 = [];
2592 this.product.variants.forEach(function(item) { 2593 if (item.option1 !== null) { 2594 option1.push(item.option1); 2595 } 2596 if (item.option2 !== null) { 2597 option2.push(item.option2); 2598 } 2599 if (item.option3 !== null) { 2600 option3.push(item.option3); 2601 } 2602 }) 2603 var filteredOptionTypes = []; 2604 this.product.optionTypes.forEach(function(item, index) { 2605 filteredOptionTypes.push(self.getUniqueVariant(eval('option' + ( 2606 index + 1 2607 ))).join(',')); 2608 }); 2609 return filteredOptionTypes; 2610 }, 2611 optionInfo: function() { 2612 var self = this; 2613 2614 return self.options.map(function(option, index) { 2615 return { 2616 name: option, 2617 types: self.getOptions('option' + ( 2618 index + 1 2619 ), self.optionTypes[index].split(',')) 2620 } 2621 }); 2622 }, 2623 hasVariant: function() { 2624 return this.product.options.length > 0; 2625 }, 2626 shouldHideSingleVariantOptions: function() { 2627 return this.hasHideSingleVariantOptionsPlugin && 2628 this.product.variants && 2629 this.product.variants.length <= 1; 2630 }, 2631 variantSize: function() { 2632 if(this.product.options){ 2633 return this.product.options.length; 2634 } 2635 }, 2636 firstVariant: function() { 2637 return this.product.variants[0]; 2638 }, 2639 firstCheapestVariant: function() { 2640 return this.product.variants.find((v)=> (v.price === this.priceStats.minPrice)); 2641 }, 2642 priceStats: function() { 2643 return this.product.variants.reduce(function(acc, variant) { 2644 return { 2645 minPrice: variant.price < acc.minPrice ? variant.price : acc.minPrice, 2646 maxPrice: variant.price > acc.maxPrice ? variant.price : acc.maxPrice, 2647 }; 2648 }, { 2649 minPrice: this.firstVariant.price, 2650 maxPrice: this.firstVariant.price, 2651 }); 2652 }, 2653 hidePrice: function() { 2654 return this.product && this.product.hidePrice === true; 2655 }, 2656 salesModePurchasable: function() { 2657 return !(this.product && this.product.salesModePurchasable === false); 2658 }, 2659 // - 任鏿æ£ï¼ç´ é ç¶ ï¼ã鏿ãåªæ¯å é²è©¦ç®æ¸ å®ï¼ä¸æç´æ¥ä¸å®ï¼æ åªæèå¹åå 2660 // - å ¶ä»æ å¢ï¼ååé ã群çµé ãå¤å±¤ç´åé¡ãæå°ãé¦é åååå¡ï¼ï¼ä¸å¯è³¼è²·ï¼å«èå¹ï¼å°±æ´çµæ¶æ 2661 showPurchaseControls: function() { 2662 if (this.isNnCollection || this.isBundleDiscount) { 2663 return !this.hidePrice; 2664 } 2665 return this.salesModePurchasable; 2666 }, 2667 variantPrice: function() { 2668 if (this.hidePrice) { 2669 return ''; 2670 } 2671 var from = liquidHelper.defaultCurrency; 2672 if (this.currentVariant) { 2673 return moneySymbol(this.currentVariant.price, from); 2674 } 2675 if (this.product.variants.length === 1) { 2676 return moneySymbol(this.firstVariant.price, from); 2677 } 2678 2679 var minPrice = this.priceStats.minPrice; 2680 var maxPrice = this.priceStats.maxPrice; 2681 2682 if (minPrice !== maxPrice && (!this.hasVariantPriceRangePlugin || this.isDisplayPriceRange)) { 2683 this.isDiscountPrice = false; 2684 return moneySymbol(minPrice, from) + '~' + moneySymbol(maxPrice, from); 2685 } else { 2686 return moneySymbol(minPrice, from); 2687 } 2688 }, 2689 marketPrice: function() { 2690 if (this.hidePrice) { 2691 this.isDiscountPrice = false; 2692 return; 2693 } 2694 var from = liquidHelper.defaultCurrency; 2695 if (this.currentVariant) { 2696 this.isDiscountPrice = false; 2697 if (this.currentVariant.compareAtPrice && this.currentVariant.compareAtPrice > this.currentVariant.price) { 2698 this.isDiscountPrice = true; 2699 return moneySymbol(this.currentVariant.compareAtPrice, from); 2700 } 2701 } else { 2702 if (!_.includes(this.variantPrice, '~')) { 2703 const price = Number(this.variantPrice.replace(/[^0-9.
2703-]/g, "")) 2704 // æªé¸ææ¬¾å¼ä¹ä¸é¡¯ç¤ºåéæï¼é¡¯ç¤ºç¬¬ä¸åæä¾¿å®ç款å¼çå®å¹ 2705 if (this.firstCheapestVariant.compareAtPrice && this.firstCheapestVariant.compareAtPrice > price){ 2706 this.isDiscountPrice = true; 2707 return moneySymbol(this.firstCheapestVariant.compareAtPrice, from); 2708 } 2709 // æªé¸ææ¬¾å¼æè¦æ¹åä¸è¬å¹æ ¼é¡è² 2710 this.isDiscountPrice = false; 2711 } 2712 } 2713 }, 2714 isShowDropdownList: function() { 2715 if (this.product.options.length > 0) { 2716 return true; 2717 } 2718 return this.product.variants.length > 1 2719 }, 2720 priceTitleTag: function() { 2721 return this.marketPrice 2722 ? getDiscountPriceName() 2723 : getDiscountPriceSuggestionName(); 2724 }, 2725 isHideAddCartBtn: function() { 2726 if (this.addCartText === 'å·²å®å®') { 2727 return true; 2728 } 2729 return false; 2730 }, 2731 isSecondaryBtn: function() { 2732 if (this.addCartText === 'è¯çµ¡åºå®¶') { 2733 return true; 2734 } 2735 return false; 2736 }, 2737 variantsMaxUsableBonus: function() { 2738 var variants = this.product.variants; 2739 var maxUsableBonusArray = variants.map(function(item) { 2740 return item.maxUsableBonus 2741 }); 2742 return Math.max.apply(null, maxUsableBonusArray); 2743 }, 2744 bonusToPrice: function() { 2745 const bonus = this.currentVariant 2746 ? this.currentVariant.maxUsableBonus 2747 : this.maxUsableBonus; 2748 const price = Math.floor(bonus / window.liquidHelper.conversionBonus); 2749 const priceWithMoney = window.themeHelper.productDisplayCurrencyBlock(price); 2750 return "(ç´çæ¼ value )".replace('value', priceWithMoney); 2751 }, 2752 isMobileSize: function() { 2753 return window.innerWidth <= 580 2754 }, 2755 limitBuyText: function () { 2756 const minCount = this.product.minBuy; 2757 const maxCount = this.product.limitBuy; 2758 if (minCount > 0 && maxCount > 0) { 2759 return 'æ¤å忝çè¨å®æå°é購買 minCount ä»¶ï¼æå¤å¯è³¼è²· maxCount ä»¶'.replace('minCount', minCount).replace('maxCount', maxCount); 2760 } 2761 if (minCount > 0) { 2762 return 'æ¤å忝çè¨å®æå°é購買 minCount ä»¶'.replace('minCount', minCount); 2763 } 2764 if (maxCount > 0) { 2765 return 'æ¤å忝çè¨å®æå¤å¯è³¼è²· maxCount ä»¶'.replace('maxCount', maxCount); 2766 } 2767 return ''; 2768 } 2769 }, 2770 methods: { 2771 onClickSelectModal: function(objData, selectOptionStr) { 2772 this.isModalSelectShow = true; 2773 this.modalOption = objData; 2774 this.selectOption = selectOptionStr 2775 this.selectCurrentStr = this.currentOption && (String(this.currentOption[selectOptionStr]) || null) 2776 }, 2777 onChangeModalSelect: function(flag, isSelect) { 2778 if(!isSelect){ 2779 this.setOption(this.selectOption,this.selectCurrentStr,this.modalOption.types) 2780 } 2781 this.isModalSelectShow = flag; 2782 }, 2783 setOption: function(optionKey, type, dataArr) { 2784 let flag = true 2785 dataArr.forEach(item => { 2786 if (item.name === type) { 2787 flag = item.isValid 2788 } 2789 }) 2790 if (flag) { 2791 this.toggleCurrentOption(optionKey, type) 2792 } 2793 }, 2794 addToWishListEvent: function() { 2795 try { 2796 if (appMarketAddToWishListEvent) { 2797 var product = this.product; 2798 var currentVariant = this.currentVariant 2799 var element = $(`.btn[data-id=${product.id}]`); 2800 var index; 2801 var listName; 2802 if (element) { 2803 index = element.data('position') 2804 listName = element.data('list') 2805 } 2806 // sku_properties:é¸ä¸æ¬¾å¼ç option pairs(ç¶åèªç³»),é¡åå zip å¼ 2807 var optionValues = [currentVariant.option1, currentVariant.option2, currentVariant.option3]; 2808 var properties = [];
2809 (product.options || []).forEach(function(optionName, i) { 2810 if (optionName && optionValues[i]) { 2811 properties.push({ name: optionName, value: optionValues[i] }); 2812 } 2813 }); 2814 var dataSet = { 2815 name: product.title, 2816 category: product.productType, 2817 categories: (this.categories && this.categories.length) ? this.categories : (categoryLevels.length ? categoryLevels : (product.id === pageMainProductId ? productCategoryLevels : undefined)), 2818 sku: currentVariant.sku, 2819 price: currentVariant.price, 2820 compare_at_price: currentVariant.compareAtPrice, 2821 properties: properties, 2822 quantity: currentVariant.inventoryQuantity, 2823 variant: currentVariant.title, 2824 listName: listName || null, 2825 productId: product.id, 2826 variantId: currentVariant.id, 2827 index: Number(index) || 0, 2828 } 2829 appMarketAddToWishListEvent(dataSet) 2830 } 2831 } catch (e) { 2832 console.error(e) 2833 } 2834 }, 2835 addWishList: function() { 2836 if (this.currentVariant === null) { 2837 window.msg('è«é¸æå忬¾å¼', 'warning').show(); 2838 return; 2839 } 2840 var productVariantId = this.currentVariant.id; 2841 var addToWishListEvent = this.addToWishListEvent 2842 $.ajax({ 2843 method: 'POST', 2844 url: '/tracking_items', 2845 dataType: 'json', 2846 data: { 2847 product_variant_id: productVariantId 2848 }, 2849 success: function(response) { 2850 if (response.message) { 2851 window.msg(response.message, 'success').show(); 2852 addToWishListEvent() 2853 } 2854 2855 if (response.error) { 2856 window.msg(response.error, 'error').show(); 2857 2858 } 2859 if (response.info) { 2860 window.msg(response.info, 'info').show(); 2861 } 2862 if (response.success === false) { 2863 if (window.liquidHelper && window.liquidHelper.language && window.liquidHelper.language.handle) { 2864 window.location = "/" + window.liquidHelper.language.handle + "/account/login"; 2865 } else { 2866 window.location = "/account/login"; 2867 } 2868 } 2869 } 2870 }); 2871 }, 2872 setChoose: function(currentVariant) { 2873 this.maxUsableBonus = 0; 2874 var quantity = 1; 2875 var cartItem = null; 2876 if (!this.isNnCollection && this.cartItems) { 2877 cartItem = this.normalGetChoosenItem(currentVariant); 2878 } 2879 if (this.isNnCollection) { 2880 cartItem = this.nnCollectionGetChoosenItem(currentVariant); 2881 } 2882 this.isChoose = !! cartItem; 2883 if (this.isNewNnCollection) { 2884 return 2885 } 2886 this.quantity = cartItem 2887 ? cartItem.quantity 2888 : this.quantity; 2889 2890 // product modal è¯çµ¡åºå®¶æ å¢ 2891 if (currentVariant) { 2892 var photoIndex = 0; 2893 if (! currentVariant.imgUrl) { 2894 currentVariant.imgUrl = this.swiperPhotos.length > 0 2895 ? (this.swiperPhotos[photoIndex] && this.swiperPhotos[photoIndex].large) 2896 : this.featuredImage.large; 2897 } 2898 currentVariant.productTitle = this.product.title + ' - ' + this.currentVariant.title; 2899 } 2900 }, 2901 normalGetChoosenItem: function(currentVariant) { 2902 return this.cartItems.find(function(cartItem) { 2903 return currentVariant && cartItem.id === currentVariant.id; 2904 }); 2905 }, 2906 nnCollectionGetChoosenItem: function(currentVariant) { 2907 var isSelected = null; 2908 if (! currentVariant) { 2909 return isSelected; 2910 } 2911 if (this.isNewNnCollection) { 2912 var cart = store.get(`SpecialCollectionCart_${this.collectionId}`); 2913 isSelected = cart && cart.find((item) => item.variant_id == currentVariant.id) || null; 2914 } else { 2915 store.each(function(value, key) { 2916 var productId = _.includes(key, 'Pro' + currentVariant.productId); 2917 var variantID = _.includes(key, 'Var' + currentVariant.id); 2918 if (productId && variantID) { 2919 isSelected = store.get(key); 2920 } 2921 }); 2922 } 2923 2924 return isSelected; 2925 }, 2926 // get product detail 2927 getProductDetail: function() { 2928 var self = this; 2929 2930 $.ajax({ 2931 url: self.productUrl + '.json', 2932 type: 'GET', 2933 timeout: 30000, 2934 beforeSend: function() { 2935 self.isLoading = true; 2936 }, 2937 error: function(xhr) { 2938 self.closeModal(); 2939 if (xhr.status === 429) { 2940 window.showAddCartRateLimitModal(5); 2941 return; 2942 } 2943 window.msg('網路é£ç·ç°å¸¸ï¼è«éæ°æ´ç', 'error').show(); 2944 } 2945 }).done(function(data) { 2946 if (data.id) { 2947 var productData = [themeHelper.toCamelCase(data)]; 2948 self.product = themeHelper.priceWithDiscount(productData, liquidHelper.hasPriceWithDiscountPlugin)[0]; 2949 self.maxUsableBonus = self.variantsMaxUsableBonus; 2950 if (self.product.variants.length === 1 || liquidHelper.isFirstVariantSelected || self.selectedVariantId) { 2951 self.currentVariant = self.firstValidVariant; 2952 // 妿已ç¶èªé¸ååï¼åååé 䏿»å å ¥è³¼ç©è»é¡¯ç¤ºèªé¸åå 2953 if (self.selectedVariantId) { 2954 self.currentVariant = self.selectedValidVariant; 2955 } 2956 if (self.currentVariant) { 2957 self.setChoose(self.currentVariant); 2958 self.setDefaultOption(); 2959 } 2960 } 2961 if (self.displayProductDiscountsList) { 2962 self.setUpDiscountsTag(data); 2963 } 2964 self.isLoading = false;
2965 if (self.product && self.product.variants) { 2966 self.product.variants.forEach(function(discountedVariant) { 2967 var rawVariant = data.variants.find(function(v) { return v.id === discountedVariant.id; }); 2968 if (rawVariant) { rawVariant.price = discountedVariant.price; } 2969 }); 2970 } 2971 viewItem && viewItem(data, { collectionId: '', collectionName: null, categories: (self.categories && self.categories.length) ? self.categories : (categoryLevels.length ? categoryLevels : (data.id === pageMainProductId ? productCategoryLevels : undefined)) }); 2972 2973 (function() { 2974 // Read login status from cacheable, skip GET /pv_notification if not login. 2975 if (window.store && window.store.get('customer')) { 2976 var cacheableCustomer = window.store.get('customer'); 2977 if (cacheableCustomer.notLogin) { 2978 return; 2979 } 2980 } 2981 $.ajax({ 2982 url: '/pv_notification', 2983 method: 'GET', 2984 dataType: 'json', 2985 data: { 2986 product_id: parseInt(data.id) 2987 }, 2988 success: function(response) { 2989 self.variantNotifications = response.variants; 2990 } 2991 }) 2992 })(); 2993 } else { 2994 window.msg('網路é£ç·ç°å¸¸ï¼è«éæ°æ´ç', 'error').show(); 2995 self.closeModal() 2996 } 2997 }) 2998 }, 2999 // product image btn 3000 photoOnChange: function(photoIndex, isVariantReposition) { 3001 var visiblePhotos = (this.currentVariant && this.currentVariant.photos.length) 3002 ? this.currentVariant.photos 3003 : this.product.photos.map(function(p) { return p.photo; }); 3004 var result = themeHelper.buildNavigateItemImagePayload(this._navState, { 3005 product: this.product, 3006 currentVariant: this.currentVariant, 3007 visiblePhotos: visiblePhotos, 3008 slideIndex: photoIndex, 3009 videoOffset: this.firstImageIndex, 3010 }); 3011 this._navState = result.nextState; 3012 if (result.payload && !isVariantReposition) { 3013 window.navigateItemImage(result.payload); 3014 } 3015 this.currentImageIndex = photoIndex; 3016 }, 3017 toggleCurrentOption: function(key, value) { 3018 this.currentOption[key] = 3019 (this.currentOption[key] === value || value === 'null') ? null : value; 3020 var variantIndex = this.getVariantIndex(); 3021 if (variantIndex !== -1) { 3022 this.currentVariant = this.product.variants[variantIndex]; 3023 } else { 3024 this.currentVariant = null; 3025 } 3026 this.setChoose(this.product.variants[variantIndex]); 3027 if (this.currentOption[key] !== null) { 3028 var optionIndex = parseInt(key.replace('option', '')) - 1; 3029 appStoreSelectItemEvent(this.product, this.product.options[optionIndex], this.currentOption[key], this.currentVariant); 3030 } 3031 }, 3032 toggleNotification: function() { 3033 var self = this; 3034 var variantId = this.currentVariant.id; 3035 3036 $.ajax({ 3037 url: '/toggle_pv_notification', 3038 method: 'POST', 3039 dataType: 'json', 3040 data: { 3041 product_variant_id: variantId 3042 }, 3043 success: function(response) { 3044 self.variantNotifications[variantId] = response.notice; 3045 window.msg(response.message, "success").show(); 3046 }, 3047 error: function(xhr) { 3048 var response = xhr.responseJSON; 3049 var msg = response && response.error || "網路é£ç·ç°å¸¸ï¼è«éæ°æ´ç"; 3050 window.msg(msg, "error").show(); 3051 } 3052 }) 3053 }, 3054 getOptionImageIndex: function(index) { 3055 this.currentImageIndex = index; 3056 }, 3057 quantityDecrease: function() { 3058 if (this.cartItem) { 3059 themeHelper.EventBus.$emit('quantityDecrease', this.cartItem, false); 3060 this.quantity = this.cartItem.quantity 3061 } else { 3062 window.msg("è«é¸æå忬¾å¼", 'warning').show(); 3063 } 3064 }, 3065 quantityIncrease: function() { 3066 if (this.cartItem) { 3067 themeHelper.EventBus.$emit('quantityIncrease', this.cartItem, false); 3068 this.quantity = this.cartItem.quantity 3069 } else { 3070 window.msg("è«é¸æå忬¾å¼", 'warning').show(); 3071 } 3072 }, 3073 quantityChange: function(el) { 3074 if (this.cartItem) { 3075 themeHelper.EventBus.$emit('quantityChange', parseInt(el.target.value), this.cartItem, false); 3076 this.quantity = this.cartItem.quantity; 3077 el.target.value = this.cartItem.quantity; 3078 } else { 3079 window.msg("è«é¸æå忬¾å¼", 'warning').show(); 3080 } 3081 }, 3082 addProduct: function() { 3083 if (this.addCartText === 'è¯çµ¡åºå®¶') { 3084 $('#messagebuy-Modal').data('variant', this.currentVariant); 3085 $('#messagebuy-Modal').modal('show'); 3086 $('#messagebuy-Modal').css("background-color", "rgba(0, 0, 0, .6)"); 3087 } else if ( 3088 this.addCartText === 'å·²ç»è¨è£è²¨éç¥' || 3089 this.addCartText === 'å·²å®å®ï¼è²¨å°éç¥æ' 3090 ) { 3091 this.toggleNotification(); 3092 } else { 3093 if (this.cartItem) { 3094 try { 3095 if (this.isChoose) { 3096 themeHelper.EventBus.$emit('updateStore', 'update', this.cartItem, this.callBack) 3097 } else { 3098 themeHelper.EventBus.$emit('updateStore', 'add', this.cartItem, this.callBack) 3099 } 3100 3101 this.adding = true; 3102 this.closeModal(); 3103 } catch (e) { 3104 window.msg("å忬¾å¼ç°å¸¸", 'error').show(); 3105 } 3106 } else { 3107 window.msg("è«é¸æå忬¾å¼", 'warning').show(); 3108 } 3109 } 3110 }, 3111 closeModal: function() { 3112 themeHelper.EventBus.$emit('closeProductModal'); 3113 }, 3114 setDefaultOption: function() { 3115 var self = this; 3116 Object.keys(self.currentOption).map(function(optionKey) { 3117 self.currentOption[optionKey] = self.currentVariant[optionKey]; 3118 }); 3119 }, 3120 getVariantIndex: function() { 3121 var self = this; 3122 return self.product.variants.findIndex(function(variant, index) { 3123 var isVariant = true;
3124 Object.keys(self.currentOption).forEach(function(option) { 3125 if (variant[option] !== self.currentOption[option]) { 3126 isVariant = false; 3127 } 3128 }); 3129 return isVariant; 3130 }); 3131 }, 3132 3133 // 篩é¸éè¤åé 3134 getUniqueVariant: function(variants) { 3135 return variants.filter(function(value, index, self) { 3136 return self.indexOf(value) === index; 3137 }); 3138 }, 3139 groupBy(xs, key) { 3140 return xs.reduce(function(rv, x) { 3141 (rv[x[key]] = rv[x[key]] || []).push(x); 3142 return rv; 3143 }, {}); 3144 }, 3145 setUpDiscountsTag(data) { 3146 var self = this; 3147 var languagePrefix = '/' + ((window.shopScriptHelper && window.shopScriptHelper.i18nLocale) || 'zh-TW'); 3148 $.ajax({ 3149 url: languagePrefix + self.productUrl + '/discounts_list', 3150 method: 'GET', 3151 success: function(result) { 3152 if (result.length > 0) { 3153 var discounts_list = self.groupBy(result, 'campaign_type'); 3154 self.discountsList = discounts_list; 3155 } else { 3156 self.discountsList = null; 3157 } 3158 } 3159 }); 3160 }, 3161 getOptions: function(optionKey, optionTypes) { 3162 var self = this; 3163 return optionTypes.map(function(optionType, index) { 3164 var isValid = true; 3165 3166 // é¸åºå å«ç®åtypeçvariant 3167 var matchVariants = self.product.variants.filter(function(variant) { 3168 return variant[optionKey] === optionType; 3169 }); 3170 3171 // 篩é¸å·²å¾é¸type 3172 Object.keys(self.currentOption).forEach(function(currentOptionKey) { 3173 if (currentOptionKey !== optionKey) { 3174 matchVariants = matchVariants.filter(function(variant) { 3175 if (self.currentOption[currentOptionKey]) { 3176 return variant[currentOptionKey] === self.currentOption[currentOptionKey] 3177 } else { 3178 return true; 3179 } 3180 }); 3181 } 3182 }); 3183 if (matchVariants.length === 0) { 3184 isValid = false; 3185 } 3186 if (! self.isEmptyClickable) { 3187 isValid = false; 3188 matchVariants.find(function(item) { 3189 if (item.inventoryQuantity === null || item.inventoryQuantity > 0 || item.inventoryPolicy === 'continue') { 3190 isValid = true; 3191 } 3192 }); 3193 } 3194 return {name: optionType, isValid: isValid} 3195 }); 3196 } 3197 } 3198 }; 3199 }); 3200</script>
3200 3201 3202<!-- cyb_snippet _product_modal_js end --> 3203 3204<!-- cyb_snippet components/product_modal/product_modal end --> 3205 3206<!-- cyb_snippet messagebuy_modal start --> 3207 3208 3209<!-- cyb_snippet messagebuy_modal end --> 3210<!-- cyb_snippet components/rate_limit_modal start --> 3211<link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/rate_limit_modal-3a2e378145f8a165.css' rel='stylesheet' type='text/css' media='all' /> 3212 3213<div class="modal fade" id="rate-limit-modal" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="static" data-keyboard="false"> 3214 <div class="modal-dialog modal-dialog-centered" role="document"> 3215 <div class="modal-content"> 3216 <div class="modal-body"> 3217 <div class="qk-text--default_dark rate-limit-text"> 3218 <p id="rate-limit-title">ç®åæ¶è³¼äººæ½®ç¾å¤ï¼è«èå¿çå</p> 3219 <p class="qk-fs--body qk-fw--500 rate-limit-message"> 3220 <span class="qk-text--error" id="rate-limit-countdown"></span> 3221 <span id="rate-limit-desc"></span> 3222 </p> 3223 <p class="qk-fs--body qk-fw--500 rate-limit-message" id="rate-limit-warn">è¥é¢éæ¤é é¢ï¼å¯è½æå»¶é·çå¾ æéã</p> 3224 </div> 3225 <button id="rate-limit-btn" class="btn qk-btn qk-btn--primary" disabled>éæ°é²å ¥ååé </button> 3226 </div> 3227 </div> 3228 </div> 3229</div> 3230
3231<script> 3232 window.showRateLimitModal = function(countdownSec) { 3233 var countdown = countdownSec || 5; 3234 var $modal = $('#rate-limit-modal'); 3235 var $btn = $modal.find('#rate-limit-btn'); 3236 var $countdownEl = $modal.find('#rate-limit-countdown'); 3237 3238 $btn.show(); 3239 $modal.find('#rate-limit-desc').text(language["product_rate_limit_desc"]); 3240 $countdownEl.text(countdown); 3241 $btn.prop('disabled', true); 3242 $modal.modal('show'); 3243 3244 var timer = setInterval(function() { 3245 countdown--; 3246 $countdownEl.text(countdown); 3247 if (countdown <= 0) { 3248 clearInterval(timer); 3249 $btn.prop('disabled', false); 3250 } 3251 }, 1000); 3252 3253 $btn.off('click').on('click', function() { 3254 location.reload(); 3255 }); 3256 } 3257 3258 window.showAddCartRateLimitModal = function(countdownSec) { 3259 var countdown = countdownSec || 5; 3260 var $modal = $('#rate-limit-modal'); 3261 var $countdownEl = $modal.find('#rate-limit-countdown'); 3262 3263 $modal.find('#rate-limit-btn').hide(); 3264 $modal.find('#rate-limit-desc').text(language["addcart_rate_limit_desc"]); 3265 $countdownEl.text(countdown); 3266 $modal.modal('show'); 3267 3268 var timer = setInterval(function() { 3269 countdown--; 3270 $countdownEl.text(countdown); 3271 if (countdown <= 0) { 3272 clearInterval(timer); 3273 $modal.modal('hide'); 3274 } 3275 }, 1000); 3276 } 3277</script>
3277 3278 3279<!-- cyb_snippet components/rate_limit_modal end --> 3280
3281<script> 3282 $(document).ready(function() { 3283 const shouldSkipQuantityCheck = false; 3284 const newAddCartModalApp = new window.themeHelper.LiquidVueHandler({ 3285 componentNames: Object.keys(window.themeHelper.productModalComponents), 3286 mountSelector: '#new-addcart-modal', 3287 autoMount: false, 3288 }); 3289 3290 newAddCartModalApp.createApp({ 3291 el: '#new-addcart-modal', 3292 delimiters: ['${', '}'], 3293 data() { 3294 return { 3295 collectionId: 0, 3296 categories: [], 3297 color: '', // unused 3298 isCollection: true, 3299 productQuantity: 0, 3300 onlyDescription: false, 3301 showProductModal: false, 3302 popProductUrl: '', 3303 loading: false, 3304 }; 3305 }, 3306 mounted: function() { 3307 themeHelper.EventBus.$on('closeProductModal',this.closeProductModal); 3308 themeHelper.EventBus.$on('updateStore', this.addProduct); 3309 themeHelper.EventBus.$on('quantityDecrease', this.quantityDecrease); 3310 themeHelper.EventBus.$on('quantityIncrease', this.quantityIncrease); 3311 themeHelper.EventBus.$on('quantityChange', this.quantityChange); 3312 }, 3313 methods: { 3314 addProduct: function(actionType, productData, checkoutAddToCartCallback){ 3315 var self = this; 3316 var pageViewId = window.CYBERBIZ && window.CYBERBIZ.dis && window.CYBERBIZ.dis.pageViewId; 3317 $.ajax({ 3318 method: 'POST', 3319 url: '/cart/add', 3320 headers: pageViewId ? { 'X-Cyb-Page-View-Id': pageViewId } : {}, 3321 data: { 3322 id: productData.id, 3323 quantity: productData.quantity, 3324 }, 3325 dataType: 'json', 3326 beforeSend: function() { 3327 self.loading = true; 3328 themeHelper.ajaxLoadingMsg('loading'); 3329 $('.shopcart').dropdown('hide') 3330 $('.global-cart-count').hide(); 3331 $('.global-cart-loading').show(); 3332 $('.global-cart-loading').html('<i class="fa fa-spinner fa-pulse" style="vertical-align: middle;"></i>'); 3333 }, 3334 error: function(xhr) { 3335 $('.global-cart-loading').hide(); 3336 $('.global-cart-count').show(); 3337 self.loading = false; 3338 if (xhr.status === 429) { 3339 themeHelper.ajaxLoadingMsg('hide', 0); 3340 self.closeProductModal(); 3341 window.showAddCartRateLimitModal(5); 3342 return; 3343 } 3344 themeHelper.ajaxLoadingMsg('fail', 2000); 3345 } 3346 }).done(function(data, status, request){ 3347 // product modal ç«å³è³¼è²·æé 3348 window.sendAddToCartEvent && sendAddToCartEvent({ 3349 price: productData.price, 3350 quantity: productData.quantity, 3351 id: productData.product.id, 3352 name: productData.product.title, 3353 category: productData.product.productType, 3354 brand: productData.product.vendor, 3355 qc: productData.variant.qc, 3356 variant: { 3357 id: productData.variant.id, 3358 title: productData.variant.title, 3359 sku: productData.variant.sku, 3360 price: productData.variant.price, 3361 qc: productData.variant.qc, 3362 }, 3363 position: "ååå½åºè¦çª", 3364 request, 3365 }) 3366 if (self.isQuickBuy) { 3367 if (window.liquidHelper && window.liquidHelper.language && window.liquidHelper.language.handle) { 3368 window.location = "/" + window.liquidHelper.language.handle + "/cart"; 3369 } else { 3370 window.location = "/cart"; 3371 } 3372 } else { 3373 themeHelper.ajaxLoadingMsg('success'); 3374 pullNavCart(); 3375 $('.shopcart').dropdown('show') 3376 $('.global-cart-loading').hide(); 3377 self.loading = false; 3378 } 3379 if(typeof checkoutAddToCartCallback === 'function'){ 3380 var callbackData = { 3381 id: productData.id, 3382 quantity: productData.quantity, 3383 title: productData.product ? productData.product.title : productData.title || '' 3384 }; 3385 checkoutAddToCartCallback(callbackData) 3386 } 3387 peh.emit('product:add_to_cart', [{ 3388 variantId: productData.id, 3389 quantity: productData.quantity 3390 }], self.collectionId); 3391 }).fail(function(e){ 3392 if (e.status === 429) { 3393 return; 3394 } 3395 let err_msg = e.responseJSON.err_msg; 3396 err_msg && err_msg.length > 0 ? 3397 window.msg(e.responseJSON.err_msg, 'warning').show(): 3398 window.msg("å å ¥è³¼ç©è»æèª¤ï¼è«éæ°å試", 'warning').show(); 3399 }) 3400 }, 3401 quantityDecrease: function(cartItem, isAdded){ 3402 if (cartItem.quantity > 1) { 3403 cartItem.quantity -= 1; 3404 } else { 3405 window.msg("æ¸éä¸å¾çºä½æ¼ 1", 'warning').show(); 3406 } 3407 }, 3408 quantityIncrease: function(cartItem, isAdded){ 3409 const limitQuantity = cartItem.variant.inventoryQuantity; 3410 const limitBuy = cartItem.product.limitBuy 3411 if (limitBuy && cartItem.quantity >= limitBuy) { 3412 product_limit_buy = "æ¤ååéè³¼ limitBuy ä»¶".replace('limitBuy', limitBuy) 3413 window.msg(product_limit_buy, 'warning').show(); 3414 return; 3415 } else if (cartItem.quantity >= liquidHelper.cartQuantityLimit) { 3416 window.msg("æ¸éè¶ é購買ä¸é", 'warning').show(); 3417 } else if ( cartItem.quantity < limitQuantity || limitQuantity === null || 3418 cartItem.variant.inventoryPolicy == "continue" || shouldSkipQuantityCheck) { 3419 cartItem.quantity += 1; 3420 } else { 3421 this.showInventoryMessage(limitQuantity); 3422 } 3423 },
3424 quantityChange: function(quantity, cartItem, isAdded){ 3425 const limitBuy = cartItem.product.limitBuy 3426 var limitQuantity = cartItem.variant.inventoryQuantity; 3427 var inventoryPolicy = cartItem.variant.inventoryPolicy; 3428 if (Number.isInteger(quantity)) { 3429 if (quantity >= 1) { 3430 if (limitBuy && quantity >= limitBuy) { 3431 product_limit_buy = "æ¤ååéè³¼ limitBuy ä»¶".replace('limitBuy', limitBuy) 3432 window.msg(product_limit_buy, 'warning').show(); 3433 } else if (quantity > liquidHelper.cartQuantityLimit) { 3434 window.msg("æ¸éè¶ é購買ä¸é", 'warning').show(); 3435 } else if (quantity <= limitQuantity || limitQuantity === null || inventoryPolicy == "continue" || shouldSkipQuantityCheck) { 3436 cartItem.quantity = quantity; 3437 } else { 3438 cartItem.quantity = limitQuantity; 3439 this.showInventoryMessage(limitQuantity); 3440 } 3441 } else { 3442 window.msg("æ¸éä¸å¾çºä½æ¼ 1", 'warning').show(); 3443 } 3444 } else { 3445 window.msg("æ¸éè¼¸å ¥é¯èª¤", 'warning').show(); 3446 } 3447 }, 3448 popModal: function(productUrl, collectionId, color, isCollection, isShowDescription, isQuickBuy, variantId, checkoutAddToCartCallback, categories){ 3449 this.showProductModal = true; 3450 this.collectionId = collectionId; 3451 this.categories = categories || []; 3452 this.popProductUrl = productUrl; 3453 this.color = color || ''; // unused 3454 this.isCollection = isCollection || false; 3455 this.isShowDescription = isShowDescription != false; 3456 this.isQuickBuy = isQuickBuy || false; 3457 this.selectedVariantId = parseInt(variantId) || undefined; 3458 this.checkoutAddToCartCallback = checkoutAddToCartCallback; 3459 document.body.style.overflow = "hidden"; 3460 }, 3461 closeProductModal: function() { 3462 this.showProductModal = false; 3463 document.body.style.overflow = ""; 3464 }, 3465 showInventoryMessage: function(inventoryQuantity) { 3466 const stockMessage = "åå庫åå©é¤ count ä»¶".replace('count', inventoryQuantity || 0); 3467 window.msg(stockMessage, 'warning').show(); 3468 }, 3469 } 3470 }); 3471 3472 for (const componentName in window.themeHelper.productModalComponents) { 3473 newAddCartModalApp.component( 3474 componentName, 3475 window.themeHelper.productModalComponents[componentName], 3476 ); 3477 } 3478 3479 window.new_addcart_modal = newAddCartModalApp.mount(); 3480 }); 3481</script>
3481 3482 3483<!-- cyb_snippet new_addcart_modal end --> 3484<!-- cyb_snippet components/variant_options/variant_photos_block start -->
3485<script type="text/x-template" id="variant-photos-block"> 3486 <div class="product_photos qk-w--100"> 3487 <!-- æè²ç¥¨ --> 3488 <div class="product_photo img-flex qk-text--center" v-if="displayProductImagesColor"> 3489 <img id="photo_with_images_color" class="img-lazy" :src="imgLoadingImage" data-src="//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L3Byb2R1Y3RzLzU3OTAzNzAyLzE3NTM1ODQ4OTlfZTdmMzY5MWY4YWE2MWM4NTk5NTYuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=328d757fa9b00aa8" alt="å層è´è¶é ¥ ï½ èèå£å³" width="450" height="450"> 3490 </div> 3491 <!-- æ²è²ç¥¨ --> 3492 <div class="swiper swiper-container product_img_swiper" v-else> 3493 <ul class="swiper-wrapper qk-pd--0 qk-mg--0"> 3494 <video-display 3495 v-if="shouldShowVideo && !videoAfterImage" 3496 :poster="!!showPhotos.length ? showPhotos[0].imageUrl : imgLoadingImage" 3497 :videoUrl="videoUrl" 3498 ></video-display> 3499 <li class="swiper-slide product_photo img-flex qk-text--center qk-of--hidden default_scale" 3500 v-for="photo in showPhotos" 3501 :key="photo.id" 3502 > 3503 <img 3504 :data-src="photo.imageUrl" 3505 width="450" 3506 height="450" 3507 class="swiper-lazy" 3508 alt="å層è´è¶é ¥ ï½ èèå£å³" 3509 @click="onEnlargePhotos()" 3510 /> 3511 <div class="swiper-lazy-preloader"></div> 3512 </li> 3513 <li v-if="showDefault" class="swiper-slide product_photo img-flex qk-text--center qk-of--hidden default_scale"> 3514 <img :src="imgLoadingImage" data-src="//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L3Byb2R1Y3RzLzU3OTAzNzAyLzE3NTM1ODQ4OTlfZTdmMzY5MWY4YWE2MWM4NTk5NTYuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=328d757fa9b00aa8" alt="å層è´è¶é ¥ ï½ èèå£å³" width="450" height="450" class="swiper-lazy"> 3515 </li> 3516 <video-display 3517 v-if="shouldShowVideo && videoAfterImage" 3518 :poster="!!showPhotos.length ? showPhotos[0].imageUrl : imgLoadingImage" 3519 :videoUrl="videoUrl" 3520 ></video-display> 3521 </ul> 3522 <!-- Add Arrows --> 3523 <div class="photo-swiper-next qk-swiper_btn qk-swiper_btn--lg qk-swiper_btn--v1 qk-swiper_btn--next qk-hidden--mobile"></div> 3524 <div class="photo-swiper-prev qk-swiper_btn qk-swiper_btn--lg qk-swiper_btn--v1 qk-swiper_btn--prev qk-hidden--mobile"></div> 3525 <div class="photo-pagination qk-bd--default qk-bd--body qk-text--center qk-text--body qk-fs--breadcrumb qk-visible-sm"> 3526 <span class="current-index qk-text--default_dark">${activePhotoIndex + 1}</span><span class="pagination-slash">/</span> 3527 <span>${shouldShowVideo ? (showPhotos.length ? showPhotos.length + 1 : 2) : showPhotos.length || 1}</span> 3528 </div> 3529 </div> 3530 <!-- åçé 碼 --> 3531 <div v-if="showThumbnails" class="thumb qk-of--auto qk-hidden--phone"> 3532 <ul class="thumb-container qk-display--il_flex"> 3533 <video-thumbnail 3534 v-if="shouldShowVideo && !videoAfterImage" 3535 :active="isVideoActive" 3536 :video-url="videoUrl" 3537 @click="onClickThumbnail(videoIndex)" 3538 ></video-thumbnail> 3539 <li class="img-flex qk-bd--default qk-bd--border qk-cursor--pointer qk-of--hidden qk-display--il_flex" 3540 :class="{active: (shouldShowVideo && !videoAfterImage ? index + 1 : index) === activePhotoIndex}" 3541 v-for="(photo, index) in showPhotos" 3542 :key="photo.id" 3543 @click="onClickThumbnail(shouldShowVideo && !videoAfterImage ? index + 1 : index)" 3544 > 3545 <img class="img-lazy" :src="imgLoadingImage" :data-src="photo.imageUrl" alt="å層è´è¶é ¥ ï½ èèå£å³" width="50" height="50"> 3546 </li> 3547 <li v-if="showDefault" 3548 class="img-flex qk-bd--default qk-bd--border qk-of--hidden qk-display--il_flex" 3549 :class="{active: (shouldShowVideo && !videoAfterImage ? 1 : 0) === activePhotoIndex}" 3550 > 3551 <img class="img-lazy" :src="imgLoadingImage" data-src="//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L3Byb2R1Y3RzLzU3OTAzNzAyLzE3NTM1ODQ4OTlfZTdmMzY5MWY4YWE2MWM4NTk5NTYuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=328d757fa9b00aa8" alt="å層è´è¶é ¥ ï½ èèå£å³" width="50" height="50"> 3552 </li> 3553 <video-thumbnail 3554 v-if="shouldShowVideo && videoAfterImage" 3555 :active="isVideoActive" 3556 :video-url="videoUrl" 3557 @click="onClickThumbnail(videoIndex)" 3558 ></video-thumbnail> 3559 </ul> 3560 </div> 3561 </div> 3562</script>
3562 3563
3564<script type="text/javascript"> 3565 $(document).ready(function() { 3566 var autoSelectVariantBySku = false; 3567 3568 themeHelper.variantPhotosBlock.component('variant-photos-block', { 3569 template: '#variant-photos-block', 3570 delimiters: ['${', '}'], 3571 data: function() { 3572 return { 3573 variantPhotos: null, 3574 productPhotosMap: {}, 3575 productPhotos: [], 3576 manualSelectedVariant: false, 3577 activePhotoIndex: 0, 3578 _navState: { variantId: null, photoIndex: 0 }, 3579 suppressNavigateEvent: false, 3580 currentVariantForEvent: null, 3581 swiperPhotos: null, 3582 swiperGalleryChangeHandler: null, 3583 showDefault: true, 3584 videoUrl: '', 3585 videoAfterImage: false, 3586 imgLoadingImage:"//cdn1-next.cybassets.com/img_loading.svg", 3587 thumbScrollHandler: null, 3588 thumbScrollTimeout: null, 3589 showThumbnails: false, 3590 } 3591 }, 3592 props: { 3593 displayProductImagesColor: Boolean, 3594 productPhotosJson: String, 3595 productVideo: Object, 3596 videoDisplayLocation: String, 3597 productId: [String, Number], 3598 productTitle: String, 3599 }, 3600 mounted: async function() { 3601 this.productPhotos = JSON.parse(this.productPhotosJson.replace(/'/g, '"')); 3602 this.productPhotosMap = 3603 this.productPhotos.reduce((acc, cur) => { 3604 acc[cur.id] = cur; 3605 return acc; 3606 }, {}); 3607 this.videoUrl = !!this.productVideo && this.productVideo.url; 3608 this.showDefault = !this.showPhotos.length; 3609 this.videoAfterImage = this.videoDisplayLocation === 'after'; 3610 themeHelper.EventBus.$on('updatePhotos', this.onUpdatePhotos); 3611 this.swiperGalleryChangeHandler = (_event, payload) => this.onSwiperGalleryChange(payload); 3612 $(document).on('swiper-gallery-change', this.swiperGalleryChangeHandler); 3613 3614 var sku = window.getURLParameter('sku'); 3615 3616 if (sku && autoSelectVariantBySku) { 3617 themeHelper.EventBus.$on('skuReady', this.onSkuReady); 3618 } else { 3619 this.showThumbnails = true; 3620 await this.initPhotosUI(); 3621 } 3622 }, 3623 beforeUnmount: function() { 3624 this.removeThumbScrollListener(); 3625 if (this.swiperGalleryChangeHandler) { 3626 $(document).off('swiper-gallery-change', this.swiperGalleryChangeHandler); 3627 } 3628 }, 3629 methods: { 3630 navigateItemImagePayload: function(state, slideIndex, videoOffset) { 3631 return themeHelper.buildNavigateItemImagePayload(state, { 3632 product: { id: this.productId, title: this.productTitle }, 3633 currentVariant: this.currentVariantForEvent, 3634 visiblePhotos: this.showPhotos, 3635 slideIndex: slideIndex, 3636 videoOffset: videoOffset, 3637 }); 3638 }, 3639 initPhotosUI: async function() { 3640 await this.$nextTick(); 3641 this.initSwiper(); 3642 3643 this._navState = this.navigateItemImagePayload(this._navState, this.initialItemIndex, this.videoOffset).nextState; 3644 3645 // åå§åç¸®åæ»¾åç£è½ 3646 this.initThumbScrollListener(); 3647 3648 const videoElement = $('.product_video.swiper-slide-active video')[0]; 3649 if (videoElement) { 3650 videoElement.addEventListener('canplay', (event) => { 3651 this.sendGtag('play'); 3652 }, { once: true }); 3653 } 3654 }, 3655 onSkuReady: async function() { 3656 await this.initPhotosUI(); 3657 this.showThumbnails = true; 3658 await this.$nextTick(); 3659 imgLazyLoad.update(); 3660 themeHelper.EventBus.$emit('skuPhotosReady'); 3661 }, 3662 initThumbScrollListener: function() { 3663 const thumbScrollContainer = this.$el.querySelector('.thumb'); 3664 3665 if (thumbScrollContainer) { 3666 this.removeThumbScrollListener(); 3667 this.thumbScrollHandler = () => { 3668 clearTimeout(this.thumbScrollTimeout); 3669 this.thumbScrollTimeout = setTimeout(() => { 3670 if (window.imgLazyLoad) { 3671 imgLazyLoad.update(); 3672 } 3673 }, 100); 3674 };
3675 thumbScrollContainer.addEventListener('scroll', this.thumbScrollHandler); 3676 } 3677 }, 3678 removeThumbScrollListener: function() { 3679 const thumbScrollContainer = this.$el.querySelector('.thumb'); 3680 3681 if (thumbScrollContainer && this.thumbScrollHandler) { 3682 thumbScrollContainer.removeEventListener('scroll', this.thumbScrollHandler); 3683 clearTimeout(this.thumbScrollTimeout); 3684 this.thumbScrollHandler = null; 3685 } 3686 }, 3687 sendGtag: function(action){ 3688 window.productVideoView && productVideoView(action); 3689 }, 3690 handleVideoClick: function() { 3691 const video = $('.product_video.swiper-slide-active video')[0]; 3692 const button = $('.product_video.swiper-slide-active button'); 3693 if (video.paused){ 3694 video.play(); 3695 this.sendGtag('play'); 3696 } else { 3697 video.pause(); 3698 this.sendGtag('paused'); 3699 } 3700 this.handleVideoButtonDisplay(button, video); 3701 }, 3702 handleVideoButtonDisplay: function(button, video) { 3703 button.toggleClass('videoPlayer__playButton', video.paused); 3704 button.toggleClass('videoPlayer__pauseButton', !video.paused); 3705 }, 3706 onUpdatePhotos: async function(currentVariant) { 3707 this.suppressNavigateEvent = true; 3708 this.currentVariantForEvent = currentVariant && currentVariant.variant 3709 ? { id: currentVariant.variant.id, sku: currentVariant.variant.sku } 3710 : null; 3711 if (this.swiperPhotos) { 3712 this.swiperPhotos.destroy(true, true); 3713 } 3714 $('.product_img_swiper .swiper-slide-duplicate').remove(); 3715 $('.product_img_swiper .swiper-lazy-loading').removeClass('swiper-lazy-loading'); 3716 this.manualSelectedVariant = currentVariant ? currentVariant.withSpecificVariant : false; 3717 if (currentVariant && currentVariant.photos.length) { 3718 this.variantPhotos = currentVariant.photos.map(p => this.productPhotosMap[p.id]); 3719 } else { 3720 this.variantPhotos = null; 3721 } 3722 3723 this.activePhotoIndex = this.initialItemIndex; 3724 3725 this._navState = this.navigateItemImagePayload(this._navState, this.activePhotoIndex, this.videoOffset).nextState; 3726 await this.$nextTick(); 3727 imgLazyLoad.update(); 3728 this.initSwiper(); 3729 this.suppressNavigateEvent = false; 3730 }, 3731 onEnlargePhotos: function() { 3732 gallery_img.updateImgs(this.maxPhotos); 3733 gallery_img.toggleGallery(true, { 3734 index: this.swiperPhotos.realIndex - this.videoOffset 3735 }); 3736 }, 3737 onSwiperGalleryChange: function(payload) { 3738 if (!payload || payload.galleryName !== 'img') return; 3739 3740 var result = this.navigateItemImagePayload( 3741 { 3742 variantId: this.currentVariantForEvent ? this.currentVariantForEvent.id : null, 3743 photoIndex: payload.fromIndex, 3744 }, 3745 payload.toIndex, 3746 0 3747 ); 3748 3749 if (result.payload && !this.suppressNavigateEvent) { 3750 window.navigateItemImage(result.payload); 3751 } 3752 }, 3753 onClickThumbnail: function(index) { 3754 this.activePhotoIndex = index; 3755 this.swiperPhotos.slideTo(index + 1, 500); 3756 }, 3757 setVideosVolumeZero: function() { 3758 // video duplication because of swiper loop mode 3759 const videos = $('.product_video video'); 3760 videos.each((_index, el)=> { 3761 el.volume = 0; 3762 }); 3763 }, 3764 initSwiper: function() { 3765 var self = this; 3766 this.swiperPhotos = new Swiper('.product_img_swiper', { 3767 preloadImages: false, 3768 lazy: { 3769 loadPrevNext: true, 3770 }, 3771 loop: true, 3772 navigation: { 3773 nextEl: '.photo-swiper-next', 3774 prevEl: '.photo-swiper-prev', 3775 }, 3776 initialSlide: this.initialItemIndex, 3777 }); 3778 if (self.videoUrl) { 3779 self.setVideosVolumeZero(); 3780 } 3781 this.swiperPhotos.on('touchEnd', function () { 3782 setTimeout(function() { 3783 self.activePhotoIndex = self.swiperPhotos.realIndex; 3784 }, 300); 3785 }); 3786 this.swiperPhotos.on('activeIndexChange', function() { 3787 self.activePhotoIndex = self.swiperPhotos.realIndex; 3788 }); 3789 this.swiperPhotos.on('click', function () { 3790 if (self.isVideoActive) { 3791 self.handleVideoClick() 3792 } 3793 }); 3794 this.swiperPhotos.on('transitionEnd', function () { 3795 if (self.isVideoActive) { 3796 const video = $('.product_video.swiper-slide-active video')[0]; 3797 const button = $('.product_video.swiper-slide-active button'); 3798 self.handleVideoButtonDisplay(button, video); 3799 } 3800 }); 3801 } 3802 }, 3803 computed: { 3804 shouldShowVideo: function() { 3805 return !!this.videoUrl; 3806 }, 3807 initialItemIndex: function() { 3808 if (this.shouldShowVideo && !this.videoAfterImage) { 3809 // Focus on photo if "variant with photos" selected, video otherwise 3810 return (this.manualSelectedVariant && !!this.variantPhotos?.length) ? 1 : 0; 3811 } else { 3812 // Focus on first photo 3813 return 0; 3814 } 3815 }, 3816 isVideoActive: function() { 3817 return this.shouldShowVideo && this.activePhotoIndex === this.videoIndex; 3818 }, 3819 showPhotos: function() { 3820 return this.variantPhotos || this.productPhotos; 3821 }, 3822 maxPhotos: function() { 3823 return this.showPhotos.map(p => p.imageMaxUrl); 3824 }, 3825 videoIndex: function(){ 3826 return this.videoAfterImage 3827 ? this.manualSelectedVariant && !!this.variantPhotos?.length 3828 ? this.variantPhotos?.length 3829 : this.showPhotos.length || 1 3830 : 0 3831 }, 3832 videoOffset: function() { 3833 return (this.shouldShowVideo && !this.videoAfterImage) ? 1 : 0; 3834 }, 3835 }, 3836 watch: { 3837 activePhotoIndex: function(newIndex) { 3838 var result = this.navigateItemImagePayload(this._navState, newIndex, this.videoOffset); 3839 this._navState = result.nextState; 3840 if (result.payload && !this.suppressNavigateEvent) { 3841 window.navigateItemImage(result.payload); 3842 } 3843 }, 3844 } 3845 }); 3846 }) 3847</script>
3847 3848 3849<!-- cyb_snippet components/variant_options/video_display start -->
3850<script type="text/x-template" id="video-display"> 3851 <li 3852 class="swiper-slide product_video img-flex qk-text--center qk-of--hidden default_scale"> 3853 <div class="videoPlayer__wrapper qk-of--hidden"> 3854 <video 3855 class="videoPlayer__video qk-cursor--pointer" 3856 :poster="poster" 3857 loop defaultMuted muted playsinline webkit-playsinline autoplay 3858 > 3859 <source :src="videoUrl" type="video/mp4"> 3860 <p>ä½ çç覽å¨ä¸æ¯æ´ HTML 5 video</p> 3861 </video> 3862 <button class="videoPlayer__pauseButton"></button> 3863 </div> 3864 </li> 3865</script>
3865 3866
3867<script type="text/javascript"> 3868 $(document).ready(function() { 3869 themeHelper.variantPhotosBlock.component('video-display', { 3870 template: '#video-display', 3871 delimiters: ['${', '}'], 3872 data: function() { 3873 return { 3874 imgLoadingImage:"//cdn1-next.cybassets.com/img_loading.svg", 3875 } 3876 }, 3877 props: { 3878 poster: String, 3879 showPhotos: Object, 3880 videoUrl: String, 3881 }, 3882 }); 3883 }) 3884</script>
3884 3885 3886<!-- cyb_snippet components/variant_options/video_display end --> 3887<!-- cyb_snippet components/variant_options/video_thumbnail start -->
3888<script type="text/x-template" id="video-thumbnail"> 3889 <li 3890 :class="{active}" 3891 class="img-flex qk-bd--default qk-bd--border qk-cursor--pointer qk-of--hidden qk-display--il_flex" 3892 @click="click" 3893 > 3894 <video width="50" height="50"> 3895 <source :src="videoUrl" type="video/mp4"> 3896 </video> 3897 <button class="videoPlayer__playButton"></button> 3898 </li> 3899</script>
3899 3900
3901<script type="text/javascript"> 3902 $(document).ready(function() { 3903 themeHelper.variantPhotosBlock.component('video-thumbnail', { 3904 template: '#video-thumbnail', 3905 delimiters: ['${', '}'], 3906 props: { 3907 active: Boolean, 3908 click: Function, 3909 videoUrl: String, 3910 }, 3911 }); 3912 }) 3913</script>
3913 3914 3915<!-- cyb_snippet components/variant_options/video_thumbnail end --> 3916 3917<!-- cyb_snippet components/variant_options/variant_photos_block end --> 3918<!-- cyb_snippet components/variant_options/variant_options_block start -->
3919<script type="text/x-template" id="variant-options-block"> 3920 <div> 3921 <div v-for="(option, index) in optionInfo" class="product-variant-option" :class="{'product-variant-option--hidden': shouldHideSingleVariantOptions}"> 3922 <p></p> 3923 <color-option 3924 v-if="isImageColor && option.name === 'é¡è²'" 3925 :option-key="'option' + (index + 1)" 3926 :option="option" 3927 :image-colors="imageColors" 3928 :current-image-index="currentImageIndex" 3929 :set-current-image-index="setCurrentImageIndex" 3930 :get-option-image-index="getOptionImageIndex" 3931 :current-option="currentOption" 3932 /> 3933 <div class="advance variant-select-option" v-else-if="styledShopMenu==='dropDownType'"> 3934 3935 <label>${option.name}</label> 3936 <svg height="20" width="20" viewBox="0 0 20 20" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><path d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"> </path></svg> 3937 <select v-show="!isMobileSize" class="qk-bg--theme_bg" :class="{'select_placeholder-color': currentOption[`option${index + 1}`] === null}" :value="String(currentOption[`option${index + 1}`])" @change="setOption(`option${index + 1}`, $event.target.value, option.types )" > 3938 <option value="null" class="select_option-hidden">è«é¸æ${option.name}</option> 3939 <option v-for="(types) in option.types" :disabled="!types.isValid" :value="types.name">${types.name}</option> 3940 </select> 3941 <span class="select_placeholder-color" v-if="currentOption[`option${index + 1}`] === null" v-show="isMobileSize" @click="onClickSelectModal(option,`option${index + 1}`)">è«é¸æ${option.name}</span> 3942 <span v-else :value="currentOption[`option${index + 1}`]" v-show="isMobileSize" @click="onClickSelectModal(option,`option${index + 1}`)" v-html="currentOption[`option${index + 1}`]"></span> 3943 </div> 3944 <advance-variant-option 3945 v-else 3946 :option-key="'option' + (index + 1)" 3947 :option="option" 3948 :current-option="currentOption" 3949 /> 3950 </div> 3951 <div class="mobile-modal" :class="{ 'modal-open': isModalSelectShow && isMobileSize }"> 3952 <div class="mobile_modal-content"> 3953 3954 <div class="modal_close-button"> 3955 <button class="btn-close qk-circle qk-circle--md qk-pos--abs qk-op--100 qk-text--heading qk-bd--product_border qk-bd--default" @click="onChangeModalSelect(false,true)"></button> 3956 </div> 3957 <p>è«é¸æ${modalOption.name}</p> 3958 <div class="modal_select-templete qk-display--flex qk-of_y--auto qk-w--100"> 3959 <div class="options-container"> 3960 <label :class="{'seleced-option': currentOption && currentOption[selectOption] === data.name, 'avoid-clicks':!data.isValid}" v-for="data in modalOption.types" @click="setOption(selectOption, data.name, modalOption.types)">${data.name}</label> 3961 </div> 3962 </div> 3963 <div v-if="isCartEnabled && salesModePurchasable" class="modal_select_footer qk-display--flex qk-hidden--pc"> 3964 <div v-show="variantSize === 1" class="qk-display--flex qk-w--100"> 3965 <div class="product_variant_quantity"> 3966 <span class="product_quantity"> 3967 <div v-if="isModalSelectShow && isMobileSize" class="btn-group" role="group" aria-label="First group"> 3968 <button class="btn add-down qk-bd--product_border" type="button" @click="quantityChange(false)" ></button> 3969 <input class="btn item-quantity qk-text--heading qk-bd--product_border" type="text" name="quantity" value="1" data-old-value="1"> 3970 <button class="btn add-up qk-bd--product_border" type="button" @click="quantityChange(true)"></button> 3971 </div> 3972 </span> 3973 </div> 3974 <button 3975 class="btn addToCart_mobile btn_to_cart_mobile open_product_modal qk-btn qk-btn--secondary qk-flex--1 qk-fs--breadcrumb qk-text-truncate" 3976 data-handle="å層è´è¶é ¥-ï½-æ°å-èèå£å³"> 3977 å å ¥è³¼ç©è»</button> 3978 </div> 3979 <div v-show="variantSize > 1" class="qk-display--flex qk-w--100"> 3980 <button type="button" class="modal_cancel qk-w--50 qk-bd--default qk-btn--secondary qk-bd--button qk-text--button" @click="onChangeModalSelect(false,false)">åæ¶</button> 3981 <button type="button" class="qk-btn qk-w--50 qk-btn--primary qk-btn--lg qk-fs--body qk-bd--button qk-test--button_text" @click="onChangeModalSelect(false,true)">宿</button> 3982 </div> 3983 </div> 3984 </div> 3985 </div> 3986 </div> 3987</script>
3987 3988 3989<!-- cyb_snippet components/variant_options/color_image_option start -->
3990<script id="color-option" type="text/x-template"> 3991 <div class="option color_option"> 3992 <span class="title qk-text--heading">ååé¡è²:</span> 3993 <label 3994 v-for="(imageColor, index) in imageColors" 3995 :class="{ 3996 'image-option': true, 3997 'selected': selectedClass(index), 3998 'disabled': disabledClass(index), 3999 }" 4000 @mouseleave="setCurrentImageIndex(index)" 4001 @mouseover="getOptionImageIndex(index)" 4002 @click="setOption(optionKey, index)" 4003 class="qk-bd--default qk-bd--border" 4004 > 4005 <span class="img-flex qk-display--il_bk"> 4006 <img v-if="imageColor !== 'noColorImage'" :src="imageColor.large" alt="image"> 4007 <img v-else src="/assets/no-image-large.png" alt="image"> 4008 </span> 4009 </label> 4010 </div> 4011</script>
4011 4012
4013<script type="text/javascript"> 4014 $(document).ready(function () { 4015 themeHelper.variantOptionsBlock.component('color-option', { 4016 template: '#color-option', 4017 delimiters: ['${', '}'], 4018 props: { 4019 optionKey: String, 4020 option: Object, 4021 imageColors: Array, 4022 setCurrentImageIndex: Function, 4023 getOptionImageIndex: Function, 4024 currentOption: Object, 4025 }, 4026 methods: { 4027 setOption: function(optionKey, index) { 4028 var type = this.option.types[index]; 4029 if (type.isValid) { 4030 themeHelper.EventBus.$emit('toggleCurrentOption', optionKey, type.name); 4031 } 4032 }, 4033 selectedClass: function(index) { 4034 return this.currentOption[this.optionKey] === this.option.types[index].name; 4035 }, 4036 disabledClass: function(index) { 4037 return !this.option.types[index].isValid; 4038 }, 4039 }, 4040 }); 4041 }); 4042</script>
4042 4043 4044<!-- cyb_snippet components/variant_options/color_image_option end --> 4045<!-- cyb_snippet components/variant_options/advance_option start -->
4046<script id="advance-variant-option" type="text/x-template"> 4047 <div class="advance"> 4048 <div class="option_title qk-text--heading">${option.name}</div> 4049 <label 4050 v-for="type in option.types" 4051 :class="{ 4052 'selected': selectedClass(type), 4053 'disabled': disabledClass(type), 4054 }" 4055 @click="setOption(optionKey, type)" 4056 class="option qk-btn qk-btn--md qk-bd--button qk-text--button qk-text--center qk-pd_x--1" 4057 > 4058 <span class="text">${type.name}</span> 4059 </label> 4060 </div> 4061</script>
4061 4062
4063<script type="text/javascript"> 4064 $(document).ready(function() { 4065 themeHelper.variantOptionsBlock.component('advance-variant-option', { 4066 template: '#advance-variant-option', 4067 delimiters: ['${', '}'], 4068 props: { 4069 optionKey: String, 4070 option: Object, 4071 currentOption: Object, 4072 }, 4073 methods: { 4074 setOption: function(optionKey, type) { 4075 if(type.isValid){ 4076 themeHelper.EventBus.$emit('toggleCurrentOption', optionKey, type.name); 4077 } 4078 }, 4079 selectedClass: function(type) { 4080 return this.currentOption[this.optionKey] === type.name; 4081 }, 4082 disabledClass: function(type) { 4083 return !type.isValid; 4084 }, 4085 } 4086 }); 4087 }); 4088</script>
4088 4089 4090<!-- cyb_snippet components/variant_options/advance_option end --> 4091 4092 4093<!-- cyb_snippet _variant_options_block_js start -->
4094<script type="text/javascript"> 4095 $(document).ready(function() { 4096 themeHelper.variantOptionsBlock.component('variant-options-block', { 4097 template: '#variant-options-block', 4098 delimiters: ['${', '}'], 4099 props: { 4100 productApiUrl: String, 4101 sku: String, 4102 autoSelectVariantBySku: Boolean, 4103 hideOtherVariantsBySku: Boolean, 4104 hideSingleVariantOptions: Boolean, 4105 salesModePurchasable: Boolean, 4106 defaultPrice: String, 4107 defaultComparePrice: String, 4108 defaultDiscounted: Boolean, 4109 }, 4110 data: function() { 4111 return { 4112 styledShopMenu: "buttonType", 4113 currentImageIndex: 0, 4114 isModalSelectShow: false, 4115 selectOption: '', 4116 selectCurrentStr:'', 4117 modalOption: {}, 4118 currentOption: { 4119 option1: null, 4120 option2: null, 4121 option3: null, 4122 }, 4123 currentVariant: null, 4124 product: {}, 4125 isLoading: true, 4126 isImageColorsUsed: liquidHelper.isImageColorsUsed, 4127 isEmptyClickable: liquidHelper.isEmptyClickable, 4128 hasPriceWithDiscountPlugin: liquidHelper.hasPriceWithDiscountPlugin, 4129 isCartEnabled: liquidHelper.isCartEnabled, 4130 } 4131 }, 4132 mounted: function() { 4133 this.getProductDetail(); 4134 themeHelper.EventBus.$on('toggleCurrentOption',this.toggleCurrentOption); 4135 }, 4136 computed: { 4137 imageColors: function() { 4138 //è²ç¥¨ä¸å®æå° 4139 var self = this; 4140 var images = this.photoUrls.slice(0); 4141 var imageColorNum = this.colorOption.length; 4142 for(var i = imageColorNum; i < imageColorNum * 2; i++) { 4143 if(!images[i]) { 4144 images.push('noColorImage'); 4145 } 4146 } 4147 return images.slice(imageColorNum, imageColorNum * 2); 4148 }, 4149 photoUrls: function() { 4150 return this.product.photoUrls.length > 0 ? this.product.photoUrls : [this.featuredImage]; 4151 }, 4152 featuredImage: function() { 4153 return this.product.featuredImage; 4154 }, 4155 swiperPhotos: function() { 4156 if(this.isImageColor) { 4157 return this.photoUrls.slice(0, this.colorOption.length); 4158 } 4159 return this.photoUrls.length > 0 ? this.photoUrls : [this.featuredImage]; 4160 }, 4161 firstValidVariant: function() { 4162 var self = this; 4163 var result = this.product.variants.find(function(variant) { 4164 return variant.available; 4165 }); 4166 4167 return result ? result : null; 4168 }, 4169 shouldHideOtherVariants: function() { 4170 return this.hideOtherVariantsBySku && 4171 this.sku && 4172 this.currentVariant && 4173 this.currentVariant.sku === this.sku; 4174 }, 4175 shouldHideSingleVariantOptions: function() { 4176 return this.hideSingleVariantOptions && 4177 this.product.variants && 4178 this.product.variants.length <= 1; 4179 }, 4180 options: function() { 4181 return this.product.options; 4182 }, 4183 optionTypes: function() { 4184 // å æ ¹æè¨å®çvariantsä¾æåº 4185 var self = this; 4186 4187 var option1 = []; 4188 var option2 = []; 4189 var option3 = [];
4190 this.product.variants.forEach(function(item) { 4191 if (item.option1 !== null) option1.push(item.option1); 4192 if (item.option2 !== null) option2.push(item.option2); 4193 if (item.option3 !== null) option3.push(item.option3); 4194 }) 4195 4196 var filteredOptionTypes = []; 4197 this.product.optionTypes.forEach(function(item, index) { 4198 filteredOptionTypes.push(self.getUniqueVariant(eval('option' + (index + 1))).join(',')); 4199 }); 4200 4201 return filteredOptionTypes; 4202 }, 4203 optionInfo: function() { 4204 var self = this; 4205 4206 if (self.options) { 4207 return self.options.map(function(option, index) { 4208 return { 4209 name: option, 4210 types: self.getOptions('option' + (index + 1), self.optionTypes[index].split(',')) 4211 } 4212 }); 4213 } 4214 }, 4215 colorOptionIndex: function() { 4216 return this.options.findIndex(function(option) { 4217 return option === 'é¡è²'; 4218 }); 4219 }, 4220 colorOption: function() { 4221 var optionIndex = this.colorOptionIndex 4222 return optionIndex === -1 ? null : this.optionTypes[optionIndex].split(','); 4223 }, 4224 isImageColor: function() { 4225 return this.isImageColorsUsed && _.includes(this.product.options, 'é¡è²'); 4226 }, 4227 isMobileSize: function() { 4228 return window.innerWidth <= 580 4229 }, 4230 variantSize: function() { 4231 if(this.product.options){ 4232 return this.product.options.length; 4233 } 4234 }, 4235 isAutoSelectVariantBySku: function() { 4236 return this.sku && this.autoSelectVariantBySku; 4237 }, 4238 }, 4239 methods: { 4240 onClickSelectModal: function(objData, selectOptionStr) { 4241 this.isModalSelectShow = true; 4242 this.modalOption = objData; 4243 this.selectOption = selectOptionStr 4244 }, 4245 onChangeModalSelect: function(flag, isSelect) { 4246 if(!isSelect){ 4247 this.setOption(this.selectOption,this.selectCurrentStr,this.modalOption.types) 4248 } 4249 this.isModalSelectShow = flag; 4250 }, 4251 setOption: function(optionKey, type, dataArr) { 4252 let flag = true 4253 dataArr.forEach(item => { 4254 if (item.name === type) { 4255 flag = item.isValid 4256 } 4257 }) 4258 if (flag) { 4259 this.toggleCurrentOption(optionKey, type) 4260 } 4261 }, 4262 setChoose: function(currentVariant) { 4263 var currentVariantData = {}; 4264 if (currentVariant) { 4265 currentVariantData = { 4266 id: this.currentVariant.id, 4267 bonus: this.currentVariant.maxUsableBonus, 4268 name: this.currentVariant.title, 4269 inventoryPolicy: this.currentVariant.inventoryPolicy, 4270 compareAtPrice: this.currentVariant.compareAtPrice, 4271 imgUrl: this.currentVariant.imgUrl, 4272 inventoryQuantity: this.currentVariant.inventoryQuantity, 4273 option1: this.currentVariant.option1, 4274 option2: this.currentVariant.option2, 4275 option3: this.currentVariant.option3, 4276 price: this.currentVariant.price, 4277 productId: this.currentVariant.productId, 4278 sku: this.currentVariant.sku, 4279 qc: this.currentVariant.qc, 4280 hidePrice: this.product.hidePrice === true, 4281 }; 4282 } else { 4283 currentVariantData = { 4284 price: this.defaultPrice, 4285 compareAtPrice: this.defaultComparePrice, 4286 isDiscounted: this.defaultDiscounted, 4287 hidePrice: this.product.hidePrice === true, 4288 } 4289 } 4290 const isUpcomingProduct = this.isSellTimeAfterNow(this.product.sellFrom); 4291 this.$emit('set-choose', currentVariantData, isUpcomingProduct); 4292 }, 4293 onError: function() { 4294 window.msg("", 'error').show(); 4295 }, 4296 showRateLimitPopup: function() { 4297 showRateLimitModal(5); 4298 }, 4299 4300 // get product detail 4301 getProductDetail: function() { 4302 var self = this; 4303 $.ajax({ 4304 url: self.productApiUrl + '.json', 4305 type: 'GET', 4306 timeout: 30000, 4307 beforeSend: function() { 4308 self.isLoading = true; 4309 }, 4310 error: function(xhr){ 4311 if (xhr.status === 429) { 4312 self.isLoading = false;
4313 self.showRateLimitPopup(); 4314 } else { 4315 self.onError(); 4316 } 4317 } 4318 }).done(function(data){ 4319 if (!data.id) { 4320 self.onError(); 4321 return; 4322 } 4323 4324 var productData = [themeHelper.toCamelCase(data)]; 4325 self.product = themeHelper.priceWithDiscount(productData, self.hasPriceWithDiscountPlugin)[0]; 4326 4327 var shouldSkipAutoSelected = false; 4328 4329 if (self.isAutoSelectVariantBySku) { 4330 var skuVariant = self.product.variants.find(function(variant) { 4331 return variant.sku === self.sku; 4332 }); 4333 4334 if (skuVariant) { 4335 if (self.isEmptyClickable || 4336 skuVariant.inventoryPolicy === "continue" || 4337 skuVariant.inventoryQuantity > 0) { 4338 self.applyVariant(skuVariant, true); 4339 themeHelper.EventBus.$emit('skuReady'); 4340 self.isLoading = false; 4341 return; 4342 } else { 4343 // è¥ sku åå¨ä½ä¸å¯è³¼è²·ï¼åè·³é第ä¸å款å¼é¸æ 4344 shouldSkipAutoSelected = true; 4345 } 4346 } else { 4347 // è¥ sku ä¸åå¨ï¼åè·³é第ä¸å款å¼é¸æ 4348 shouldSkipAutoSelected = true; 4349 } 4350 themeHelper.EventBus.$emit('skuReady'); 4351 } 4352 4353 if ( 4354 !shouldSkipAutoSelected && ( 4355 self.product.variants.length === 1 || 4356 liquidHelper.isFirstVariantSelected 4357 )) { 4358 var variant = self.product.variants.length === 1 ? self.product.variants[0] : self.firstValidVariant; 4359 if (!variant) { 4360 self.isLoading = false; 4361 return; 4362 } 4363 4364 if ( 4365 !self.isEmptyClickable && 4366 variant.inventoryPolicy === "deny" && 4367 variant.inventoryQuantity === 0 4368 ) { 4369 self.isLoading = false; 4370 return; 4371 } 4372 4373 self.applyVariant(variant, false); 4374 if (self.isImageColorsUsed) { // è¥æé¡¯ç¤ºè²ç¥¨ä¸æé é¸ç¬¬ä¸å款å¼çæ´æåç 4375 var firstValidColorIndex = self.colorOption.findIndex(function(item) { 4376 return item === variant.option1 4377 }); 4378 self.$emit('get-option-image', self.photoUrls[firstValidColorIndex].grande); 4379 } 4380 } 4381 4382 self.isLoading = false; 4383 }) 4384 }, 4385 applyVariant: function(variant, waitPhotosReady) { 4386 var self = this; 4387 this.currentVariant = variant; 4388 this.setChoose(variant); 4389 this.setDefaultOption(); 4390 4391 if (waitPhotosReady) { 4392 themeHelper.EventBus.$on('skuPhotosReady', function () { 4393 if (variant.photos && variant.photos.length > 0) { 4394 self.setVariantPhotos(); 4395 } 4396 }); 4397 } else { 4398 this.setVariantPhotos(); 4399 } 4400 }, 4401 toggleCurrentOption: function(key, value) { 4402 if (this.product.variants.length === 1) { 4403 return; 4404 } 4405 4406 if (this.shouldHideOtherVariants) { 4407 return; 4408 } 4409 4410 this.currentOption[key] = 4411 (this.currentOption[key] === value || value === 'null') ? null : value; 4412 var variantIndex = this.getVariantIndex(); 4413 if(variantIndex !== -1) { 4414 this.currentVariant = this.product.variants[variantIndex]; 4415 } else { 4416 this.currentVariant = null; 4417 } 4418 this.setChoose(this.product.variants[variantIndex]); 4419 if (this.currentOption[key] !== null) { 4420 var optionIndex = parseInt(key.replace('option', '')) - 1; 4421 appStoreSelectItemEvent(this.product, this.product.options[optionIndex], this.currentOption[key], this.currentVariant); 4422 } 4423 if (Object.values(this.currentOption).every(v => v === null) || this.currentVariant) { 4424 this.setVariantPhotos(); 4425 } 4426 }, 4427 setCurrentImageIndex: function(index) {
4428 this.currentImageIndex = this.getSelectedColorIndex(); 4429 if (this.currentImageIndex > -1) { 4430 var currentImageIndex = this.currentImageIndex; 4431 } else { 4432 var currentImageIndex = 0; 4433 } 4434 4435 this.$emit('get-option-image', this.photoUrls[currentImageIndex].grande); 4436 }, 4437 getOptionImageIndex: function(index) { 4438 this.currentImageIndex = index; 4439 this.$emit('get-option-image', this.photoUrls[index].grande); 4440 }, 4441 setDefaultOption: function() { 4442 var self = this; 4443 Object.keys(self.currentOption).forEach(function(optionKey) { 4444 self.currentOption[optionKey] = self.currentVariant[optionKey]; 4445 }); 4446 }, 4447 getVariantIndex: function() { 4448 var self = this; 4449 return self.product.variants.findIndex(function(variant, index) { 4450 var isVariant = true; 4451 Object.keys(self.currentOption).forEach(function(option) { 4452 if(variant[option] !== self.currentOption[option]){ 4453 isVariant = false; 4454 } 4455 }); 4456 return isVariant; 4457 }); 4458 }, 4459 // 篩é¸éè¤åé 4460 getUniqueVariant: function(variants) { 4461 return variants.filter(function(value, index, self) { 4462 return self.indexOf(value) === index; 4463 }); 4464 }, 4465 // åå¾å·²é¸åçcolor index 4466 getSelectedColorIndex: function() { 4467 var self = this; 4468 var optionIndex = _.indexOf(self.options, 'é¡è²') + 1; 4469 var color = self.currentOption['option' + optionIndex]; 4470 4471 return _.indexOf(self.colorOption, color); 4472 }, 4473 getOptions: function(optionKey, optionTypes) { 4474 var self = this; 4475 4476 // éé sku é é¸ä¸æå°æç variantï¼ååªé¡¯ç¤ºè©² variant ç option 4477 if (this.shouldHideOtherVariants) { 4478 var currentOptionValue = this.currentVariant[optionKey]; 4479 var isValid = true; 4480 4481 if (!this.isEmptyClickable) { 4482 isValid = this.currentVariant.inventoryQuantity === null || 4483 this.currentVariant.inventoryQuantity > 0 || 4484 this.currentVariant.inventoryPolicy === 'continue'; 4485 } 4486 4487 return [{ 4488 name: currentOptionValue, 4489 isValid: isValid 4490 }]; 4491 } 4492 4493 return optionTypes.map(function(optionType, index) { 4494 var isValid = true; 4495 4496 // é¸åºå å«ç®åtypeçvariant 4497 var matchVariants = self.product.variants.filter(function(variant) { 4498 return variant[optionKey] === optionType; 4499 }); 4500 // 篩é¸å·²å¾é¸type 4501 Object.keys(self.currentOption).forEach(function(currentOptionKey) { 4502 if(currentOptionKey !== optionKey){ 4503 matchVariants = matchVariants.filter(function(variant) { 4504 if(self.currentOption[currentOptionKey]) { 4505 return variant[currentOptionKey] === self.currentOption[currentOptionKey] 4506 } else { 4507 return true; 4508 } 4509 }); 4510 } 4511 }); 4512 // ç¡variant代表æ¤typeä¸å¯é¸ 4513 if(matchVariants.length === 0) { 4514 isValid = false; 4515 } 4516 4517 if (!self.isEmptyClickable) { 4518 isValid = false; 4519 matchVariants.find(function(item) { 4520 if (item.inventoryQuantity === null || item.inventoryQuantity > 0 || item.inventoryPolicy === 'continue') { 4521 isValid = true; 4522 } 4523 }); 4524 } 4525 4526 return { 4527 name: optionType, 4528 isValid: isValid 4529 } 4530 }); 4531 }, 4532 getVariantPhotos: function() { 4533 if (!this.currentVariant) { 4534 return null; 4535 } 4536 4537 if (!this.currentVariant.photos || this.currentVariant.photos.length === 0) { 4538 return { 4539 withSpecificVariant: !!this.currentVariant.option1, 4540 photos: [], 4541 variant: { 4542 id: this.currentVariant.id, 4543 sku: this.currentVariant.sku 4544 }, 4545 }; 4546 } 4547 4548 var sortedPhotos = this.currentVariant.photos.sort(function(prev, next) { 4549 return prev.position - next.position; 4550 }); 4551 4552 return { 4553 withSpecificVariant: !!this.currentVariant.option1, 4554 photos: sortedPhotos, 4555 variant: { 4556 id: this.currentVariant.id, 4557 sku: this.currentVariant.sku 4558 }, 4559 }; 4560 }, 4561 setVariantPhotos: function() { 4562 themeHelper.EventBus.$emit('updatePhotos', this.getVariantPhotos()); 4563 },
4564 cartQuantityCheck({quantity, limitQuantity, cartLimit, inventoryPolicy}){ 4565 if(quantity < 1){ 4566 return 'less_then_1'; 4567 } 4568 if(quantity > limitQuantity && limitQuantity !== null && inventoryPolicy !== "continue") { 4569 return 'over_product_quantity'; 4570 } 4571 if(quantity > cartLimit){ 4572 return 'over_cart_limit'; 4573 } 4574 if(isNaN(quantity)){ 4575 return 'not_a_number'; 4576 } 4577 return ''; 4578 }, 4579 changeQuantity({elType, errType, quantity, addToCart, quantityInput, limitQuantity, cartLimit}){ 4580 if(errType === ''){ 4581 if(elType === 'btn'){ 4582 quantityInput.val(quantity); 4583 quantityInput.trigger('change'); 4584 } 4585 var old = quantityInput.data("old-value"); 4586 if(quantity === old){ 4587 quantityInput.data("old-value", quantity); 4588 } 4589 // for GA 4590 addToCart.data("quantity", quantity); 4591 } else { 4592 var old_value = quantityInput.data("old-value"); 4593 if(elType === 'input'){ 4594 switch(errType){ 4595 case 'less_then_1': 4596 quantityInput.val(1); 4597 break; 4598 case 'over_product_quantity': 4599 quantityInput.val(limitQuantity); 4600 break; 4601 case 'over_cart_limit': 4602 quantityInput.val(cartLimit); 4603 break; 4604 default: 4605 quantityInput.val(old_value); 4606 break; 4607 } 4608 } 4609 this.cartQuantityMessage(errType) 4610 } 4611 }, 4612 cartQuantityMessage(errType) { 4613 switch(errType){ 4614 case 'less_then_1': 4615 window.msg(language["less_then_one"], 'warning').show(); 4616 break; 4617 case 'over_product_quantity': 4618 window.msg(language["over_product_quantity"], 'warning').show(); 4619 break; 4620 case 'over_cart_limit': 4621 window.msg(language["over_cart_limit"], 'warning').show(); 4622 break; 4623 case 'not_a_number': 4624 window.msg(language["please_enter_number"], 'warning').show(); 4625 break; 4626 default: 4627 break; 4628 } 4629 }, 4630 quantityChange(isPluSquantity){ 4631 if (!this.findVariant()) { 4632 return; 4633 } 4634 let errType = ''; 4635 let el = $('#product'); 4636 let cartLimit = this.getCartQuantityLimit(el); 4637 let limitQuantity = selectedVariant.inventoryQuantity; 4638 let inventoryPolicy = selectedVariant.inventoryPolicy; 4639 let quantityInput = el.find(".product_quantity input"); 4640 let quantity = parseInt($(quantityInput).val()); 4641 let addToCart = el.find('.addToCart'); 4642 isPluSquantity ? quantity += 1: quantity -= 1 4643 errType = this.cartQuantityCheck({quantity, limitQuantity, cartLimit, inventoryPolicy}); 4644 this.changeQuantity({ elType: 'btn', errType, quantity, addToCart, quantityInput, limitQuantity, cartLimit}); 4645 }, 4646 findVariant() { 4647 if (typeof selectedVariant === 'undefined' || !$.isNumeric(selectedVariant.id)) { 4648 window.msg(language["please_choose_product"], 'info').show(); 4649 return false; 4650 } else { 4651 return true; 4652 } 4653 }, 4654 getCartQuantityLimit(el) { 4655 return el.data('cart_quantity_limit'); 4656 }, 4657 isSellTimeAfterNow(sellTime) { 4658 if (!sellTime) return false; 4659 const saleTime = new Date(sellTime); 4660 const now = new Date(); 4661 return saleTime > now; 4662 }, 4663 } 4664 }); 4665 }); 4666</script>
4666 4667 4668<!-- cyb_snippet _variant_options_block_js end --> 4669 4670<!-- cyb_snippet components/variant_options/variant_options_block end --> 4671<!-- cyb_snippet _custom_icon start -->
4672<script src='//cdn1-next.cybassets.com/frontend/shop/navIcon-3a2e378145f8a165.js' type='text/javascript'></script>
4672 4673
4674<script> 4675 (function() { 4676 const iconUrlMap = new Map([ 4677 ['custom_icon_type_home', null], 4678 ['custom_icon_type_tracking_items', null], 4679 ['custom_icon_type_account', null], 4680 ['custom_icon_type_cart', null], 4681 ['custom_icon_type_search', null], 4682 ['custom_icon_type_menu', null] 4683 ]); 4684 const elements = document.querySelectorAll('[data-icon-type]'); 4685 elements.forEach((element, index) => { 4686 const iconAttributes = element.getAttribute('data-icon-type'); 4687 4688 const uniqueId = `icon_${iconAttributes}_${index}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`; 4689 element.id = uniqueId; 4690 window.renderNavCustomIcon(`#${uniqueId}`, { 4691 navIconStyle: "icon_type_default", 4692 customIconUrl: iconUrlMap.get(iconAttributes) || '', 4693 iconAttributes: iconAttributes, 4694 currentTemplate: "product", 4695 }); 4696 }); 4697 })(); 4698</script>
4698 4699 4700<!-- cyb_snippet _custom_icon end --> 4701
4702<script> 4703 // è¨å®æ¬¾å¼è³è¨/顯示款å¼è³è¨ 4704 function getURLParameter(name) { 4705 return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [null, ''])[1].replace(/\+/g, '%20')) || null; 4706 } 4707 // sku_properties:忬¾å¼ç option pairs(ç¶åèªç³»,å¾ç«¯ drop 已翻è¯),äºä»¶ç¨ variantId æ¥è¡¨ 4708 var variantProperties = { 4709 4710 }; 4711 function addToWishListEvent(id, data) { 4712 try { 4713 if (appMarketAddToWishListEvent && data) { 4714 var dataSet = { 4715 name: "å層è´è¶é ¥ ï½ èèå£å³", 4716 category: null, 4717 categories: ["å層è´è¶é ¥ç³»å,ææåå"], 4718 sku: data.sku, 4719 price: data.price, 4720 compare_at_price: data.compare_at_price, 4721 properties: variantProperties[id] || [], 4722 quantity: data.inventory_quantity, 4723 variant: data.variant, 4724 listName: "å®ç¢å細覽" || null, 4725 productId: 57903702, 4726 variantId: id, 4727 } 4728 appMarketAddToWishListEvent(dataSet) 4729 } 4730 } catch (e) { 4731 console.error(e); 4732 } 4733 } 4734 function removeFromWishListEvent(id, data) { 4735 try { 4736 if (appMarketRemoveFromWishListEvent && data) { 4737 var dataSet = { 4738 name: "å層è´è¶é ¥ ï½ èèå£å³", 4739 category: null, 4740 categories: ["å層è´è¶é ¥ç³»å,ææåå"], 4741 sku: data.sku, 4742 price: data.price, 4743 compare_at_price: data.compare_at_price, 4744 properties: variantProperties[id] || [], 4745 quantity: data.inventory_quantity, 4746 variant: data.variant, 4747 listName: "å®ç¢å細覽" || null, 4748 productId: 57903702, 4749 variantId: id, 4750 } 4751 appMarketRemoveFromWishListEvent(dataSet) 4752 } 4753 } catch (e) { 4754 console.error(e); 4755 } 4756 } 4757 function isSellTimeAfterNow(sellTime) { 4758 if (!sellTime) return false; 4759 const saleTime = new Date(sellTime); 4760 const now = new Date(); 4761 return saleTime > now; 4762 } 4763 $(document).ready(function() { 4764 var ProductInfoObject = new ProductInfo() 4765 ProductInfoObject.init({ 4766 additionalPrice: "å è³¼å¹", 4767 sellFrom: "2025-07-31T00:00:00+08:00" , 4768 productId:"57903702", 4769 productTitle: "å層è´è¶é ¥ ï½ èèå£å³", 4770 productPreOrder: "é è³¼åå", 4771 productExistingVariantsFirstId: '70021235', 4772 productNotificationEnabled: 'å·²ç»è¨è£è²¨éç¥', 4773 productNotifyMeWhenStockArrives: 'å·²å®å®ï¼è²¨å°éç¥æ', 4774 productOptionsSize: "1", 4775 productPleaseChooseProduct: "è«é¸æå忬¾å¼", 4776 generalInternetError: "網路é£ç·ç°å¸¸ï¼è«éæ°æ´ç", 4777 productVariantsInfo: "70021235,,480.0,0,480.0,deny,422.0,èèå£å³,å層è´è¶é ¥ ï½ èèå£å³ - èèå£å³,cyberbiz,", 4778 productLimitBuy: null, 4779 purchaseEligibility: {"required":false,"eligible":true,"status":"eligible"}, 4780 salesModePurchasable: true, 4781 }); 4782 // å忬¾å¼ 4783 var isUpcomingProduct = isSellTimeAfterNow("2025-07-31T00:00:00+08:00") && null; 4784 // åå§åï¼å徿¶è²»è ææåé çéç¥è¨å® 4785 var variantNotifications = {}; 4786 4787 ProductInfoObject.initVariantNotifications(); 4788 4789 // åå§åï¼æª¢æ¥ææååç庫åï¼å¤æ·è³¼ç©è»æéå庫åé¡¯ç¤ºçæ 4790 ProductInfoObject.checkButtonStatus(isUpcomingProduct); 4791 // å å ¥è³¼ç©è» open product modal 4792 ProductInfoObject.initOpenProductModal(); 4793 // ç«å³è³¼è²· mobile product modal 4794 ProductInfoObject.initMobileProductModal() 4795 // è¯çµ¡åå®¶ 4796 ProductInfoObject.initContactTheMerchant() 4797 // 貨å°éç¥ 4798 ProductInfoObject.initGoodsArrivalNotification(); 4799 ProductInfoObject.checkInWishList(window.$('.product-variant-id').val()) 4800 4801 ProductInfoObject.setUpDiscountsTag(); 4802 4803 4804 }) 4805 4806 const userAgent = navigator.userAgent; 4807 const isIOS = /iPad|iPhone|iPod/.test(userAgent) && !window.MSStream; 4808 const isLiff = /Line\/[\d.]+/i.test(userAgent); 4809 const $productButtonMobile = $('.product_button_mobile'); 4810 4811 if ($productButtonMobile.length && isIOS && isLiff) { 4812 $productButtonMobile.addClass('is-ios-liff'); 4813 } 4814</script>
4814 4815 4816 4817<div id="product_description" class="product_description"> 4818 <div class="desc_sections"> 4819 <ul class="qk-bg--theme_bg qk-display--flex qk-mg--0 qk-pd--0 qk-bd--default qk-bd--product_border qk-bd_r--none"> 4820 <!-- ååä»ç´¹ --> 4821 4822 <li class="qk-flex--1"> 4823 <a href="#desc_section_1" class="scroll active qk-text--text qk-fs--title qk-display--il_bk qk-text--center qk-w--100 qk-vert--bottom"> 4824 ååä»ç´¹ 4825 </a> 4826 </li> 4827 4828 <!-- è¦æ ¼èªªæ --> 4829 4830 <li class="qk-flex--1 qk-bd--product_border"> 4831 <a href="#desc_section_2" class="scroll qk-text--text qk-fs--title qk-display--il_bk qk-text--center qk-w--100 qk-vert--bottom"> 4832 <div>è³å³æé</div> 4833 </a> 4834 </li> 4835 4836 <!-- ééæ¹å¼ --> 4837 4838 <li class="qk-flex--1 qk-bd--product_border"> 4839 <a href="#desc_section_3" class="scroll qk-text--text qk-fs--title qk-display--il_bk qk-text--center qk-w--100 qk-vert--bottom"> 4840 <div>ééæ¹å¼</div> 4841 </a> 4842 </li> 4843 4844 <!-- ç¥¨å¸æ³¨æäºé --> 4845 4846 <!-- å å ¥è³¼ç©è»modal --> 4847 4848 <li class="add-to-cart-container qk-flex--1 qk-bd--product_border"> 4849 <a 4850 href="#" 4851 id="add_to_cart" 4852 class="open_product_modal qk-btn qk-btn--primary qk-btn--lg qk-pos--abs qk-r--0 qk-display--il_bk qk-text--center qk-w--100" 4853 data-id="57903702" 4854 data-handle="å層è´è¶é ¥-ï½-æ°å-èèå£å³"> 4855 <div>å å ¥è³¼ç©è»</div> 4856 </a> 4857 <button class="btn btn_not_sale hidden qk-btn qk-btn--soldout qk-btn--lg qk-pd--0 qk-fs--title qk-pos--abs qk-r--0" type="button"> 4858 å°æªéè³£ 4859 </button> 4860 <button class="btn btn_login_to_view hidden qk-btn qk-btn--soldout qk-btn--lg qk-pd--0 qk-fs--title qk-pos--abs qk-r--0" type="button"> 4861 ç»å ¥æ¥çè³æ ¼ 4862 </button> 4863 <button class="btn btn_not_eligible hidden qk-btn qk-btn--soldout qk-btn--lg qk-pd--0 qk-fs--title qk-pos--abs qk-r--0" type="button"> 4864 è³¼è²·è³æ ¼ä¸ç¬¦ 4865 </button> 4866 4867 <a 4868 href="#" 4869 id="notice_to_buy" 4870 class="btn_notice qk-btn qk-btn--primary qk-btn--lg qk-pos--abs qk-r--0 qk-display--il_bk qk-text--center qk-w--100"> 4871 <div>å·²å®å®ï¼è²¨å°éç¥æ</div> 4872 </a> 4873 4874 </li> 4875 4876 </ul> 4877 </div> 4878 <div class="desc_body"> 4879 <div id="ckeditor"> 4880 4881 <div id="desc_section_1" class="desc_section qk-pd_t--2"> 4882 <h5 class="section-heading qk-text--heading qk-fs--hd2 qk-bd_l--default qk-bd--heading qk-pd_l--05">ååä»ç´¹</h5> 4883 <div class="ckeditor qk-mg_t--1"><p> </p> 4884 4885<h4>æ°å èèè´è¶é ¥ â å±¤å±¤é ¥èï¼èé¦ç´°èª</h4> 4886 4887<h4>天ç¶èèè¼è¼ææ±è19èç¼é µå¥¶æ²¹ï¼å¨æå·¥åå±¤é ¥ç®éæææµæ·ã</h4> 4888 4889<h4>ç¶é使º«ç¼é µç奶油ï¼èèç´æ·¨çä¹³é¦è溫æï¼<br> 4890æ¯ä¸æ¬¡å¬ä¸ï¼é½æ¯æéç´°è©å çåºçé ¥èè©©ç¯ã</h4> 4891 4892<h4>ç¦ç³èèçå¤è¡£ï¼è£¡é ç¶¿å¯æº«æï¼<br> 4893çè䏿¿çï¼åªå¨åé½éè¼è¼ç¶»æ¾ã</h4> 4894 4895<h4>åå䏿¯è¶ï¼æéè¬æå çéªä¼´ï¼<br> 4896èèè´è¶é ¥ï¼æ¯é£äºå°ç¢ºå¹¸ççç¾ç´°ç¯ã</h4> 4897 4898<p> </p> 4899</div> 4900 </div> 4901 4902 4903 <div id="desc_section_2" class="desc_section qk-pd_t--2"> 4904 <h5 class="section-heading qk-text--heading qk-fs--hd2 qk-bd_l--default qk-bd--heading qk-pd_l--05">è³å³æé</h5> 4905 <div class="ckeditor qk-mg_t--1"><p>ä¿åæ¹å¼ï¼æ¬ååä¸å®å·åãæå°ä¿åï¼é å¯å°ç½®æ¼å®¤æº«é°æ¶¼ç°å¢ï¼å¸¸æº«ä¿å21天ã</p> 4906 4907<p>é£ç¨æ¹å¼ï¼å¸¸æº«ååã</p> 4908</div> 4909 </div> 4910 4911 4912 <div id="desc_section_3" class="desc_section qk-pd_t--2"> 4913 <h5 class="section-heading qk-text--heading qk-fs--hd2 qk-bd_l--default qk-bd--heading qk-pd_l--05">ééæ¹å¼</h5> 4914 <div class="ckeditor qk-mg_t--1"><p>1. æ¤ååçºå¸¸æº«é éï¼å® é éè²»$160ãè«åå¿ å¡«å¯«æ£ç¢ºæ¶ä»¶è³è¨ä¸¦æä¾æ¶ä»¶äººçè¡åé»è©±ï¼ä»¥å©é éã鱿¥èåå®åæ¥æä¸é éã10çåªæ éãåä¸è¨å®ãåæå貨ãåå°åãæé©ç¨ã</p> 4915 4916<p>2.ç®åæåææä¾çç¢åé éåå以å°ç£æ¬å³¶çºä¸»ï¼é¨åååå°æªæä¾å°ç£é¢å³¶ï¼æ¾æ¹ã馬ç¥ãééï¼åæµ·å¤å°åä¹å¯éæåï¼é æä¸ä¾¿æè«è¦è«ã</p> 4917 4918<p>3. å¡å®çæ¶è²»ï¼å¸¸æº«é顿»¿$1,500以ä¸/å·åé顿»¿$2,500以ä¸å éè²»ï¼è¥å®çè¨å®å«å·åé éååï¼ä»¥å·åé ééè²»è¨ç®ï¼ã</p> 4919 4920<p>4.å æ¯é£åé¡ååï¼å®åºå¾ä¸é©ç¨ç¶²è³¼7æ¥éè³æã</p> 4921 4922<p>5.èªè¡å貨ï¼</p> 4923 4924<p>èªåæéï¼13ï¼00~21ï¼00</p> 4925 4926<p>å貨é»ï¼é«éå¸å·¦çåè¯å¤è·¯702è</p> 4927</div> 4928 </div> 4929 4930 4931 </div> 4932 </div> 4933 <div id="product-recommendation"></div> 4934</div> 4935
4936<script> 4937 $(document).ready(function() { 4938 // åå說æä»ç´¹æ¨ç±¤ 4939 $(".desc_sections li").on('click', function() { 4940 $(this).children().addClass('active'); 4941 $(this).siblings().children().removeClass('active'); 4942 }); 4943 4944 // æ»åè¨ç½® 4945 var prevScrollPos = window.pageYOffset; 4946 var prevScrollInformationPos = window.pageYOffset; 4947 $(window).on('scroll load resize', function(e) { 4948 var headerHeight = $("#header").height() 4949 var desc_sections = $(".desc_sections"); 4950 var desc_section_list = $(".desc_section"); 4951 var descSectionHeight = $(".desc_sections").height() 4952 var descSectionTop = $(".desc_sections").offset().top - headerHeight 4953 var product_window = $(this); 4954 var currentScrollPos = window.pageYOffset; 4955 4956 // æ»ååºå®ç¢å說æ 4957 if (product_window.scrollTop() > descSectionTop) { 4958 desc_sections.find("ul").css({"top": 0}); 4959 if (currentScrollPos > prevScrollPos && product_window.scrollTop() > descSectionTop + headerHeight) { 4960 desc_sections 4961 .stop() 4962 .addClass("desc_sections_hold") 4963 .css({"min-height": descSectionHeight}) 4964 .find("ul") 4965 .css({"top": 0}); 4966 } else if (prevScrollPos > currentScrollPos) { 4967 desc_sections 4968 .stop() 4969 .addClass("desc_sections_hold") 4970 .css({"min-height": descSectionHeight}) 4971 .find("ul") 4972 .css({"top": headerHeight}); 4973 } else { 4974 prevScrollPos = 0; 4975 } prevScrollPos = currentScrollPos; 4976 if ($(window).width() < 768) { 4977 $("body").css("padding-bottom", "68px"); 4978 } 4979 } else { 4980 prevScrollPos = 0; 4981 desc_sections.stop().removeClass("desc_sections_hold") 4982 if ($(window).width() < 768) { 4983 $("body").css("padding-bottom", "68px"); 4984 } 4985 } 4986 4987 // é»é¸ç¢åèªªææ»å 4988 $(".desc_sections a.scroll").bind("click", function(event) { 4989 var targetScrollTop = parseInt($($(this).attr("href")).offset().top - descSectionHeight + 1); 4990 if (targetScrollTop > window.scrollY + 1) { 4991 $("html, body").stop().animate({ 4992 scrollTop: targetScrollTop 4993 }, 300); 4994 } else { 4995 $("html, body").stop().animate({ 4996 scrollTop: targetScrollTop - headerHeight 4997 }, 300); 4998 } 4999 }); 5000 5001 // 顯示ç¶åç¢å說æ 5002 if (currentScrollPos > prevScrollInformationPos) { 5003 $.each(desc_section_list, function(index, desc_section) { 5004 var desc_sectionTop = $(desc_section).offset().top - descSectionHeight - 1 5005 var desc_sectionHeight = $(desc_section).height() 5006 var current_desc_section = $("a.scroll[href$='" + $(desc_section).attr("id") + "']"); 5007 if (product_window.scrollTop() > desc_sectionTop || index === 0) { 5008 current_desc_section 5009 .stop() 5010 .addClass('active') 5011 .parent() 5012 .siblings() 5013 .find("a") 5014 .removeClass('active'); 5015 } else { 5016 current_desc_section.removeClass('active'); 5017 } prevScrollInformationPos = currentScrollPos; 5018 }); 5019 } else { 5020 $.each(desc_section_list, function(index, desc_section) { 5021 var desc_sectionTop = $(desc_section).offset().top - descSectionHeight - 1 5022 var desc_sectionHeight = $(desc_section).height() 5023 var current_desc_section = $("a.scroll[href$='" + $(desc_section).attr("id") + "']"); 5024 if (product_window.scrollTop() + headerHeight > desc_sectionTop) { 5025 current_desc_section 5026 .stop() 5027 .addClass('active') 5028 .parent() 5029 .siblings() 5030 .find("a") 5031 .removeClass('active'); 5032 } else { 5033 current_desc_section.removeClass('active'); 5034 } 5035 }); 5036 prevScrollInformationPos = currentScrollPos; 5037 } 5038 }); 5039 }) 5040</script>
5040 5041 5042 5043 5044 5045 5046<div id="related-products" class="qk-pos--rel"> 5047 5048 5049 5050 5051 5052 5053 <h5 class="section-heading qk-text--heading qk-fs--hd2 qk-bd_l--default qk-bd--heading qk-pd_l--05">ç¸éåå</h5> 5054 5055 <!-- cyb_snippet swiper_product start --> 5056<div id="swiper_products" class="qk-pos--rel"> 5057 <div class="swiper swiper-container swiper_products GTM-area"> 5058 <div class="swiper-wrapper"> 5059 5060 5061 5062 5063 5064 5065 <div class="swiper-slide product qk-text--start" data-sold-out="true" data-sales-mode-purchasable="true"> 5066 5067 <div class="product_image default_scale"> 5068 <div class="product_mask"></div> 5069 <a class="productClick img-flex GTM-info qk-h--100 qk-display--flex qk-justify--center qk-align--center" 5070 href="/products/è²»åéªèç³" 5071 data-brand="" 5072 data-category="" 5073 data-collection_id="" 5074 data-id="45184594" 5075 data-variant-id="52982822" 5076 data-list="ç¸éåå" 5077 data-name="è²»åéª Financier ï½ 6種å£å³" 5078 data-position="1" 5079 data-price="75.0"> 5080 <img data-src="//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L3Byb2R1Y3RzLzQ1MTg0NTk0LzE3MTQyMTY5NjhfMmQxYTY4OTI0OTMyMTllYWI2NDUuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=3490866ced17233e" 5081 alt="è²»åéª Financier ï½ 6種å£å³" class="swiper-lazy feature-image" /> 5082 5083 5084 5085 <div class="swiper-lazy-preloader-white"></div> 5086 </a> 5087 </div> 5088 5089 <div class="product_title qk-of--hidden"> 5090 <a class="qk-text--heading" 5091 href="/products/è²»åéªèç³"> 5092 è²»åéª Financier ï½ 6種å£å³ 5093 </a> 5094 </div> 5095 5096 5097 5098 5099 <div class="product_price qk-text--price qk-fs--title"><span class="money_tag" data-currency-from="TWD" data-amount="75.0">NT$75</span></div> 5100 5101 5102 <div class="product_btn qk-text--center"> 5103 5104 <button type="button" class="btn btn-soldout qk-btn qk-btn--lg qk-btn--soldout qk-bg--background" disabled> 5105 <span class="text">å·²å®å®</span> 5106 </button> 5107 5108 <button type="button" class="btn btn_not_sale hidden qk-btn qk-btn--lg qk-btn--soldout qk-bg--background qk-mg_x--auto" disabled> 5109 <span class="text">å°æªéè³£</span> 5110 </button> 5111 <button type="button" class="btn btn_login_to_view hidden qk-btn qk-btn--lg qk-btn--soldout qk-bg--background qk-mg_x--auto" disabled> 5112 <span class="text">ç»å ¥æ¥ç</span> 5113 </button> 5114 <button type="button" class="btn btn_not_eligible hidden qk-btn qk-btn--lg qk-btn--soldout qk-bg--background qk-mg_x--auto" disabled> 5115 <span class="text">è³æ ¼ä¸ç¬¦</span> 5116 </button> 5117 </div> 5118 5119 </div> 5120 5121 5122 5123 5124 5125 <div class="swiper-slide product qk-text--start" data-sold-out="true" data-sales-mode-purchasable="true"> 5126 5127 <div class="product_image default_scale"> 5128 <div class="product_mask"></div> 5129 <a class="productClick img-flex GTM-info qk-h--100 qk-display--flex qk-justify--center qk-align--center" 5130 href="/products/å·´æ¯å ä¹³é ªèç³-ï½basque-cheesecake" 5131 data-brand="" 5132 data-category="" 5133 data-collection_id="" 5134 data-id="45184678" 5135 data-variant-id="52983048" 5136 data-list="ç¸éåå" 5137 data-name="å·´æ¯å ä¹³é ªèç³ï½ç¶å ¸åå³" 5138 data-position="2" 5139 data-price="420.0"> 5140 <img data-src="//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L3Byb2R1Y3RzLzQ1MTg0Njc4LzE3MTQyMTc1OTdfOTJlNGZhYjExYWIyMmRiMGM4OGIuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=2c9379e0f50bbb08" 5141 alt="å·´æ¯å ä¹³é ªèç³ï½ç¶å ¸åå³" class="swiper-lazy feature-image" /> 5142 5143 5144 5145 <div class="swiper-lazy-preloader-white"></div> 5146 </a> 5147 </div> 5148 5149 <div class="product_title qk-of--hidden"> 5150 <a class="qk-text--heading" 5151 href="/products/å·´æ¯å ä¹³é ªèç³-ï½basque-cheesecake"> 5152 å·´æ¯å ä¹³é ªèç³ï½ç¶å ¸åå³ 5153 </a> 5154 </div> 5155 5156 5157 5158 5159 <div class="product_price qk-text--price qk-fs--title"><span class="money_tag" data-currency-from="TWD" data-amount="420.0">NT$420</span></div> 5160 5161
5162 <div class="product_btn qk-text--center"> 5163 5164 <button type="button" class="btn btn-soldout qk-btn qk-btn--lg qk-btn--soldout qk-bg--background" disabled> 5165 <span class="text">å·²å®å®</span> 5166 </button> 5167 5168 <button type="button" class="btn btn_not_sale hidden qk-btn qk-btn--lg qk-btn--soldout qk-bg--background qk-mg_x--auto" disabled> 5169 <span class="text">å°æªéè³£</span> 5170 </button> 5171 <button type="button" class="btn btn_login_to_view hidden qk-btn qk-btn--lg qk-btn--soldout qk-bg--background qk-mg_x--auto" disabled> 5172 <span class="text">ç»å ¥æ¥ç</span> 5173 </button> 5174 <button type="button" class="btn btn_not_eligible hidden qk-btn qk-btn--lg qk-btn--soldout qk-bg--background qk-mg_x--auto" disabled> 5175 <span class="text">è³æ ¼ä¸ç¬¦</span> 5176 </button> 5177 </div> 5178 5179 </div> 5180 5181 5182 5183 5184 5185 <div class="swiper-slide product qk-text--start" data-sold-out="true" data-sales-mode-purchasable="true"> 5186 5187 <div class="product_image default_scale"> 5188 <div class="product_mask"></div> 5189 <a class="productClick img-flex GTM-info qk-h--100 qk-display--flex qk-justify--center qk-align--center" 5190 href="/products/ç¶å ¸å層è´è¶é ¥" 5191 data-brand="" 5192 data-category="" 5193 data-collection_id="" 5194 data-id="45885672" 5195 data-variant-id="53941239" 5196 data-list="ç¸éåå" 5197 data-name="å層è´è¶é ¥ ï½ç¶å ¸åå³" 5198 data-position="3" 5199 data-price="398.0"> 5200 <img data-src="//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L3Byb2R1Y3RzLzQ1ODg1NjcyLzE3MTQyMTgxMzdfYjk5YjljMTEyNGMxYzQyYzczNTcuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=46626b6ea619a9e9" 5201 alt="å層è´è¶é ¥ ï½ç¶å ¸åå³" class="swiper-lazy feature-image" /> 5202 5203 5204 5205 <div class="swiper-lazy-preloader-white"></div> 5206 </a> 5207 </div> 5208 5209 <div class="product_title qk-of--hidden"> 5210 <a class="qk-text--heading" 5211 href="/products/ç¶å ¸å層è´è¶é ¥"> 5212 å層è´è¶é ¥ ï½ç¶å ¸åå³ 5213 </a> 5214 </div> 5215 5216 5217 5218 5219 <div class="product_price qk-text--price qk-fs--title"><span class="money_tag" data-currency-from="TWD" data-amount="398.0">NT$398</span></div> 5220 5221 5222 <div class="product_btn qk-text--center"> 5223 5224 <button type="button" class="btn btn-soldout qk-btn qk-btn--lg qk-btn--soldout qk-bg--background" disabled> 5225 <span class="text">å·²å®å®</span> 5226 </button> 5227 5228 <button type="button" class="btn btn_not_sale hidden qk-btn qk-btn--lg qk-btn--soldout qk-bg--background qk-mg_x--auto" disabled> 5229 <span class="text">å°æªéè³£</span> 5230 </button> 5231 <button type="button" class="btn btn_login_to_view hidden qk-btn qk-btn--lg qk-btn--soldout qk-bg--background qk-mg_x--auto" disabled> 5232 <span class="text">ç»å ¥æ¥ç</span> 5233 </button> 5234 <button type="button" class="btn btn_not_eligible hidden qk-btn qk-btn--lg qk-btn--soldout qk-bg--background qk-mg_x--auto" disabled> 5235 <span class="text">è³æ ¼ä¸ç¬¦</span> 5236 </button> 5237 </div> 5238 5239 </div> 5240 5241 5242 5243 5244 5245 <div class="swiper-slide product qk-text--start" data-sold-out="true" data-sales-mode-purchasable="true"> 5246 5247 <div class="product_image default_scale"> 5248 <div class="product_mask"></div> 5249 <a class="productClick img-flex GTM-info qk-h--100 qk-display--flex qk-justify--center qk-align--center" 5250 href="/products/åå³ç´ççä¹³æ²" 5251 data-brand="" 5252 data-category="" 5253 data-collection_id="" 5254 data-id="45885918" 5255 data-variant-id="53941492" 5256 data-list="ç¸éåå" 5257 data-name="ç´ççä¹³å· ï½ åå³" 5258 data-position="4" 5259 data-price="420.0"> 5260 <img data-src="//cdn1-next.cybassets.com/media/W1siZiIsIjI4MzA0L3Byb2R1Y3RzLzQ1ODg1OTE4LzE3MTQyMTczOTlfYjhhYjM0NzdiM2YyYzM0MWZjMmYuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=6975e054baebb673" 5261 alt="ç´ççä¹³å· ï½ åå³" class="swiper-lazy feature-image" /> 5262 5263 5264 5265 <div class="swiper-lazy-preloader-white"></div> 5266 </a> 5267 </div> 5268 5269 <div class="product_title qk-of--hidden"> 5270 <a class="qk-text--heading" 5271 href="/products/åå³ç´ççä¹³æ²"> 5272 ç´ççä¹³å· ï½ åå³ 5273 </a> 5274 </div> 5275 5276 5277 5278 5279 <div class="product_price qk-text--price qk-fs--title"><span class="money_tag" data-currency-from="TWD" data-amount="420.0">NT$420</span></div> 5280 5281
5282 <div class="product_btn qk-text--center"> 5283 5284 <button type="button" class="btn btn-soldout qk-btn qk-btn--lg qk-btn--soldout qk-bg--background" disabled> 5285 <span class="text">å·²å®å®</span> 5286 </button> 5287 5288 <button type="button" class="btn btn_not_sale hidden qk-btn qk-btn--lg qk-btn--soldout qk-bg--background qk-mg_x--auto" disabled> 5289 <span class="text">å°æªéè³£</span> 5290 </button> 5291 <button type="button" class="btn btn_login_to_view hidden qk-btn qk-btn--lg qk-btn--soldout qk-bg--background qk-mg_x--auto" disabled> 5292 <span class="text">ç»å ¥æ¥ç</span> 5293 </button> 5294 <button type="button" class="btn btn_not_eligible hidden qk-btn qk-btn--lg qk-btn--soldout qk-bg--background qk-mg_x--auto" disabled> 5295 <span class="text">è³æ ¼ä¸ç¬¦</span> 5296 </button> 5297 </div> 5298 5299 </div> 5300 5301 </div> 5302 </div> 5303 <div class="swiper-products-next qk-swiper_btn qk-swiper_btn--lg qk-swiper_btn--v1 qk-swiper_btn--next"></div> 5304 <div class="swiper-products-prev qk-swiper_btn qk-swiper_btn--lg qk-swiper_btn--v1 qk-swiper_btn--prev"></div> 5305</div> 5306 5307<link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/swiper_product-3a2e378145f8a165.css' rel='stylesheet' type='text/css' media='all' /> 5308 5309 5310<!-- cyb_snippet _combo_product_related_items_modal start --><!-- cyb_snippet _combo_product_related_items_modal end --> 5311
5312<script> 5313 $(document).ready(function(){ 5314 var slideCount = $(".swiper_products .swiper-slide").length 5315 if (slideCount >= 4){ 5316 var autoLoop = true 5317 }else{ 5318 var autoLoop = false 5319 } 5320 var SwiperProducts = new Swiper('.swiper_products', { 5321 // Disable preloading of all images 5322 preloadImages: false, 5323 // Enable lazy loading 5324 lazy: { 5325 loadPrevNext: true, 5326 }, 5327 loop: autoLoop, 5328 slidesPerView: 1, 5329 spaceBetween: 30, 5330 navigation: { 5331 nextEl: '.swiper-products-next', 5332 prevEl: '.swiper-products-prev', 5333 }, 5334 breakpoints: { 5335 '@0.75': { 5336 slidesPerView: 2, 5337 spaceBetween: 20, 5338 }, 5339 '@1.00': { 5340 slidesPerView: 3, 5341 spaceBetween: 40, 5342 }, 5343 '@1.50': { 5344 slidesPerView: 4, 5345 spaceBetween: 50, 5346 }, 5347 } 5348 }); 5349 5350 $('#swiper_products .productClick').click(function() { 5351 try { 5352 if (window.appStoreClickItemEvent) { 5353 var $el = $(this); 5354 window.appStoreClickItemEvent({ 5355 product_id: String($el.data('id')), 5356 variant_id: String($el.data('variant-id')), 5357 name: $el.data('name'), 5358 price: Number($el.data('price')), 5359 currency: getCurrency(), 5360 category: $el.data('category'), 5361 list_name: 'product', 5362 list_position: Number($el.data('position')), 5363 }); 5364 } 5365 } catch (e) { 5366 console.error(e); 5367 } 5368 }); 5369 5370 5371 // new pop modal 5372 $('#swiper_products .btn-cart').click(function() { 5373 var comboProductInfo = $(this).data('comboProductInfo'); 5374 if (comboProductInfo) { 5375 window.themeHelper.EventBus.$emit('showRelatedItemsSelectModal', comboProductInfo); 5376 } else { 5377 var productHandle = '/products/' + $(this).data('handle'); 5378 var collectionId = $(this).data('collection'); 5379 new_addcart_modal.popModal(productHandle, collectionId); 5380 } 5381 }); 5382 5383 5384 const isUpcomingProductsEnabled = null; 5385 // çæ åæåªèçå¯è³¼è²·çå¡ç 5386 $('#swiper_products .product').not('[data-sales-mode-purchasable="false"]').each(function(index) { 5387 const soldOut = $(this).data('sold-out'); 5388 const $upcomingText = $(this).find('.upcoming-product-text'); 5389 const sellTime = $upcomingText.data('sell-from'); 5390 const purchaseRequired = $upcomingText.data('purchase-required'); 5391 const purchaseEligible = $upcomingText.data('purchase-eligible'); 5392 const purchaseStatus = $upcomingText.data('purchase-status'); 5393 5394 const isUpcoming = isUpcomingProductsEnabled && sellTime && new Date(sellTime) > new Date(); 5395 5396 const formattedDate = sellTime ? new Date(sellTime).toLocaleString('zh-TW', { 5397 year: 'numeric', 5398 month: '2-digit', 5399 day: '2-digit', 5400 hour: '2-digit', 5401 minute: '2-digit', 5402 hour12: false 5403 }).replace(/\//g, '-').replace(',', '') : ''; 5404 5405 let labelText = ''; 5406 let buttonClass = ''; 5407 5408 if (purchaseRequired && !isUpcoming) { 5409 labelText = 'é¨åæå¡éå®'; 5410 5411 if (!purchaseEligible) { 5412 if (!soldOut) { 5413 if (purchaseStatus === 'not_logged_in') { 5414 buttonClass = '.btn_login_to_view'; 5415 } else if (purchaseStatus === 'non_eligible') { 5416 buttonClass = '.btn_not_eligible'; 5417 } 5418 } else { 5419 buttonClass = '.btn-soldout'; 5420 } 5421 } 5422 } 5423 else if (!purchaseRequired && isUpcoming) { 5424 labelText = ' éè³£'.replace('', formattedDate); 5425 buttonClass = '.btn_not_sale'; 5426 } 5427 else if (purchaseRequired && isUpcoming) { 5428 const isMobile = window.innerWidth <= 580; 5429 const separator = isMobile ? '\n' : ' '; 5430 labelText = '[é¨åæå¡éå®]' + separator + ' éè³£'.replace('', formattedDate); 5431 buttonClass = '.btn_not_sale'; 5432 } else if (soldOut) { 5433 buttonClass = '.btn-soldout'; 5434 } 5435 5436 if (labelText) { 5437 $upcomingText.text(labelText); 5438 $(this).find('.upcoming-product-text').show(); 5439 } else { 5440 $upcomingText.hide(); 5441 } 5442 5443 if (buttonClass) { 5444 $(this).find('.product_mask').addClass('lift'); 5445 // Hide all buttons first 5446 $(this).find('.btn-cart').hide(); 5447 $(this).find('.btn-soldout').hide(); 5448 $(this).find('.btn_not_sale').hide(); 5449 $(this).find('.btn_login_to_view').hide(); 5450 $(this).find('.btn_not_eligible').hide(); 5451 5452 // Show the appropriate button 5453 $(this).find(buttonClass).removeClass('hidden').show(); 5454 } 5455 }); 5456 5457 // for GTM 5458 $.each($('.GTM-area'),function(){ 5459 var gtm_product = [] 5460 $.each($(this).find('.GTM-info'),function(index,product){ 5461 productInfo = { 5462 'brand': $(product).data('brand'), 5463 'category': $(product).data('category'), 5464 'id': $ (product).data('id'), 5465 'list': 'Collection: '+ $(product).data('list'), 5466 'name': $(product).data('name'), 5467 'position': $(product).data('position'), 5468 'price': $ (product).data('price'), 5469 'variant': '' 5470 } 5471 if(typeof google_analytics_id != "undefined" && window.enable_ga_ee == true){ 5472 ga('ec:addImpression', productInfo); 5473 } 5474 if(typeof google_tag_manager_id != 'undefined' || typeof cyb != 'undefined'){ 5475 gtm_product.push(productInfo) 5476 } 5477 }) 5478 if(typeof google_analytics_id != 'undefined' && window.enable_ga_ee == true){ 5479 ga('send', 'event', {'nonInteraction': true}); 5480 } 5481 if(typeof google_tag_manager_id != 'undefined' && gtm_product.length > 0){ 5482 dataLayer.push({ 5483 'event': 'productImpressions', 5484 'ecommerce':{ 5485 'impressions': gtm_product 5486 } 5487 }); 5488 } 5489 if(typeof cyb != "undefined" && gtm_product.length > 0){ 5490 cyb.push({ 5491 'event': 'productImpressions', 5492 'impressions': gtm_product 5493 }); 5494 } 5495 }) 5496 }) 5497</script>
5497 5498 5499<!-- cyb_snippet swiper_product end --> 5500 5501</div> 5502 5503 5504 5505 </div> 5506</div> 5507 5508 </div> 5509 5510 <!-- Footer --> 5511 5512 5513 5514 5515 5516 5517 5518<style> 5519 5520 5521 @media(min-width: 991px) { 5522 .display_x .left-content > div { 5523 max-width: calc(100% / 2); 5524 } 5525 } 5526</style> 5527 5528<div id="index-recommendation"></div> 5529 5530<footer id="footer" class="qk-fs--body qk-bg--footer_bg"> 5531 5532 5533 <div class="qk-container display_y"> 5534 <div class="footer_content qk-mg--0 qk-display--flex qk-justify--between"> 5535 <div class="left-content qk-flex--1"> 5536 5537 5538 <div class="link-list-container"> 5539 5540 <p class="footer_title qk-fs--title qk-text--footer_text">éæ¼æ®æ²æè£½Moooï½ç¿é¼åéæéå ¬å¸</p> 5541 5542 <div class="item horizontal qk-text--left"> 5543 <ul class="qk-display--flex qk-flex--wrap"> 5544 5545 5546 <li class="qk-display--il_bk"> 5547 5548 <a 5549 class="qk-text--footer_text" 5550 href="/pages/mooooæå¡" 5551 rel="noopener noreferrer" 5552 target="_blank">Moooo æå¡</a> 5553 5554 </li> 5555 5556 5557 </ul> 5558 </div> 5559 </div> 5560 5561 5562 5563 <div class="item contact qk-text--left"> 5564 5565 <p class="footer_title qk-fs--title qk-text--footer_text">è¯çµ¡è³è¨</p> 5566 5567 <ul> 5568 5569 <li class="phone qk-bd_r--default qk-bd--footer_text qk-display--il_bk"> 5570 <span class="qk-text--footer_text">客æå°ç·ï¼07-3503075</span> 5571 </li> 5572 5573 5574 5575 <li class="time qk-bd_r--default qk-bd--footer_text qk-display--il_bk"> 5576 <span class="qk-text--footer_text">客ææéï¼10:00-17:00</span> 5577 </li> 5578 5579 5580 <br> 5581 <li class="mail qk-bd_r--default qk-bd--footer_text qk-cursor--pointer qk-display--il_bk"> 5582 <a class="qk-text--footer_text" href="mailto:[email protected]">ä¿¡ç®±ï¼[email protected]</a> 5583 </li> 5584 5585 5586 <li class="address qk-bd_r--default qk-bd--footer_text qk-display--il_bk"> 5587 <span class="qk-text--footer_text">å°åï¼813é«éå¸å·¦çåè¯å¤è·¯702è2æ¨</span> 5588 </li> 5589 5590 5591 </ul> 5592 </div> 5593 5594 5595 </div> 5596 <div class="right-content qk-display--flex qk-flex--column"> 5597 5598 <div class="media qk-display--il"> 5599 <div class="item social_media qk-h--auto qk-float--l"> 5600 <ul> 5601 5602 <li class="qk-display--il_bk"> 5603 <a target="_blank" rel="noopener noreferrer" href="https://www.facebook.com/handmademooo/"> 5604 <svg 5605 class="facebook-svg" 5606 xmlns="http://www.w3.org/2000/svg" 5607 width="40" 5608 height="40"
5609 viewBox="0 0 40 40"> 5610 <path class="qk-svg--footer_text" d="M40 20.1208C40 30.1027 32.6767 38.3778 23.1167 39.8795V25.9409H27.765L28.65 20.1742H23.1167V16.4324C23.1167 14.8541 23.89 13.3174 26.3667 13.3174H28.8817V8.4073C28.8817 8.4073 26.5983 8.01729 24.4167 8.01729C19.86 8.01729 16.8833 10.779 16.8833 15.7774V20.1725H11.8183V25.9393H16.8833V39.8779C7.325 38.3745 0 30.101 0 20.1208C0 9.07564 8.955 0.120483 20 0.120483C31.045 0.120483 40 9.07398 40 20.1208Z" /> 5611 </svg> 5612 </a> 5613 </li> 5614 5615 5616 <li class="qk-display--il_bk"> 5617 <a target="_blank" rel="noopener noreferrer" href="https://www.instagram.com/handmademooo/"> 5618 <svg 5619 class="instagram-svg" 5620 xmlns="http://www.w3.org/2000/svg" 5621 width="40" 5622 height="40" 5623 viewBox="0 0 40 40"> 5624 <rect class="qk-svg--footer_text" width="40" height="40" rx="20" /> 5625 <path class="qk-svg--footer_bg" d="M15.0302 8.08393C13.7534 8.14417 12.8814 8.34793 12.1192 8.64745C11.3303 8.95489 10.6616 9.36745 9.99636 10.0351C9.33107 10.7028 8.92139 11.3719 8.61611 12.162C8.32066 12.9259 8.1205 13.7986 8.0641 15.0761C8.0077 16.3536 7.99522 16.7643 8.00146 20.023C8.0077 23.2817 8.0221 23.6902 8.08402 24.9704C8.14498 26.2469 8.34802 27.1186 8.64755 27.8811C8.95547 28.67 9.36755 29.3384 10.0355 30.0039C10.7034 30.6694
562511.3721 31.0782 12.1641 31.3839C12.9273 31.6789 13.8002 31.88 15.0775 31.9359C16.3547 31.9918 16.7659 32.0048 20.0237 31.9986C23.2815 31.9923 23.6916 31.9779 24.9716 31.9172C26.2515 31.8565 27.1186 31.652 27.8813 31.3539C28.6702 31.0453 29.3391 30.6339 30.0042 29.9658C30.6692 29.2976 31.0787 28.628 31.3837 27.8374C31.6794 27.0742 31.8803 26.2013 31.9357 24.925C31.9916 23.6441 32.0048 23.2352 31.9986 19.9769C31.9923 16.7187 31.9777 16.3102 31.917 15.0305C31.8563 13.7508 31.653 12.8818 31.3537 12.1188C31.0453 11.3299 30.6337 10.662 29.966 9.99601C29.2983 9.33001 28.6282 8.92081 27.8379 8.61649C27.0742 8.32105 26.2018 8.11969 24.9245 8.06449C23.6472 8.00929 23.2361 7.99513 19.9771 8.00137C16.7181 8.00761 16.3101 8.02153 15.0302 8.08393ZM15.1703 29.7771C14.0003 29.7262 13.365 29.5318 12.9417 29.3691C12.381 29.1531 11.9817 28.892 11.5597 28.4742C11.1378 28.0563 10.8786 27.6555 10.6597 27.0961C10.4953 26.6727 10.2973 26.0381 10.2426 24.8681C10.1831 23.6036 10.1706 23.2239 10.1636 20.0201C10.1567 16.8164 10.1689 16.4372 10.2244 15.1721C10.2743 14.0031 10.4699 13.3671 10.6324 12.9439C10.8484 12.3826 11.1085 11.9839 11.5273 11.5623C11.9461 11.1406 12.3457 10.8809 12.9057 10.662C13.3286 10.4969 13.9631 10.3006 15.1327 10.2449C16.3982 10.1849 16.7774 10.1729 19.9807 10.1659C23.184 10.159 23.5642 10.171 24.8302 10.2267C25.9992 10.2775 26.6355 10.4712 27.0581 10.6347C27.619 10.8507 28.0181 11.1101 28.4398 11.5296C28.8615 11.9491 29.1214 12.3473 29.3403 12.9084C29.5057 13.3301 29.702 13.9644 29.7572 15.1347C29.8174 16.4002 29.8311 16.7796 29.8369 19.9827C29.8426 23.1857 29.8314 23.5661 29.7759 24.8307C29.7248 26.0007 29.5309 26.6362 29.3679 27.0601C29.1519 27.6205 28.8915 28.0201 28.4725 28.4415C28.0534 28.863 27.6543 29.1226 27.0941 29.3415C26.6717 29.5064 26.0364 29.7032 24.8679 29.7589C23.6023 29.8184 23.2231 29.8309 20.0186 29.8378C16.8141 29.8448 16.4361 29.8318 15.1706 29.7771M24.9531 13.5864C24.9535 13.8713 25.0385 14.1495 25.1971 14.3861C25.3558 14.6226 25.581 14.8068 25.8443 14.9154C26.1077 15.0239 26.3973 15.0519 26.6765 14.9959C26.9558 14.9398 27.2122 14.8022 27.4132 14.6004C27.6142 14.3986 27.7509 14.1418 27.806 13.8623C27.861 13.5828 27.8319 13.2933 27.7224 13.0304C27.6129 12.7675 27.4279 12.5429 27.1908 12.3851C26.9536 12.2274 26.675 12.1435 26.3902 12.144C26.0084 12.1448 25.6425 12.2972 25.373 12.5677C25.1035 12.8381 24.9524 13.2046 24.9531 13.5864ZM13.8386 20.012C13.8453 23.4152 16.6091 26.1677 20.0117 26.1613C23.4142 26.1548 26.1687 23.3912 26.1622 19.988C26.1557 16.5848 23.3911 13.8315 19.9881 13.8382C16.5851 13.8449 13.8321 16.6092 13.8386 20.012ZM16 20.0076C15.9985 19.2165 16.2315 18.4427 16.6698 17.784C17.108 17.1253 17.7317 16.6114 18.462 16.3072C19.1924 16.003 19.9965 15.9222 20.7727 16.075C21.549 16.2278 22.2625 16.6073 22.823 17.1656C23.3836 17.724 23.766 18.436 23.9218 19.2116C24.0777 19.9872 24.0001 20.7917 23.6988 21.5232C23.3975 22.2547 22.886 22.8804 22.2291 23.3213C21.5721 23.7621 20.7992 23.9983 20.0081 23.9998C19.4827 24.0009 18.9623 23.8985 18.4766 23.6985C17.9909 23.4985 17.5493 23.2047 17.1771 22.834C16.8049 22.4632 16.5094 22.0228 16.3074 21.5379C16.1054 21.0529 16.001 20.533 16 20.0076Z" /> 5626 </svg> 5627 </a> 5628 </li> 5629 5630 5631 5632 </ul> 5633 </div> 5634 </div> 5635 </div> 5636 </div> 5637 </div> 5638 5639 <div class="copyright qk-text--footer_text qk-bd--footer_text qk-text--left qk-bd_t--default"> 5640 <div class="qk-container container qk-fw--500"> 5641 <span>Copyright ©</span> 5642 <a class="qk-text--link" href="/"> 5643 <span>æ®æ²æè£½</span> 5644 </a> 5645 <span>All Rights Reserved.</span> 5646 <span>Designed by 5647 </span> 5648 <a 5649 class="qk-text--link" 5650 href="https://www.cyberbiz.io?utm_source=poweredbycyberbiz" 5651 target="_blank" 5652 rel="noopener noreferrer" 5653 title="Designed by CYBERBIZ">CYBERBIZ</a>. 5654 </div> 5655 </div> 5656 5657</footer>
5658<script> 5659 $(document).ready(function() { 5660 let isDynamicLoading = false; 5661 5662 let menusData = { 5663 5664 5665 "mooooæå¡": { 5666 5667 "type": "items", 5668 "data": [ 5669 5670 5671 5672 { 5673 "title": "Moooo æå¡", 5674 "url": "/pages/mooooæå¡", 5675 "item_type": "page" 5676 } 5677 5678 5679 ] 5680 5681 }, 5682 5683 5684 5685 5686 }; 5687 5688 if (isDynamicLoading) { 5689 window.DynamicLoading.setupComponent({ 5690 sectionId: '#footer', 5691 callbackData:{ 5692 section: {"type":"footer","visible":true,"settings":{"footer_link":"footer","display_facebook":true,"shop_facebook":"https://www.facebook.com/handmademooo/","display_instagram":true,"shop_instagram":"https://www.instagram.com/handmademooo/","display_line":false,"shop_line":"https://line.me/zh-hant/","display_youtube":false,"shop_youtube":"https://www.youtube.com/","footer_link_arrangement":"display_y"},"block_order":["default_link_list","default_contact_info"],"blocks":{"default_link_list":{"type":"link_list_setting","custom_name":"é¸å®","thumbnail":"list","draggable":true,"visible":true,"settings":{"dict_link_list_block_title":"éæ¼æ®æ²æè£½Moooï½ç¿é¼åéæéå ¬å¸","footer_link":"mooooæå¡"}},"default_contact_info":{"type":"contact_info_setting","custom_name":"è¯çµ¡è³è¨","thumbnail":"contactInfo","draggable":true,"visible":true,"settings":{"dict_contact_info_block_title":"è¯çµ¡è³è¨","display_phone":"true","dict_phone_number":"07-3503075","display_fax_number":false,"dict_shop_fax_number":"0222345678","display_shop_email":"true","dict_shop_email":"[email protected]","display_shop_address":true,"dict_shop_address":"813é«éå¸å·¦çåè¯å¤è·¯702è2æ¨","display_office_time":"true","dict_shop_office_time":"10:00-17:00"}}},"custom_name":"é è ³"}, 5693 shop: { 5694 name: 'æ®æ²æè£½', 5695 cyberbiz_link: 'https://www.cyberbiz.io?utm_source=poweredbycyberbiz', 5696 facebook_fan_page: '', 5697 }, 5698 menus: menusData, 5699 is_display_facebook_fan_block: false 5700 }, 5701 entryName:'renderFooterSection', 5702 source:'//cdn1-next.cybassets.com/frontend/shop/footerSection-3a2e378145f8a165.js', 5703 }); 5704 } 5705 }); 5706</script>
5706 5707 5708<!-- cyb_snippet _tracking_code start --> 5709
5709<script> 5710 window.fbAsyncInit = function() { 5711 FB.init({ 5712 appId : '', 5713 xfbml : true, 5714 version : 'v24.0', 5715 }); 5716 }; 5717 (function(d, s, id){ 5718 var js, fjs = d.getElementsByTagName(s)[0]; 5719 if (d.getElementById(id)) {return;} 5720 js = d.createElement(s); 5721 js.id = id; 5722 js.src = 'https://connect.facebook.net/zh_TW/sdk.js'; 5723 fjs.parentNode.insertBefore(js, fjs); 5724 }(document, 'script', 'facebook-jssdk')); 5725 </script>
5725 5726 5727
5728<script> 5729 // for scupio 5730 if (document.querySelector("meta[name=\"scupio_mid\"]")) { 5731 mid = document.querySelector("meta[name=\"scupio_mid\"]").content; 5732 } else { 5733 mid = ""; 5734 } 5735 if (!window.is_scupio_sent && mid) { 5736 window._bwtm = window._bwtm || [] 5737 window._bwtm.push({ 5738 "mid": mid, 5739 "uid": "" 5740 }); 5741 } 5742</script>
5742 5743 5744<!-- cyb_snippet _tracking_code end --> 5745
5746<script> 5747 $(document).ready(function(){ 5748 if(window.location.pathname != '' && window.location.pathname != '/' ){ 5749 document.getElementById('index-recommendation').style.display = 'none' 5750 } 5751 }); 5752</script>
5752 5753 5754 5755 5756 <!-- Fast-Events --> 5757 <!-- cyb_snippet fast_events start --> 5758 5759
5760<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/fast_events-3a2e378145f8a165.js' type='text/javascript'></script>
5760 5761<link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/fast_events-3a2e378145f8a165.css' rel='stylesheet' type='text/css' media='all' /> 5762 5763<!-- cyb_snippet fast_events end --> 5764 5765 <div class="bottom-right qk-pos--fixed"> 5766 <!-- gototop --> 5767 <div id="gototop" class="qk-display--none qk-text--center"> 5768 <a href="javascript:void(0)" class="qk-circle qk-circle--lg qk-pos--relative qk-text--center"> 5769 <i class="fas fa-chevron-up"></i> 5770 </a> 5771 </div> 5772 5773 <!-- popup --> 5774 5775 5776 5777 5778<div id="popup-wrapper" class="qk-display--none"></div> 5779 5780<template id="popup-template"> 5781 <div 5782 :class="status" 5783 v-if="hasContent" 5784 id="popup-section" 5785 > 5786 <transition name="backdrop"> 5787 <div 5788 v-if="shouldShowPopup" 5789 @click.capture="minifyPopup" 5790 id="popup-backdrop" 5791 class="qk-w--100vw qk-h--100vh qk-pos--fixed qk-t--0 qk-l--0 qk-tst" 5792 > 5793 </div> 5794 </transition> 5795 <transition name="onShow"> 5796 <div 5797 @click.self="showPopup" 5798 @transitionstart="updateGameStatus('start', this)" 5799 @transitionend="updateGameStatus('end', this)" 5800 class="popup-content qk-display--flex qk-align--center qk-tst qk-tst_dur--30 qk-tst_timing--ease_o" 5801 > 5802 <div 5803 v-for="block in blocks" 5804 :key="block.id" 5805 :class="[block.type, minifiedBlockClasses, block.settings.icon_size]" 5806 class="block qk-tst qk-tst_dur--30 qk-tst_timing--ease_o qk-of--auto" 5807 > 5808 <div v-if="block.type === 'image'" class="qk-pos--rel"> 5809 <img 5810 v-show="!shouldShowPopup" 5811 :src="block.settings.dict_icon_image_url" 5812 class="qk-tst qk-tst_dur--30 qk-tst_timing--ease_o" 5813 alt="popup button" 5814 > 5815 <a 5816 v-show="shouldShowPopup" 5817 :href="block.settings.dict_link" 5818 :target="block.settings.target" 5819 :rel="block.settings.rel" 5820 class="qk-display--flex qk-align--center" 5821 @click="linkClicked" 5822 > 5823 <picture> 5824 <source :srcset="block.settings.dict_mobile_image_url" media="(max-width: 576px)"> 5825 <source :srcset="block.settings.dict_tablet_image_url" media="(max-width: 992px)"> 5826 <img 5827 :src="block.settings.dict_image_url" 5828 class="qk-tst qk-tst_dur--30 qk-tst_timing--ease_o" 5829 alt="popup picture" 5830 /> 5831 </picture> 5832 </a> 5833 </div> 5834 <div v-if="block.type === 'video'"> 5835 <iframe 5836 :src="block.settings.dict_video_link" 5837 frameborder="0" 5838 class="qk-center--y qk-w--100 qk-h--100" 5839 ></iframe> 5840 </div> 5841 <div v-if="block.type === 'game'"> 5842 <div v-show="gameStatus === 'show'" :class="{ 'show-game': gameStatus === 'show' }"> 5843 <iframe 5844 class="cb-game-iframe iframe-loading" 5845 :src="getGameIframeSrc(block)" 5846 style="border: none;" 5847 > 5848 Loading 5849 </iframe> 5850 </div> 5851 <div v-show="gameStatus === 'minified'"> 5852 <img 5853 src="//cdn1-next.cybassets.com/game_assets/game_minified_new.png" 5854 class="qk-h--100 qk-w--100" 5855 alt="game minified icon" 5856 /> 5857 </div> 5858 </div> 5859 <div 5860 v-if="block.type === 'carousel'" 5861 :id="`popup-carousel-${block.id}`" 5862 > 5863 </div> 5864 </div> 5865 </div> 5866 </transition> 5867 <transition name="backdrop"> 5868 <div 5869 v-if="shouldShowPopup" 5870 @click.capture="minifyPopup" 5871 class="minify-popup qk-circle qk-circle--md qk-text--black qk-bg--white qk-bd--default qk-bd--border qk-text--center qk-cursor--pointer qk-pos--fixed" 5872 > 5873 </div> 5874 </transition> 5875 </div> 5876</template> 5877
5878<script> 5879 $(document).ready(function() { 5880 const CDN_HOST = '//cdn1-next.cybassets.com'; 5881 const section = {"type":"popup","visible":true,"blocks":{"popup_block_1":{"type":"image","visible":false,"settings":{"dict_image_url":"/theme_src/i18n_shoestore/default_img/popup_default.jpg","icon_size":"small"},"custom_name":"åç"}},"block_order":["popup_block_1"],"settings":{},"custom_name":"å½çªå»£å"}; 5882 var popupSection = Vue.createApp({ 5883 template: '#popup-template', 5884 delimiters: ['${', '}'], 5885 data() { 5886 const isOmniauthPage = ['omniauth_terms_agreement', 'omniauth_mobile/'] 5887 .some(path => location.pathname.includes(path)); 5888 return { 5889 status: 'minified', 5890 gameStatus: 'show', 5891 blocks: isOmniauthPage 5892 ? [] 5893 : section.block_order && section.block_order.reduce( 5894 function(acc, blockId) { 5895 const block = section.blocks[blockId]; 5896 if (block && block.visible) { 5897 acc.push({ 5898 ...block, 5899 id: blockId, 5900 }); 5901 } 5902 return acc; 5903 }, 5904 [], 5905 ), 5906 hasAddedGameScript: false, 5907 }; 5908 }, 5909 computed: { 5910 hasContent: function() { 5911 return !!(this.blocks && this.blocks.length > 0); 5912 }, 5913 minifiedBlockClasses: function() { 5914 return this.status === 'minified' ? 'qk-pointer--none qk-unselectable' : ''; 5915 }, 5916 shouldShowPopup: function() { 5917 return this.status === 'show'; 5918 } 5919 }, 5920 methods: { 5921 unhidePopup: function(storedStatus) { 5922 this.status = storedStatus; 5923 $('#popup-wrapper').removeClass('qk-display--none'); 5924 }, 5925 showPopup: function() { 5926 if (this.status !== 'show') { 5927 this.status = 'show'; 5928 this.saveStatus(this.status); 5929 } 5930 }, 5931 minifyPopup: function() { 5932 this.status = 'minified'; 5933 this.saveStatus('minified'); 5934 }, 5935 loadStatus: function() { 5936 return JSON.parse(localStorage.getItem('popupStatus')); 5937 }, 5938 saveStatus: function(status) { 5939 if (status) { 5940 localStorage.setItem('popupStatus', JSON.stringify({ 5941 status: status, 5942 setTime: new Date().getTime(), 5943 })); 5944 } 5945 }, 5946 linkClicked: function() { 5947 this.saveStatus('minified'); 5948 }, 5949 parseVideoLink: function(settings) { 5950 settings.dict_video_link = themeHelper.parseYtUrl(settings.dict_video_link); 5951 }, 5952 setupImageSrc: function (settings) { 5953 settings.dict_image_url = this.addCdnHost(settings.dict_image_url); 5954 if (settings.dict_tablet_image_url) { 5955 settings.dict_tablet_image_url = this.addCdnHost(settings.dict_tablet_image_url); 5956 } 5957 if (settings.dict_mobile_image_url) { 5958 settings.dict_mobile_image_url = this.addCdnHost(settings.dict_mobile_image_url); 5959 } 5960 settings.dict_icon_image_url = this.addCdnHost(settings.dict_icon_image_url) || settings.dict_image_url; 5961 }, 5962 addCdnHost: function(url) { 5963 if (!url) { 5964 return url; // only add cdn host if url is not empty 5965 } 5966 5967 try { 5968 new URL(url); 5969 return url; // already a valid url, cdn host not needed 5970 } catch { 5971 return `${CDN_HOST}${url}`; 5972 } 5973 }, 5974 initStatus: function() { 5975 let newStatus = 'show'; 5976 const popupStatus = this.loadStatus(); 5977 const currentTime = new Date().getTime(); 5978 const oneDay = 1000 * 60 * 60 * 24; 5979 const hasStoredStatus = popupStatus && currentTime - popupStatus.setTime < oneDay; 5980 const redirectedByGameLogin = !this.hasRedirectUrl() && this.redirectedByGameLogin(); 5981 const isLoggingIn = this.isLoggingIn(); 5982 const isCartPage = window.location.pathname.split('/').includes('carts'); 5983 5984 if (hasStoredStatus && !redirectedByGameLogin) { 5985 newStatus = popupStatus.status; 5986 } 5987 5988 if (isLoggingIn) { 5989 newStatus = 'minified'; 5990 } else { 5991 localStorage.removeItem('redirectedByPopup'); 5992 } 5993 5994 setTimeout(() => { 5995 this.status = newStatus; 5996 this.gameStatus = newStatus; 5997 this.saveStatus(newStatus); 5998 if(!isCartPage){ 5999 this.unhidePopup(newStatus); 6000 } 6001 }, 1000); 6002 }, 6003 initBlocks: function() { 6004 if (this.hasContent) { 6005 this.blocks.forEach(block => { 6006 switch(block.type) { 6007 case 'image': 6008 this.setupImageSrc(block.settings); 6009 6010 const isOpenInNewTab = block.settings.link_open_in_new_tab; 6011 if (isOpenInNewTab) { 6012 block.settings.target = '_blank'; 6013 block.settings.rel = 'noopener noreferrer'; 6014 } 6015 6016 break; 6017 case 'video': 6018 this.parseVideoLink(block.settings); 6019 break; 6020 } 6021 }) 6022 } 6023 }, 6024 getGameIframeSrc: function (block) { 6025 return `/games/${block.settings.dict_game_handle}` 6026 }, 6027 updateGameStatus: function(type, element) { 6028 if ( 6029 (type === 'start' && this.status === 'minified') 6030 || (type === 'end' && this.status === 'show') 6031 ) { 6032 this.gameStatus = this.status; 6033 } 6034 }, 6035 setupGameRedirects: function() { 6036 window.addEventListener('pagehide', () => { 6037 const isGameActive = document.body.getElementsByClassName('show-game').length; 6038 if (isGameActive) { 6039 localStorage.setItem('redirectedByPopup', 'true'); 6040 this.saveStatus('minified'); 6041 } 6042 }); 6043 }, 6044 hasRedirectUrl: function() { 6045 return (new URLSearchParams(location.search)).has('redirect_url'); 6046 }, 6047 redirectedByGameLogin: function() { 6048 return localStorage.getItem('redirectedByPopup'); 6049 }, 6050 isLoggingIn: function() { 6051 const loginRelatedPathnames = [ 6052 'account/signup', 6053 'account/login', 6054 'account/customer/password/new', 6055 'pages/terms' 6056 ]; 6057 return loginRelatedPathnames.some(path => location.pathname.includes(path)); 6058 } 6059 }, 6060 created: function() { 6061 this.initStatus(); 6062 this.initBlocks(); 6063 this.setupGameRedirects(); 6064 }, 6065 mounted: function() { 6066 this.blocks.forEach((block) => { 6067 if (block.type === 'carousel' && block.settings.dict_c
6067arousel) { 6068 renderCarousel(`#popup-carousel-${block.id}`, { 6069 title: block.settings.dict_carousel, 6070 CDN_HOST, 6071 onLinkClick: () => this.linkClicked(), 6072 }); 6073 } 6074 }); 6075 }, 6076 }); 6077 popupSection.mount('#popup-wrapper'); 6078 }); 6079</script>
6079 6080 6081 6082 6083 </div> 6084 6085 <!-- ajaxloading --> 6086 <div id="ajaxloading" class="qk-display--none qk-h--100vh qk-w--100vw qk-l--0 qk-t--0 qk-pos--fixed"> 6087 <div class="ajaxbody qk-pos--abs qk-l--50 qk-t--50 qk-text--center"> 6088 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="73.4" height="73.4" viewBox="0 0 73.4 73.4"> 6089 <circle class="circle" fill="none" stroke="#898989" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="36.7" cy="36.7" r="35.2"/> 6090 <polyline class="success_path" fill="none" stroke="#898989" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="23.7,36.8 32.4,45.4 49.7,28 "/> 6091 <path class="success_icon" fill="#898989" d="M32.5,46.9c-0.4,0-0.8-0.2-1.1-0.4l-8.6-8.6c-0.6-0.6-0.6-1.5,0-2.1s1.5-0.6,2.1,0l7.5,7.5L48.6,27c0.6-0.6,1.5-0.6,2.1,0s0.6,1.5,0,2.1L33.5,46.5C33.2,46.7,32.9,46.9,32.5,46.9L32.5,46.9z"/> 6092 <line class="fail_path" fill="none" stroke="#898989" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="26.6" y1="26.6" x2="46.8" y2="46.8"/> 6093 <line class="fail_path" fill="none" stroke="#898989" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="46.8" y1="26.6" x2="26.6" y2="46.8"/> 6094 <path class="fail_icon" fill="#898989" d="M38.7,36.7l9.1-9.1c0.6-0.6,0.6-1.5,0-2.1s-1.5-0.6-2.1,0l-9.1,9.1l-9.1-9.1c-0.6-0.6-1.5-0.6-2.1,0s-0.6,1.5,0,2.1l9.1,9.1l-9.1,9.1c-0.6,0.6-0.6,1.5,0,2.1c0.3,0.3,0.7,0.4,1.1,0.4s0.8-0.1,1.1-0.4l9.1-9.1l9.1,9.1c0.3,0.3,0.7,0.4,1.1,0.4s0.8-0.1,1.1-0.4c0.6-0.6,0.6-1.5,0-2.1L38.7,36.7z"/> 6095 </svg> 6096 <div class="success_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">å·²å å ¥è³¼ç©è»</div> 6097 <div class="success_update_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">å·²æ´æ°è³¼ç©è»</div> 6098 <div class="fail_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">網路ç°å¸¸ï¼è«éæ°æ´ç</div> 6099 </div> 6100 </div> 6101
6101<script src="//cdn1-next.cybassets.com/assets/referral-code-trace-5fcbbe026a61c36b5f09a1615a1c168688205205d9d3e7ee854181a66b64a6ed.js"></script>
6101 6102
6102<script> 6103 cyb.push({ 6104 'event': 'productDetails', 6105 'ecommerce': { 6106 'currencyCode': 'TWD', 6107 'detail': { 6108 'products': [{"id":57903702,"name":"å層è´è¶é ¥ ï½ èèå£å³","price":480.0,"brand":null,"category":null,"variant":""}] 6109 } 6110 } 6111 }); 6112 </script>
6112 6113 6114
6114<script> 6115 if (window.fbq) { 6116 fbq("track", "ViewContent", { 6117 content_name: "å層è´è¶é ¥ ï½ èèå£å³", 6118 content_ids: "70021235", 6119 content_type: "product", 6120 value: 480.0, 6121 currency: "TWD", 6122 contents: [{"id":70021235,"price":480.0,"quantity":0}], 6123 content_category: null 6124 },{ 6125 eventID: "ViewContent_4529EA1AB0568D128D457D6A48725745" 6126 }); 6127 } 6128 </script>
6128 6129 </body> 6130 6131
6131<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/sub_vendor-3a2e378145f8a165.js' type='text/javascript'></script>
6131 6132
6132<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/theme_helper-3a2e378145f8a165.js' type='text/javascript'></script>
6132 6133 6134 <!-- theme assets --> 6135
6135<script src='//cdn1-next.cybassets.com/s/files/28304/theme/104290/assets/js/1708572672_b46a7f1c_main.js?1708572672' type='text/javascript'></script>
6135 6136
6136<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/theme-3a2e378145f8a165.js' type='text/javascript'></script>
6136 6137 6138 <!-- for cache --> 6139
6139<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/cacheable-3a2e378145f8a165.js' type='text/javascript'></script>
6139 6140</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.