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/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTAzNzkyXzQ4eDQ4LnBuZy5wbmciXV0.png?convert=false&sha=8910344cbecd2656"> 20<link rel="apple-touch-icon" href="https://cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTAzNzkyXzQ4eDQ4LnBuZy5wbmciXV0.png?convert=false&sha=8910344cbecd2656"> 21 22<meta property="og:site_name" content="ayufoods" /> 23 24<!-- og tag --> 25 26 <meta name="keywords" content="é¿çè´ç²©å°è³£åº" /> 27 <meta name="description" content="é山第ä¸å®¶è´ç²©å°è³£åºï¼æ¡ç¨éå±±ç¶å°ç¹ç¢ï¼å°çãèé ï¼å æç¨ææ°é®®çææåå¥åº·çæå·¥æ¹å¼ï¼éç¾èæç¾å¥½æå ï¼å¸¶çµ¦å¤§ç¾æ°é®®ãå¥åº·ãåå¾å°åå³ç幸ç¦å¤æ©å³ã" /> 28 <meta property="og:title" content="ayufoods é¿çè´ç²©å°è³£åº" /> 29 <meta property="og:description" content="é山第ä¸å®¶è´ç²©å°è³£åºï¼æ¡ç¨éå±±ç¶å°ç¹ç¢ï¼å°çãèé ï¼å æç¨ææ°é®®çææåå¥åº·çæå·¥æ¹å¼ï¼éç¾èæç¾å¥½æå ï¼å¸¶çµ¦å¤§ç¾æ°é®®ãå¥åº·ãåå¾å°åå³ç幸ç¦å¤æ©å³ã" /> 30 <meta property="og:url" content="https://www.ayufoods.com" /> 31 <meta property="og:type" content="website" /> 32 33 34<!-- og image --> 35 36 37 <meta property="og:image" content="https://cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTAzODA3XzMwMHgzMDAucG5nLnBuZyJdXQ.png?sha=0d182fecbb3c42d6" /> 38 39 40 41<title> 42 43 ayufoods é¿çè´ç²©å°è³£åº 44 45</title> 46 47 48
49<script src='//cdn1-next.cybassets.com/frontend/shop/useSettingsData-4a1e7dfec7e41476.js' type='text/javascript'></script>
49 50 51 52 53
53<script> 54 window.setSettingsData({"draggable_sections":{"404":[],"index":["_main_slider_custom","_index_4_blocks","_index_8_blocks"],"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/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTAzNTg3XzMxNXgxMDAucG5nLnBuZyJdXQ.png?sha=43072cdcb82ce596","navbar_image_logo_tablet_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTAzNTg3XzMxNXgxMDAucG5nLnBuZyJdXQ.png?sha=43072cdcb82ce596","navbar_image_logo_mobile_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTAzNTg3XzMxNXgxMDAucG5nLnBuZyJdXQ.png?sha=43072cdcb82ce596","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":false,"dict_header_banner_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjk5MzQyODkyXzE5MjB4NTBf5pyD5ZOh55m75YWl6aCI55-lLmpwZy5qcGVnIl1d.jpeg?sha=62739b1f7d97e7c3","dict_header_banner_image_tablet_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjk5MzQyOTEwXzk2MHg1MF_mnIPlk6HnmbvlhaXpoIjnn6UuanBnLmpwZWciXV0.jpeg?sha=57f91cf0b1f4c9a6","dict_header_banner_image_mobile_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjk5MzQyOTE5XzgwMHg1Ml_mnIPlk6HnmbvlhaXpoIjnn6UuanBnLmpwZWciXV0.jpeg?sha=69033ca470073319","dict_header_banner_link":"/blogs/news","display_count_down":false,"header_logo_image_alt":"é¿çè´ç²©","navbar_display_style":"displayDefault","menu_display_style":"three_dimension_menu","header_banner_start":"","header_banner_end":"","timer_text_color":"#c39d6f","timer_bg_color":"#2b2b6e","header_banner_image_alt":"親æçå®¢æ¶æ¨å¥½ï¼ç±æ¼æå¡ç³»çµ±åç´ï¼è¥æ¨ä¹åæ¾ç³è«æå¡ï¼è«æ¨æ¼ç¬¬ä¸æ¬¡ç»å ¥æ¤ç¶²ç«ä½¿ç¨ãå¿è¨å¯ç¢¼ ãåè½ï¼é²è¡å¯ç¢¼è¨å®ã"},"custom_name":"å°è¦½å"},"footer":{"type":"footer","visible":true,"settings":{"footer_link":"footer","display_facebook":true,"shop_facebook":"https://www.facebook.com/ayufoods/?locale=zh_TW","display_instagram":false,"shop_instagram":"https://www.instagram.com/?hl=zh-tw","display_line":false,"shop_line":"https://line.me/zh-hant/","display_youtube":false,"shop_youtube":"https://www.youtube.com/","footer_link_arrangement":"display_x"},"block_order":["default_link_list","1686193641937_0","default_contact_info","1686116321657_2"],"blocks":{"default_link_list":{"type":"link_list_setting","custom_name":"é¸å®","thumbnail":"list","draggable":true,"visible":true,"settings":{"dict_link_list_block_title":"é¿çè´ç²©å°è³£åº","footer_link":"é è ³ä¸»é¸å®_1"}},"default_contact_info":{"type":"contact_info_setting","custom_name":"è¯çµ¡è³è¨","thumbnail":"contactInfo","draggable":true,"visible":false,"settings":{"dict_contact_info_block_title":"è¯çµ¡è³è¨","display_phone":true,"dict_phone_number":"0912345678","display_fax_number":true,"dict_shop_fax_number":"0222345678","display_shop_email":true,"dict_shop_email":"[email protected]","display_shop_address":true,"dict_shop_address":"測試å°å","display_office_time":true,"dict_shop_office_time":"10:00-17:00"}},"1686116321657_2":{"type":"rich_text_editor_setting","custom_name":"èªè¨æå","visible":true,"settings":{"dict_rich_text_title":"è¯çµ¡è³è¨","dict_rich_text_content":"\u003cp\u003eè¨è³¼å°ç· ï¼02-2408-1889ã02-2498-1189\u003c/p\u003e\n\u003cp\u003eå³ç ï¼02-2498-7588\u003c/p\u003e\n\u003cp\u003eä¿¡ç®± ï¼[email protected]\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n\u003cp\u003eéå±±èè¡é¿çè´ç²©ï¼ç¸½åºï¼\u003cbr\u003eå°åï¼å°ç£æ°åå¸éå±±åéå éè¡65è\u003c/p\u003e\n\u003cp\u003eçæ¥æé\u003c/p\u003e\n\u003cp\u003eå¹³æ¥09ï¼00 - 18ï¼00\u003c/p\u003e\n\u003cp\u003e忥09ï¼00 - 20ï¼00\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n\u003cp\u003eéå±±èè¡é¿çè´ç²©ï¼ä¸å±±åºï¼\u003c/p\u003e\n\u003cp\u003eå°åï¼æ°åå¸éå±±åä¸å±±è·¯110è\u003c/p\u003e\n\u003cp\u003eçæ¥æé\u003c/p\u003e\n\u003cp\u003e09ï¼00 - 21ï¼00\u003c/p\u003e\n"}},"1686193641937_0":{"type":"link_list_setting","custom_name":"é¸å®","visible":true,"settings":{"dict_link_list_block_title":"","footer_link":"é è ³ä¸»é¸å®_2"}}},"custom_name":"é è ³"},"_main_slider_custom":{"type":"_main_slider_custom","visible":true,"blocks":{"display_main_slider_item_1":{"type":"image","visible":true,"settings":{"dict_link":"/","dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4MzI4XzE5MjB4OTAwX-mYv-eOieWqveWqvS5qcGcuanBlZyJdXQ.jpeg?sha=de53b9aeaa3be8c1","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4MzM4Xzk2MHg4NzBf6Zi_546J5aq95aq9LmpwZy5qcGVnIl1d.jpeg?sha=e83952fadc965c0
545","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4MzM5XzQ4MHg3MjBf6Zi_546J5aq95aq9LmpwZy5qcGVnIl1d.jpeg?sha=5b08fa7813d133b0"},"custom_name":"ç´ æ"},"display_main_slider_item_2":{"type":"image","visible":true,"settings":{"dict_link":"/collections/è´ç²©é¡","dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4MzYzXzE5MjB4OTAwX-e2nOWQiC5qcGcuanBlZyJdXQ.jpeg?sha=34576c24a143f434","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4MzYzXzk2MHg4NzBf57ac5ZCILmpwZy5qcGVnIl1d.jpeg?sha=93c97e87bdcdebe8","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4MzYzXzQ4MHg3MjBf57ac5ZCILmpwZy5qcGVnIl1d.jpeg?sha=c13c902159c4ea37","main_slider_image_alt":"è´ç²©"},"custom_name":"ç´ æ"},"display_main_slider_item_3":{"type":"image","visible":true,"settings":{"dict_link":"","dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4NDE4XzE5MjB4OTAwX-mFpeeJh-mhnl_pmL_njonlqr3lqr0uanBnLmpwZWciXV0.jpeg?sha=09b4df62921fa56b","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4NDE4Xzk2MHg4NzBf6YWl54mH6aGeX-mYv-eOieWqveWqvS5qcGcuanBlZyJdXQ.jpeg?sha=4f22f9c33fefdf54","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4NDE4XzkwMHgxMzUwX-mFpeeJh-mhnl_pmL_njonlqr3lqr0uanBnLmpwZWciXV0.jpeg?sha=ea5feee6636fab69"},"custom_name":"ç´ æ"},"display_main_slider_item_4":{"type":"image","visible":true,"settings":{"dict_link":"/collections/æµ·æ´é¢¨å³è´ç²©","dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4Mz
54k0XzE5MjB4OTAwX-a1t-a0i-miqOWRsy5qcGcuanBlZyJdXQ.jpeg?sha=abc7c81f9992f8ad","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4Mzk1Xzk2MHg4NzBf5rW35rSL6aKo5ZGzLmpwZy5qcGVnIl1d.jpeg?sha=289f785be3f79395","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4Mzk1XzkwMHgxMzUwX-a1t-a0i-miqOWRsy5qcGcuanBlZyJdXQ.jpeg?sha=1cc79dae0f847f57","main_slider_image_alt":"æµ·æ´é¢¨å³è´ç²©"},"custom_name":"ç´ æ"},"display_main_slider_item_5":{"type":"image","visible":true,"settings":{"dict_link":"/collections/éº»è±æ²é¡","dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4NDQ3XzE5MjB4OTAwX-m6u-iKsS5qcGcuanBlZyJdXQ.jpeg?sha=5de125ce9e449698","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4NDQ4Xzk2MHg4NzBf6bq76IqxLmpwZy5qcGVnIl1d.jpeg?sha=a10bf9d34e160f67","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4NDQ4XzQ4MHg3MjBf6bq76IqxLmpwZy5qcGVnIl1d.jpeg?sha=6cf2f1f86844b6bf","main_slider_image_alt":"éº»è±æ²é¡"},"custom_name":"ç´ æ"},"1686128999598_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTI5MDE3XzE5MjB4OTAwLnBuZy5wbmciXV0.png?sha=9c06c0696f646603","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTI5MDQyXzk2MHg4NzAucG5nLnBuZyJdXQ.png?sha=045f8d1bb681b809","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTI5MDQ4XzQ4MHg3MjAucG5nLnBuZyJdXQ.png?sha=7c2398573930ea1a","dict_link":""}}},"block_order":["display_main_slider_item_1","display_main_slider_item_2","display_main_slider_item_4","display_main_slider_item_3","display_main_slider_item_5","1686128999598_0"],"settings":{"margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"50","swiper_delay":"3","image_number":"1","image_space":"12","mobile_image_number":"1","mobile_image_space":"8"},"custom_name":"輪æç´ æ"},"_index_product_banner":{"type":"_index_product_banner","visible":false,"settings":{"dict_link":"","dict_image_url":"/theme_src/i18n_shoestore/default_img/new_index_product_banner_1_lg.jpg","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":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"24"},"custom_name":"æ©«å¹
廣å"},"_index_8_blocks":{"type":"_index_8_blocks","visible":true,"settings":{"dict_title":"æ¢é·åå","collection_handle":"è´ç²©é¡","limit":"12","margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"24","product_display":"displayPartial","product_arrangement":"1"},"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"},"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":"/blogs/news","dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTI5NTYxXzE5MjB4OTIwX-acgOaWsOa2iOaBry5qcGcuanBlZyJdXQ.jpeg?sha=ae80d11c00d329c6","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTE2MDAyXzk2MF_mnIDmlrDmtojmga8uanBnLmpwZWciXV0.jpeg?sha=04a6bcb5b150da28","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTE2MDAyXzk2MF_mnIDmlrDmtojmga8uanBnLmpwZWciXV0.jpeg?sha=04a6bcb5b150da28","block_propotion":""},"custom_name":"åç"},"1686109638114_0":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTI5NTc4XzE5MjB4OTIwX-WqkumrlOWgseWwji5qcGcuanBlZyJdXQ.jpeg?sha=a2da60162e9c9f54","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTE2MDU0Xzk2MF_lqpLpq5TloLHlsI4uanBnLmpwZWciXV0.jpeg?sha=d4567729a9c5b0f2","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTE2MDU0Xzk2MF_lqpLpq5TloLHlsI4uanBnLmpwZWciXV0.jpeg?sha=d4567729a9c5b0f2","dict_link":"/blogs/åªé«å ±å°","block_propotion":""}},"1686109641362_0":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTI5NTkxXzE5MjB4OTIwX1EmQS5qcGcuanBlZyJdXQ.jpeg?sha=4c11815baeab4031","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTE2MDg4Xzk2MF9RJkEuanBnLmpwZWciXV0.jpeg?sha=d1ac64b45fb824b6","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTE2MDg4Xzk2MF9RJkEuanBnLmpwZWciXV0.jpeg?sha=d1ac64b45fb824b6","dict_link":"/pages/ï½ï¼ï½","block_propotion":""}}},"block_order":["display_index_4_block_1","1686109638114_0","1686109641362_0"],"custom_name":"èªè¨æçè¨è¨","settings":{"margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"50","mobile_columns":1,"margin_block":"10","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":"
546","category_product_item_limit":"18"}},"shop_setting":{"type":"shop_setting","visible":true,"settings":{"favicon_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTAzNzkyXzQ4eDQ4LnBuZy5wbmciXV0.png?sha=8910344cbecd2656","og_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTAzODA3XzMwMHgzMDAucG5nLnBuZyJdXQ.png?sha=0d182fecbb3c42d6","shop_title":"é¿çè´ç²©å°è³£åº","shop_description":"é山第ä¸å®¶è´ç²©å°è³£åºï¼æ¡ç¨éå±±ç¶å°ç¹ç¢ï¼å°çãèé ï¼å
æç¨ææ°é®®çææåå¥åº·çæå·¥æ¹å¼ï¼éç¾èæç¾å¥½æå
ï¼å¸¶çµ¦å¤§ç¾æ°é®®ãå¥åº·ãåå¾å°åå³ç幸ç¦å¤æ©å³ã","shop_keywords":"é¿çè´ç²©å°è³£åº"},"custom_name":"å
¨ç«è¨å®"},"color_settings":{"type":"color_settings","visible":true,"settings":{"button_color":"#000000","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":"#000000","footer_text_color":"#FFFFFF","checkout_button_color":"#000000","checkout_accent_color":"#2b2b6e"},"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":""}},"product_description":{"type":"product_description","visible":true},"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"}},"combo_product_info":{"type":"combo_product_info","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":"12","is_infinite_scroll":false},"custom_name":"åååé¡è¨å®"},"404":{"type":"404","visible":true,"settings":{"image_url":"","dict_404_image_url":"","dict_title_text":"æ±æï¼æ¤é é¢ä¸å卿è
å·²ç¶è¢«ç§»é¤","dict_btn_text":"è¿åé¦é "},"custom_name":"404é "},"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/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":{}},"combo_product_desc":{"type":"combo_product_desc","visible":true,"settings":{}},"customers/other_valid_orders":{"type":"customers/other_valid_orders","visible":true,"settings":{}},"announcement_bar":{"type":"announcement_bar","visible":true,"blocks":{"announcement_bar_block_1":{"type":"image","visible":false,"settings":{"display_only_index":false,"display_period":"always","dict_link":"/blogs/news","link_open_in_new_tab":false,"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjk5MzQyODkyXzE5MjB4NTBf5pyD5ZOh55m75YWl6aCI55-lLmpwZy5qcGVnIl1d.jpeg?sha=62739b1f7d97e7c3","dict_image_tablet_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjk5MzQyOTEwXzk2MHg1MF_mnIPlk6HnmbvlhaXpoIjnn6UuanBnLmpwZWciXV0.jpeg?sha=57f91cf0b1f4c9a6","dict_image_mobile_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjk5MzQyOTE5XzgwMHg1Ml_mnIPlk6HnmbvlhaXpoIjnn6UuanBnLmpwZWciXV0.jpeg?sha=69033ca470073319","image_alt":"親æçå®¢æ¶æ¨å¥½ï¼ç±æ¼æå¡ç³»çµ±åç´ï¼è¥æ¨ä¹åæ¾ç³è«æå¡ï¼è«æ¨æ¼ç¬¬ä¸æ¬¡ç»å
¥æ¤ç¶²ç«ä½¿ç¨ãå¿è¨å¯ç¢¼ ãåè½ï¼é²è¡å¯ç¢¼è¨å®ã","dict_content":"","text_size":"","text_color":"","bg_color":"","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":"
546","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_text_align":"center"}); 55 </script>
55 56 57 58 59 60 61 62 63 64
64<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","url":"https://www.ayufoods.com","logo":"https://cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTAzNTg3XzMxNXgxMDAucG5nLnBuZyJdXQ.png?sha=43072cdcb82ce596"}</script>
64<script type="application/ld+json">{"@context":"https://schema.org/","@type":"WebSite","name":"ayufoods","url":"https://www.ayufoods.com","potentialAction":{"@type":"SearchAction","target":"www.ayufoods.com/search?q={search_term_string}","query-input":"required name=search_term_string"}}</script>
64 65 66 67 68 <!-- for vendor --> 69 <!-- cyb_snippet _bootstrap start --> 70 71<!-- cyb_snippet _bootstrap end --> 72 <link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/vendor-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' /> 73 74 <!-- common css rulesets --> 75 <link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/common-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' /> 76 77 <!-- for navbar --> 78 <link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/navbar-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' /> 79 80 <!-- for footer --> 81 <link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/footer-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' /> 82 83 <!-- theme assets --> 84 <link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/main-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' /> 85 86 <!-- for vendor --> 87
87<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/vendor-4a1e7dfec7e41476.js' type='text/javascript'></script>
87 88 89
89<script> 90 window.sci = "eyJzaG9wX2lkIjoyNDYwNiwic2hvcF9wbGFuIjoiYWR2YW5jZSIsImRpbV9h\nZmZpbGlhdGUiOm51bGwsImN1c3RvbWVyX2lkIjpudWxsLCJjdXN0b21lcl9u\nYW1lIjpudWxsLCJzaG9wX25hbWUiOiJheXVmb29kcyIsInNoYXJlX2F0dHJp\nYnV0aW9uX2VuYWJsZWQiOnRydWV9\n"; 91 </script>
91 92 93 94<meta name="csrf-param" content="authenticity_token" /> 95<meta name="csrf-token" content="73SRUuNeN7MDB0veM7FyVCQjqA8P-rgDQHnz9dH1dnGEaftHWqI2hEzsBFhmhdSw4Zw8883N94zxWDY5T2wzxg" />
96<script>(function () { 97 window.gaConfigurations = {"useProductIdInProductEvents":false}; 98})(); 99</script>
vendor: 1 bytes, line 99
99
100<script>(function () { 101 window.CYBERBIZ_PageContext = {"page_type":"home"}; 102})(); 103</script>
103 104<link href="//cdn1-next.cybassets.com/frontend/shop/quark-4a1e7dfec7e41476.css" rel="stylesheet" type="text/css" media="all" /> 105
105<script> 106 window.shopScriptHelper = { 107 i18nLocale: "zh-TW", 108 i18nLocaleDefault: "zh-TW", 109 availableCurrencies: [], 110 defaultCurrency: "TWD", 111 currenciesInfo: [{"html_unit":"NT${{amount_no_decimals}}","name":"æ°å°å¹£ (TWD)","html":"NT${{amount_no_decimals}}","unit":"","trailing_zeros":false,"decimal_precision":0,"money_format":"%u%n","format":"NT${{amount_no_decimals}}","email_unit":"NT${{amount_no_decimals}}","code":"TWD","symbol":"NT$","email":"NT${{amount_no_decimals}}"}], 112 vueOverrideTranslations: {"zh-TW":{"vue":{}}}, 113 hasI18nInContextEditing: false, 114 shopMultipleCurrenciesCheckout: false, 115 hasLocalizedShopPriceFormat: true, 116 } 117 </script>
117 118 119 120
120<script 121 src="//cdn1-next.cybassets.com/frontend/shop/tolgeeIntegration-4a1e7dfec7e41476.js"> 122 </script>
122 123
123<script defer> 124 /* 125 * Enable in-context translation for Liquid part on the page. 126 * This must be executed last to prevent conflicts with other Vue apps. 127 * So put it to `onload`, which will be executed after DOM ready's app mount 128 */ 129 window.onload = function() { 130 if ( 131 window.shopScriptHelper && 132 window.shopScriptHelper.hasI18nInContextEditing 133 ) { 134 window.initTolgeeForLiquid() 135 } 136 } 137 </script>
137 138
139<script> var google_con_event_labels = []</script>
vendor: 1 bytes, line 139
139
140<script src="//cdn1-next.cybassets.com/frontend/shop/pageEventHandler-4a1e7dfec7e41476.js"></script>
vendor: 1 bytes, line 140
140
141<script src="//cdn1-next.cybassets.com/frontend/shop/globalAnalysis-e4c650eb0b.js"></script>
141 142
142<script> 143 window.c12t = {"customer_id":null}; 144 </script>
144 145 146 <meta name="request-id" content="85CAC54E9721A5D6E270291FB7DAB1AC"/> 147 148<link rel="canonical" href="https://www.ayufoods.com/">
149<script src="//cdn1-next.cybassets.com/frontend/shop/carousel-4a1e7dfec7e41476.js"></script>
149 150
150<script> 151 window.parent.postMessage({ type: 'previewShopInit', currentUrl: window.location.href }, '*'); 152 </script>
152 153
154<script src="//cdn1-next.cybassets.com/frontend/appStoreSDK/main.2798231628aa7fab87a9.js"></script>
vendor: 1 bytes, line 154
154
155<script>window.CYBERBIZ_AppScriptSettings = {"shop_add_ons":"W3sidmVuZG9yX3R5cGUiOiJDWUJFUkJJWiBHb29nbGUgQW5hbHl0aWNzIDQi\nLCJhcHBfaWQiOiJRVWo1WnFvZUlPUjlaM2JaS2trMG44N3l5a0FpOWU0NURE\naDJ0YlFnaUJBIiwic2V0dGluZ3MiOnsiZ3RhZ19pZCI6IkctRjM3SjBNWTI4\nTiwgRy00QjdSSzdGSFdIIn19LHsidmVuZG9yX3R5cGUiOiJEaWdpdGFsIElu\ndGVsbGlnZW5jZSBUcmFja2VyIiwiYXBwX2lkIjoiMWI1MGE4NmRjMmQxNDE4\nMzg4ZmRlZGY3YTBkNDM5YWUiLCJzZXR0aW5ncyI6e319XQ==\n"} 156</script>
vendor: 1 bytes, line 156
156
157<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/9d6f4550aad572e9f70abb70ae5a6552482cf617ea5e4d5a32ed4ebbb5d60d54.js"></script>
vendor: 1 bytes, line 157
157
158<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/35cd1f36a4a855bacbaa53900f8e17b376d4cab44c73812eef261aef6435163d.js"></script>
vendor: 1 bytes, line 158
158
159<script>window.CYBERBIZ.initializeSDK.initialize();</script>
vendor: 1 bytes, line 159
159
160<script src="//cdn1-next.cybassets.com/frontend/shop/setAffliateCookie-4a1e7dfec7e41476.js"></script>
vendor: 1 bytes, line 160
160
161<script src="//cdn1-next.cybassets.com/assets/url-share-attribution-087b8170482449a1d92fbb0c92f9ce3ef38a84f35c52016ed831bd3efd8eed8b.js"></script>
161 162 163 164 165 166 167 168 <style id="color_settings"> 169 :root { 170 171 --button: #000000; 172 173 174 175 --button_text: #FFFFFF; 176 177 178 179 --accent: #2B2B6E; 180 181 182 183 --heading: #565656; 184 185 186 187 --text: #9A9EA2; 188 189 190 191 --price: #C39D6F; 192 193 194 195 --discount_price: #C39D6F; 196 197 198 199 --theme_bg: #FFFFFF; 200 201 202 203 --nav_logo_bg: #FFFFFF; 204 205 206 207 --nav_menu_bg: #FFFFFF; 208 209 210 211 --nav_menu_text: #565656; 212 213 214 215 --nav_menu_icon: #565656; 216 217 218 219 --footer_bg: #000000; 220 221 222 223 --footer_text: #FFFFFF; 224 225 226 227 --checkout_button: #000000; 228 229 230 231 --checkout_accent: #2b2b6e; 232 233 234 235 --product_border: #E2E2E2; 236 237 238 239 --tips_text: #0C5460; 240 241 242 243 244 245 } 246</style> 247 248 249 250 251 252 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 74 bytes, lines 252-253
252 253 <script async src="https://www.googletagmanager.com/gtag/js?id=
253G-F37J0MY28N
vendor: 22 bytes, lines 253-254
253"></script> 254
254<script> 255 window.dataLayer = window.dataLayer || []; 256 function gtag(){dataLayer.push(arguments);} 257 gtag('js', new Date()); 258 259 260 </script>
260 261
261<script> 262 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 263 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 264 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 265 })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 266 267 ga('create', '', 'auto', {'name': 'cyberbiz'}); 268 ga('cyberbiz.require', 'displayfeatures'); 269 ga('cyberbiz.set', 'dimension1', '24606'); 270 ga('cyberbiz.require', 'ec'); 271 ga('cyberbiz.send', 'pageview'); 272 </script>
272 273 </head> 274 275 <body style="display: flex; flex-direction: column;">
vendor: 74 bytes, lines 275-277
275 276 <noscript><iframe 277 src="//www.googletagmanager.com/ns.html?id=
277GTM-TXD9LVJ
vendor: 117 bytes, lines 277-283
277" 278 height="0" 279 width="0" 280 style="display:none;visibility:hidden"> 281 </iframe></noscript> 282 283
283<!-- Navigation --> 284 <!-- cyb_snippet liquid_helper start -->
285<script> 286 function getDiscountPriceName() { 287 return "false" === "true" ? "" : ""; 288 } 289 290 function getDiscountPriceSuggestionName() { 291 return "false" === "true" ? "" : ""; 292 } 293 294 document.addEventListener('DOMContentLoaded', function() { 295 const languageHandle = Cookies.get("language"); 296 const defaultLanguage = {"handle":"zh-TW","title":"ç¹é«ä¸æ","currency_code":"TWD"}; 297 const languages = []; 298 const currency = window.shopScriptHelper.defaultCurrency; 299 const currencies = window.shopScriptHelper.currenciesInfo; 300 window.liquidHelper = { 301 shopInternational: false, 302 defaultLanguage: defaultLanguage, 303 language: languages.find(function(l) { 304 return l.handle === languageHandle; 305 }) || defaultLanguage, 306 shopMultipleCurrenciesCheckout: false, 307 shopMultipleCurrencies: false, 308 defaultCurrencyFormat: "NT${{amount_no_decimals}}", 309 defaultCurrency: currency, 310 getCurrency: function() { 311 const currencyValue = Cookies.get("currencyValue") || currency; 312 return currencies.find(function(c) { return c.code === currencyValue; } 313 )}, 314 getDefaultCurrency: function() { return currencies.find(function(c) { 315 return c.code === currency; 316 })}, 317 getAvailableCurrencies: function() { return currencies.map(c => c.code) },
318 getCurrencyFormatInfo: function(currency) { 319 const currencyInfo = currencies.find(c => c.code === currency) 320 return _.pick(currencyInfo, [ 321 'decimal_precision', 322 'symbol', 323 'money_format', 324 'unit', 325 'trailing_zeros', 326 'html_unit', 327 'code', 328 ]); 329 }, 330 cartQuantityLimit: (function() { 331 const limit = Number("0" || undefined); 332 return limit <= 0 || isNaN(limit) ? Number.POSITIVE_INFINITY : limit; 333 })(), 334 isFirstVariantSelected: false , 335 isImageColorsUsed: false , 336 isEmptyClickable: true , 337 hasAddBuyProduct: '' !== "" ? true : false, 338 hasPriceWithDiscountPlugin: 'false' ? true : false, 339 conversionBonus: 1, 340 hasLocalizedShopPriceFormat: true, 341 hasCustomerCartPlugin: true, 342 isCartEnabled: true, 343 cdnHost: '//cdn1-next.cybassets.com', 344 hasShopCustomPasswordRulePlugin: false, 345 hasDisableProductQuantityValidation: false, 346 hasBreadcrumbReferrerEnabled: false, 347 }; 348 }); 349</script>
349 350 351<!-- cyb_snippet liquid_helper end --> 352
353<script src='//cdn1-next.cybassets.com/frontend/shop/navbarSection-4a1e7dfec7e41476.js' type='text/javascript'></script>
353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370<style> 371 372 #navbar { 373 --navbar-pc-title-scale: 0.9; 374 --navbar-pc-body-scale: 1.0; 375 --navbar-mobile-title-scale: 0.9; 376 --navbar-mobile-body-scale: 1.0; 377 } 378 379 380 381 382 383</style> 384 385 386 <span id="navbar" class="drawer drawer--left font-size-setting-enabled"> 387 <header id="header" class="qk-w--100vw qk-pos--fixed qk-t--0 qk-l--0"> 388 389 390 391 <div id="announcement-bar"></div> 392 393 394 395 396 <div class="computer_nav qk-hidden--mobile "> 397 <div class="header_logo qk-bg--nav_logo_bg"> 398 <div class="qk-pos--rel"> 399 <div class="qk-text--center"> 400 <!-- logo start --> 401 402 <nav class="logo qk-display--il_bk"> 403 <a href="/" class="qk-w--100"> 404 <img 405 src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTAzNTg3XzMxNXgxMDAucG5nLnBuZyJdXQ.png?sha=43072cdcb82ce596" 406 class="qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--pc_logo qk-hidden--mobile" 407 style="width: auto; height: 52px;" 408 alt="é¿çè´ç²©" 409 height="52" 410 width="auto" 411 > 412 </a> 413 </nav> 414 415 <!-- logo end --> 416 <!-- tool-nav start --> 417 418 <!-- cyb_snippet tool_nav start --> 419 420 421 422 423 424 425<nav class="tool-nav qk-pos--rel qk-float--r qk-display--flex"> 426 <ul class="link_shelf_top qk-display--flex qk-flex--row qk-justify--end qk-align--center qk-pos--abs qk-r--0"> 427 428 429 <!-- member --> 430 431 <li class="customer_account qk-pos--rel qk-pd--05"> 432 <div class="dropdown qk-pos--static"> 433 <div class="qk-cursor--pointer" data-toggle="dropdown"> 434 <div data-icon-type="custom_icon_type_account"></div> 435 <span class="text"></span> 436 </div> 437 <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"> 438 <ul id="customer-logined-menu" style="display: none"> 439 <li> 440 <div class="qk-fs--body qk-text--heading"> 441 <p class="customer-name qk-whitespace-break-spaces"></p> 442 <p>æ¨å¥½ï¼</p> 443 </div> 444 </li> 445 </ul> 446 <ul id="customer-not-login-menu"> 447 <li class="button qk-text--center"> 448 <a href="/account/login" class="btn-login qk-btn qk-btn--lg qk-btn--primary qk-w--100">æå¡ç»å ¥</a> 449 </li> 450 <li class="button qk-text--center"> 451 <a href="/account/signup" class="btn-orders qk-btn qk-btn--lg qk-btn--secondary qk-w--100 qk-bg--transparent">è¨»åæ°æå¡</a> 452 </li> 453 </ul> 454 <span class="menu-bd qk-bd_t--default qk-bd--product_border"></span> 455 <ul class="member-menu qk-bd_t--default qk-bd--product_border"> 456 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg"> 457 <a href="/account/index" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">æç帳æ¶</a> 458 </li> 459 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg"> 460 <a href="/account/orders" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">è¨å®æ¥è©¢</a> 461 </li> 462 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg"> 463 <a href="/account/coupons" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">å°å±¬åªæ å¸</a> 464 </li> 465 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg"> 466 <a href="/account/tracking_items" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">æ¶èæ¸ å®</a> 467 </li> 468 <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"> 469 <a href="/account/logout" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">æå¡ç»åº</a> 470 </li> 471 </ul> 472 </div> 473 </div> 474 </li> 475 476 <!-- for money symbol --> 477 <div id="money-symbol" data-money-symbol="NT${{amount_no_decimals}}" hidden></div> 478 <!-- cart --> 479 480 <li class="cart qk-pos--rel qk-pd--05"> 481 <!--é»è ¦ççè³¼ç©è»é¸å®--> 482 <div class="dropdown qk-pos--static"> 483 <div data-toggle="dropdown" class="shopcart qk-cursor--pointer" > 484 <div data-icon-type="custom_icon_type_cart"></div>
485 <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> 486 <span class="global-cart-loading"></span> 487 </div> 488 <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"> 489 <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> 490 <p class="cart_empty qk-fs--body qk-text--heading qk-text--center">ç®åçè³¼ç©è»æ¯ç©ºçï¼</p> 491 <ul> 492 <li class="button qk-text--center"> 493 <a class="btn-checkout qk-btn qk-btn--lg qk-btn--primary qk-w--100" href="/cart" style="display: none">ç«å³è³¼è²·</a> 494 <a class="btn-tracking qk-btn qk-btn--lg qk-btn--secondary qk-w--100 qk-bg--transparent" href="/account/tracking_items">å徿¶èæ¸ å®</a> 495 </li> 496 </ul> 497 </div> 498 </div> 499 </li> 500 501 <!-- search --> 502 503 <li class="search qk-pos--rel qk-pd--05" id="search-icon"> 504 <div class="dropdown qk-pos--static"> 505 <div class="qk-cursor--pointer" data-toggle="dropdown"> 506 <div data-icon-type="custom_icon_type_search"></div> 507 </div> 508 <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"> 509 <div class="search-area qk-display--flex qk-flex--row qk-justify--start qk-align--center qk-vert--mid"> 510 <form action="/search" class="form-inline qk-search_form qk-display--flex qk-justfify--between qk-align--center qk-flex--1"> 511 <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="" /> 512 <button class="search-btn qk-btn qk-btn--lg qk-btn--primary qk-pd--0" type="submit">æå°</button> 513 </form> 514 </div> 515 </div> 516 </div> 517 </li> 518 519 <!-- express delivery --> 520 521 </ul> 522</nav> 523 524<!-- cyb_snippet tool_nav end --> 525 526 <!-- tool-nav end --> 527 </div> 528 </div> 529 </div> 530 531 <div class="header_nav qk-bg--nav_menu_bg"> 532 <div class="qk-pd_x--15"> 533 <div class="qk-pos--relative center"> 534 <!-- main-nav start --> 535 <nav class="main_nav qk-display--init"> 536 <!-- cyb_snippet _main_nav_skeleton start --><ul 537 class="main_nav_skeleton link_shelf_top qk-display--flex qk-flex--row qk-flex--wrap qk-justify--center qk-align--center qk-body" 538 style="justify-content: center; visibility: hidden;" 539 aria-hidden="true" 540 ><span> 541 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/pages/éæ¼é¿ç-20230914160358" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">éæ¼æå</a></li> 542 </span><span> 543 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/è´ç²©é¡" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">è´ç²©é¡</a></li> 544 </span><span> 545 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/æµ·æ´é¢¨å³è´ç²©" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">æµ·æ´é¢¨å³è´ç²©</a></li> 546 </span><span> 547 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/é ¥çé¡" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">é ¥çé¡</a></li> 548 </span><span> 549 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/éº»è±æ²é¡" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">麻è±é¡</a></li> 550 </span><span> 551 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/禮ç" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">禮ç</a></li> 552 </span><span> 553 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="https://drive.google.com/file/d/1fQTOqI428RYM0eI3Z-JfIaWMV9y7bg8z/view?usp=sharing" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">è¨è³¼å®ä¸è¼</a></li> 554 </span></ul><!-- cyb_snippet _main_nav_skeleton end --> 555 </nav>
556 <!-- main-nav end --> 557 </div> 558 </div> 559 </div> 560 561 </div> 562 563 <div class="qk-hidden--pc "> 564 <!-- mobile-nav start --> 565 <nav class="mobile-nav qk-bg--nav_logo_bg"> 566 <ul class="qk-display--flex qk-flex--row qk-justify--between qk-align--center qk-pd_x--05 qk-pd_y--0"> 567 <!-- menu --> 568 569 <li class="sidebar-menu-icon drawer-toggle qk-text--center qk-pd_x--05 qk-pd_y--0 qk-display--flex qk-align--center"> 570 <div data-icon-type="custom_icon_type_menu"></div> 571 </li> 572 573 <!-- logo --> 574 575 <li class="logo qk-mg_r--auto qk-pd_x--05 qk-pd_y--0"> 576 577 <a href="/" class="qk-display--il_flex qk-align--center qk-h--100 qk-hidden--phone"> 578 <img 579 src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTAzNTg3XzMxNXgxMDAucG5nLnBuZyJdXQ.png?sha=43072cdcb82ce596" 580 height="25" 581 width="auto" 582 alt="é¿çè´ç²©" 583 > 584 </a> 585 586 587 <a href="/" class="qk-display--il_flex qk-align--center qk-h--100 qk-hidden--tablet"> 588 <img 589 src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTAzNTg3XzMxNXgxMDAucG5nLnBuZyJdXQ.png?sha=43072cdcb82ce596" 590 height="25" 591 width="auto" 592 alt="é¿çè´ç²©" 593 > 594 </a> 595 596 </li> 597 598 599 <!-- search --> 600 601 <li class="search qk-text--center qk-pd_x--05 qk-pd_y--0 qk-display--flex qk-align--center "> 602 <div class="dropdown qk-pos--static qk-text--center"> 603 <div class="qk-cursor--pointer" data-toggle="dropdown"> 604 <div data-icon-type="custom_icon_type_search"></div> 605 </div> 606 <div 607 class="qk-dropdown_menu dropdown-menu qk-w--100vw qk-bg--theme_bg qk-bd--default qk-bd--product_border qk-mg--0" 608 role="menu" 609 > 610 <div class="search-area qk-display--flex qk-flex--row qk-justify--start qk-align--center qk-sp_bt--5 qk-w--100"> 611 <form action="/search" class="form-inline qk-display--flex qk-justfify--center qk-flex--1"> 612 <div class="form-inline qk-search_form qk-display--flex qk-justfify--center qk-align--center qk-flex--1"> 613 <input 614 class="form-control qk-flex--1 qk-inputbox qk-inputbox--lg qk-bg--transparent qk-text--heading" 615 type="search" 616 placeholder="æå°" 617 aria-label="Search" 618 name="q" 619 value="" 620 > 621 <button class="search-btn qk-btn qk-btn--lg qk-btn--primary qk-pd--0" type="submit"> 622 æå° 623 </button> 624 </div> 625 </form> 626 </div> 627 </div> 628 </div> 629 </li> 630 631 <!-- express delivery --> 632 633 634 </ul> 635 </nav> 636 <!-- mobile-nav end --> 637 </div> 638 639 </header>
639<script> 640 (function () { 641 var isNavbarTransparent = false; 642 643 function measureHeaderOffset() { 644 var header = document.getElementById('header'); 645 if (!header) return null; 646 647 var headerHeight = header.getBoundingClientRect().height; 648 649 if (isNavbarTransparent && window.matchMedia('(min-width: 992px)').matches) { 650 var computerNav = document.querySelector('.computer_nav'); 651 if (computerNav) { 652 headerHeight -= computerNav.getBoundingClientRect().height; 653 } 654 } 655 656 var floatFilter = document.getElementById('float-filter'); 657 var floatFilterHeight = floatFilter 658 ? floatFilter.getBoundingClientRect().height 659 : 0; 660 661 return headerHeight - floatFilterHeight; 662 } 663 664 window.measureHeaderOffset = measureHeaderOffset; 665 666 var offset = measureHeaderOffset(); 667 if (offset !== null) { 668 document.body.style.paddingTop = offset + 'px'; 669 } 670 })(); 671 </script>
671 672 673 <!-- Sidebar --> 674 <nav class="drawer-nav drawer-nav_width qk-bg--nav_menu_bg " role="navigation"> 675 <div class="drawer-menu"> 676 <!-- cyb_snippet side_menu start --> 677 678 679<ul id="index_sidebar_shelf_top" class="sidebar qk-pd_b--1"> 680 681 <li class="logo qk-pos--rel qk-bg--nav_logo_bg qk-pd_x--1 qk-pd_y--05"> 682 <a href="/" class="qk-pd--0"> 683 <img src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTAzNTg3XzMxNXgxMDAucG5nLnBuZyJdXQ.png?sha=43072cdcb82ce596" height="32" width="auto" alt="logo"> 684 </a> 685 <button class="drawer-toggle qk-pos--abs qk-bg--transparent qk-pd--0"></button> 686 </li> 687 688 689 690 691 692 <!-- cyb_snippet components/side_menu/menu start --> 693 694 <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> 695 696 697 698 699 700 <li class="qk-pos--rel qk-pd--0"> 701 <button class="linklist bt-toggle qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-text--nav_menu_text qk-bg--nav_menu_bg qk-pos--rel" data-toggle="collapse" data-target=".collapse_index_sidebar_1" aria-expanded=" true "> 702 703 <a class="qk-text--nav_menu_text" href="/pages/éæ¼é¿ç-20230914160358"> éæ¼æå </a> 704 705 </button> 706 <ul id="index_sidebar_shelf_second_1" class="collapse_index_sidebar_1 collapse shelf_second show qk-pd--0"> 707 708 709 710 711 <li class="qk-pos--rel qk-pd--0"> 712 713 <a class="qk-fw--500 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"> 714 ææ°æ¶æ¯ 715 </a> 716 717 </li> 718 719 720 721 722 723 <li class="qk-pos--rel qk-pd--0"> 724 725 <a class="qk-fw--500 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/è£½ä½æµç¨"> 726 è£½ä½æµç¨ 727 </a> 728 729 </li> 730 731 732 733 734 735 <li class="qk-pos--rel qk-pd--0"> 736 737 <a class="qk-fw--500 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/ï½ï¼ï½"> 738 åªé«å ±å° 739 </a> 740 741 </li> 742 743 744 745 746 747 <li class="qk-pos--rel qk-pd--0"> 748 749 <a class="qk-fw--500 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"> 750 交éè³è¨ 751 </a> 752 753 </li> 754 755 756 </ul> 757 </li> 758 759 760 761 762 763 <li class="qk-pos--rel qk-pd--0"> 764 765 <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="/collections/è´ç²©é¡">è´ç²©é¡</a> 766 767 </li> 768 769 770 771 772 773 <li class="qk-pos--rel qk-pd--0"> 774 775 <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="/collections/æµ·æ´é¢¨å³è´ç²©">æµ·æ´é¢¨å³è´ç²©</a> 776 777 </li> 778 779 780 781 782 783 <li class="qk-pos--rel qk-pd--0"> 784 785 <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="/collections/é ¥çé¡">é ¥çé¡</a> 786 787 </li> 788 789 790 791 792 793 <li class="qk-pos--rel qk-pd--0"> 794 795 <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="/collections/éº»è±æ²é¡">麻è±é¡</a> 796 797 </li> 798 799 800 801 802 803 <li class="qk-pos--rel qk-pd--0"> 804 805 <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="/collections/禮ç">禮ç</a> 806 807 </li> 808 809 810 811 812 813 <li class="qk-pos--rel qk-pd--0"> 814 815 <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="https://drive.google.com/file/d/1fQTOqI428RYM0eI3Z-JfIaWMV9y7bg8z/view?usp=sharing">è¨è³¼å®ä¸è¼</a> 816 817 </li> 818 819 820
821<script> 822 $('button a').on('click', function(e) {e.stopPropagation()}); 823</script>
823 824 825<!-- cyb_snippet components/side_menu/menu end --> 826 827 828 829 830 <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> 831 <li class="qk-pos--rel qk-pd--0"> 832 <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none"> 833 <a href="/account/index" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">æç帳æ¶</a> 834 </div> 835 </li> 836 <li class="qk-pos--rel qk-pd--0"> 837 <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none"> 838 <a href="/account/orders" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">è¨å®æ¥è©¢</a> 839 </div> 840 </li> 841 <li class="qk-pos--rel qk-pd--0"> 842 <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none"> 843 <a href="/account/logout" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">æå¡ç»åº</a> 844 </div> 845 </li> 846 <li class="qk-pos--rel qk-pd--0"> 847 <a href="/account/login"> 848 <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 "> 849 <span class="qk-text--nav_menu_bg qk-fw--500 qk-fs--body"> 850 æå¡ç»å ¥ 851 </span> 852 </div> 853 </a> 854 </li> 855 <li class="qk-pos--rel qk-pd--0"> 856 <a href="/account/signup"> 857 <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"> 858 <span class="qk-text--nav_menu_text qk-fs--body qk-fw--500"> 859 è¨»åæ°æå¡ 860 </span> 861 </div> 862 </a> 863 </li> 864 865 866 867 868 869</ul> 870 871<link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/sidebar-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' /> 872
873<script> 874 $(document).ready(function(){ 875 // å´éé¸å® 876 if ($('.drawer').length){ 877 $('.drawer').drawer(); 878 $('.bt-toggle').click(function(){ 879 setTimeout(function(){ 880 $('.drawer')[0].iScroll.refresh() 881 },500) 882 }) 883 } 884 }); 885</script>
885 886 887 888<!-- cyb_snippet side_menu end --> 889 890 </div> 891 </nav> 892 <!-- Bottombar --> 893 894 <div 895 id="mobile-bottom-bar" 896 class="qk-display--flex qk-justify--around qk-bg--nav_logo_bg qk-w--100vw qk-pos--fixed qk-b--0 qk-hidden--pc" 897 > 898 <!-- home --> 899 <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1"> 900 <a id="home-nav-icon" href="/"> 901 <div data-icon-type="custom_icon_type_home"></div> 902 </a> 903 </div> 904 <!-- tracking items --> 905 <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1"> 906 <a href="/account/tracking_items"> 907 <div data-icon-type="custom_icon_type_tracking_items" c></div> 908 </a> 909 </div> 910 <!-- cart --> 911 912 <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1"> 913 <a 914 href="/cart" 915 class="qk-display--il_flex qk-flex--row qk-justify--center qk-align--center qk-vert--mid qk-pos--rel" 916 > 917 <div data-icon-type="custom_icon_type_cart"></div> 918 <span 919 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" 920 style="display: none;" 921 >0</span 922 > 923 </a> 924 </div> 925 926 <!-- member --> 927 928 <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1"> 929 <a id="customer-phone-nav-icon" href="/account/login"> 930 <div data-icon-type="custom_icon_type_account"></div> 931 </a> 932 </div> 933 934 </div> 935 936 937 </span> 938 939<div id="index-popular-tags"></div> 940 941<style id="timer_color"> 942 :root { 943 944 --timer_text: #c39d6f; 945 946 947 948 --timer_bg: #2b2b6e; 949 950 } 951</style> 952
953<script> 954 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":"åé¡å
954
§å®¹","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天å
è²»éè³
954æï¼å«ä¾åæ¥ï¼ãéæè²¨æè«ä¿æåå
è£ååç宿´ï¼å
å«è³¼è²·ååï¼éä»¶ï¼è´åçï¼ã\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":"è¬è¬æ¨çå¯
954¶è²´æè¦","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":"è«æª¢æ¥éè¡å¸³èé·åº¦"} 955 $(document).ready(function(){ 956 if(window.location.pathname != '' && window.location.pathname != '/' ){ 957 document.getElementById('index-popular-tags').style.display = 'none' 958 } 959 // åæ¸è¨æ 960 961 962 function adjustContentTop() { 963 const offset = window.measureHeaderOffset(); 964 if (offset === null) return; 965 $("body").css({ "padding-top": offset + "px" }); 966 } 967 968 window.adjustContentTop = adjustContentTop; 969 970 // navbarè¨å®éæ 971 972 973 // Call it first once DOM is ready to prevent CLS 974 adjustContentTop(); 975 976 // å»¶é²åå§åï¼çå¾ app banner åå§å宿 977 $(window).on("resize", adjustContentTop); 978 979 // ä½¿ç¨ setTimeout ç¢ºä¿ banner çæ å·²ç¶ç¢ºå® 980 $(window).on("load", function() { 981 setTimeout(function() { 982 adjustContentTop(); 983 }, 200); // 給 banner è¶³å¤ æéåå§å 984 }); 985 986 $('img.header_banner').on('load', adjustContentTop); 987 988 window.renderNavbarSection('.main_nav', { 989 navbarCollections: null, 990 navbarItems: [{"id":1108049,"title":"éæ¼æå","url":"/pages/éæ¼é¿ç-20230914160358","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":[{"id":1108052,"title":"ææ°æ¶æ¯","url":"/blogs/news","item_type":"blog","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1108053,"title":"è£½ä½æµç¨","url":"/blogs/è£½ä½æµç¨","item_type":"blog","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1108054,"title":"åªé«å ±å°","url":"/pages/ï½ï¼ï½","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1108055,"title":"交éè³è¨","url":"/pages/about-us","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":null}]},{"id":1028817,"title":"è´ç²©é¡","url":"/collections/è´ç²©é¡","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1028818,"title":"æµ·æ´é¢¨å³è´ç²©","url":"/collections/æµ·æ´é¢¨å³è´ç²©","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1028819,"title":"é ¥çé¡","url":"/collections/é ¥çé¡","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1028820,"title":"麻è±é¡","url":"/collections/éº»è±æ²é¡","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1028821,"title":"禮ç","url":"/collections/禮ç","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1151042,"title":"è¨è³¼å®ä¸è¼","url":"https://drive.google.com/file/d/1fQTOqI428RYM0eI3Z-JfIaWMV9y7bg8z/view?usp=sharing","item_type":"http","subtitle":null,"icon_image_url":null,"menuItems":null}], 991 settings: { 992 menuDisplayStyle: "three_dimension_menu", 993 pcLogoImgUrl: "//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTAzNTg3XzMxNXgxMDAucG5nLnBuZyJdXQ.png?sha=43072cdcb82ce596", 994 mobileLogoImgUrl: "//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTAzNTg3XzMxNXgxMDAucG5nLnBuZyJdXQ.png?sha=43072cdcb82ce596", 995 navbarDisplayStyle: "displayDefault", 996 } 997 } 998 ); 999 1000 1001 // for link menu 1002 const linkMenuElement = document.querySelector('.link-nav'); 1003 const data = [] 1004 data.forEach((item) => { 1005 const wrapper = document.createElement('a'); 1006 const link = document.createElement('ul'); 1007 1008 wrapper.href = item.url; 1009 link.textContent = item.title; 1010 link.classList.add('link-item'); 1011 1012 wrapper.appendChild(link); 1013 linkMenuElement.appendChild(wrapper); 1014 }); 1015 1016 // for safe-area space on iOS devices 1017 const userAgent = navigator.userAgent; 1018 const isIOS = /iPad|iPhone|iPod/.test(userAgent) && !window.MSStream; 1019 const isLiff = /Line\/[\d.]+/i.test(userAgent); 1020 const $mobileBottomBar = $('#mobile-bottom-bar'); 1021 1022 if ($mobileBottomBar.length && isIOS && isLiff) { 1023 $mobileBottomBar.addClass('is-ios-liff'); 1024 } 1025 }); 1026 document.addEventListener('DOMContentLoaded', function() { 1027 window.getCartAmount = function() { 1028 return parseInt($('.global-cart-count').html()); 1029 }; 1030 }); 1031</script>
1031 1032
1033<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/navbar-4a1e7dfec7e41476.js' type='text/javascript'></script>
vendor: 1 bytes, line 1033
1033
1034<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/currencies-4a1e7dfec7e41476.js' type='text/javascript'></script>
1034 1035<!-- cyb_snippet i18n_modal start --> 1036 1037 1038<!-- cyb_snippet i18n_modal end --> 1039<!-- cyb_snippet _load_fonts start -->
1040<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/load_fonts-4a1e7dfec7e41476.js' type='text/javascript'></script>
vendor: 1 bytes, line 1040
1040
1041<script> 1042 document.addEventListener('DOMContentLoaded', function() { 1043 window.loadFontSetting("{'ja':{'value':'Noto Sans JP'},'zh-TW':{'value':'Noto Sans TC'},'en':{'value':'Noto Sans TC'},'zh-CN':{'value':'Noto Sans TC'}}") 1044 }) 1045</script>
1045 1046 1047<!-- cyb_snippet _load_fonts end --> 1048<!-- cyb_snippet _custom_icon start -->
1049<script src='//cdn1-next.cybassets.com/frontend/shop/navIcon-4a1e7dfec7e41476.js' type='text/javascript'></script>
1049 1050
1051<script> 1052 (function() { 1053 const iconUrlMap = new Map([ 1054 ['custom_icon_type_home', null], 1055 ['custom_icon_type_tracking_items', null], 1056 ['custom_icon_type_account', null], 1057 ['custom_icon_type_cart', null], 1058 ['custom_icon_type_search', null], 1059 ['custom_icon_type_menu', null] 1060 ]); 1061 const elements = document.querySelectorAll('[data-icon-type]'); 1062 elements.forEach((element, index) => { 1063 const iconAttributes = element.getAttribute('data-icon-type'); 1064 1065 const uniqueId = `icon_${iconAttributes}_${index}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`; 1066 element.id = uniqueId; 1067 window.renderNavCustomIcon(`#${uniqueId}`, { 1068 navIconStyle: "icon_type_default", 1069 customIconUrl: iconUrlMap.get(iconAttributes) || '', 1070 iconAttributes: iconAttributes, 1071 currentTemplate: "index", 1072 }); 1073 }); 1074 })(); 1075</script>
1075 1076 1077<!-- cyb_snippet _custom_icon end --> 1078 1079 1080 1081 1082 1083
1083<script src='//cdn1-next.cybassets.com/frontend/shop/announcementBar-4a1e7dfec7e41476.js' type='text/javascript'></script>
1083 1084 1085 1086 1087 1088 1089
1089<script> 1090 $(document).ready(function() { 1091 window.renderAnnouncementBar('#announcement-bar', { 1092 sectionId: "announcement_bar", 1093 isIndex: true, 1094 }); 1095 }); 1096 </script>
1096 1097 1098 1099 1100 1101 1102 1103 <!-- template --> 1104 <div id="template" style="flex:1 0 auto; background-color: var(--theme_bg);"> 1105 <div class="index"> 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116<link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/_main_slider_custom-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' /> 1117 1118<style> 1119 [id="_main_slider_custom"] { 1120 margin: 0 0px 50px !important; 1121 } 1122 @media (max-width: 576px) { 1123 .main-slider-placeholder { 1124 display: none !important; 1125 } 1126 .swiper-container { 1127 visibility: visible !important; 1128 } 1129 } 1130 @media (max-width: 991px) { 1131 [id="_main_slider_custom"] { 1132 margin: 0 0px 50px !important; 1133 } 1134 } 1135</style> 1136 1137<section id="_main_slider_custom" class="main-slider qk-pos--rel"> 1138 1139 1140 1141 <div 1142 class="swiper swiper-container" 1143 1144 > 1145 <div class="swiper-wrapper qk-align--center"> 1146 1147 1148 1149 <div class="swiper-slide"> 1150 1151 1152 <a 1153 href="/" 1154 class="img-flex qk-align--stretch qk-display--contents" 1155 target="" 1156 rel="" 1157 > 1158 1159 1160 1161 1162 1163 1164 <picture> 1165 1166 <source 1167 media="(max-width: 576px)" 1168 data-srcset="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4MzM5XzQ4MHg3MjBf6Zi_546J5aq95aq9LmpwZy5qcGVnIl1d.jpeg?sha=5b08fa7813d133b0" 1169 alt="" 1170 > 1171 1172 1173 <source 1174 media="(max-width: 992px)" 1175 data-srcset="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4MzM4Xzk2MHg4NzBf6Zi_546J5aq95aq9LmpwZy5qcGVnIl1d.jpeg?sha=e83952fadc965c05" 1176 alt="" 1177 > 1178 1179 <img 1180 id="slider-image" 1181 data-src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4MzI4XzE5MjB4OTAwX-mYv-eOieWqveWqvS5qcGcuanBlZyJdXQ.jpeg?sha=de53b9aeaa3be8c1" 1182 height="auto" 1183 alt="" 1184 class="swiper-lazy" 1185 > 1186 </picture> 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 </a> 1201 1202 1203 <div class="swiper-lazy-preloader"></div> 1204 1205 </div> 1206 1207 <div class="swiper-slide"> 1208 1209 1210 <a 1211 href="/collections/è´ç²©é¡" 1212 class="img-flex qk-align--stretch qk-display--contents" 1213 target="" 1214 rel="" 1215 > 1216 1217 1218 1219 1220 1221 1222 <picture> 1223 1224 <source 1225 media="(max-width: 576px)" 1226 data-srcset="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4MzYzXzQ4MHg3MjBf57ac5ZCILmpwZy5qcGVnIl1d.jpeg?sha=c13c902159c4ea37" 1227 alt="è´ç²©" 1228 > 1229 1230 1231 <source 1232 media="(max-width: 992px)" 1233 data-srcset="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4MzYzXzk2MHg4NzBf57ac5ZCILmpwZy5qcGVnIl1d.jpeg?sha=93c97e87bdcdebe8" 1234 alt="è´ç²©" 1235 > 1236 1237 <img 1238 id="slider-image" 1239 data-src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4MzYzXzE5MjB4OTAwX-e2nOWQiC5qcGcuanBlZyJdXQ.jpeg?sha=34576c24a143f434" 1240 height="auto" 1241 alt="è´ç²©" 1242 class="swiper-lazy" 1243 > 1244 </picture> 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 </a> 1259 1260 1261 <div class="swiper-lazy-preloader"></div> 1262 1263 </div> 1264 1265 <div class="swiper-slide"> 1266 1267 1268 <a 1269 href="/collections/æµ·æ´é¢¨å³è´ç²©" 1270 class="img-flex qk-align--stretch qk-display--contents" 1271 target="" 1272 rel="" 1273 > 1274 1275 1276 1277 1278 1279 1280 <picture> 1281 1282 <source 1283 media="(max-width: 576px)" 1284 data-srcset="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4Mz
1284k1XzkwMHgxMzUwX-a1t-a0i-miqOWRsy5qcGcuanBlZyJdXQ.jpeg?sha=1cc79dae0f847f57" 1285 alt="æµ·æ´é¢¨å³è´ç²©" 1286 > 1287 1288 1289 <source 1290 media="(max-width: 992px)" 1291 data-srcset="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4Mzk1Xzk2MHg4NzBf5rW35rSL6aKo5ZGzLmpwZy5qcGVnIl1d.jpeg?sha=289f785be3f79395" 1292 alt="æµ·æ´é¢¨å³è´ç²©" 1293 > 1294 1295 <img 1296 id="slider-image" 1297 data-src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4Mzk0XzE5MjB4OTAwX-a1t-a0i-miqOWRsy5qcGcuanBlZyJdXQ.jpeg?sha=abc7c81f9992f8ad" 1298 height="auto" 1299 alt="æµ·æ´é¢¨å³è´ç²©" 1300 class="swiper-lazy" 1301 > 1302 </picture> 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 </a> 1317 1318 1319 <div class="swiper-lazy-preloader"></div> 1320 1321 </div> 1322 1323 <div class="swiper-slide"> 1324 1325 <span class="img-flex qk-align--stretch qk-display--contents"> 1326 1327 1328 1329 1330 1331 1332 <picture> 1333 1334 <source 1335 media="(max-width: 576px)" 1336 data-srcset="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4NDE4XzkwMHgxMzUwX-mFpeeJh-mhnl_pmL_njonlqr3lqr0uanBnLmpwZWciXV0.jpeg?sha=ea5feee6636fab69" 1337 alt="" 1338 > 1339 1340 1341 <source 1342 media="(max-width: 992px)" 1343 data-srcset="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4NDE4Xzk2MHg4NzBf6YWl54mH6aGeX-mYv-eOieWqveWqvS5qcGcuanBlZyJdXQ.jpeg?sha=4f22f9c33fefdf54" 1344 alt="" 1345 > 1346 1347 <img 1348 id="slider-image" 1349 data-src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4NDE4XzE5MjB4OTAwX-mFpeeJh-mhnl_pmL_njonlqr3lqr0uanBnLmpwZWciXV0.jpeg?sha=09b4df62921fa56b" 1350 height="auto" 1351 alt="" 1352 class="swiper-lazy" 1353 > 1354 </picture> 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 </span> 1369 1370 1371 <div class="swiper-lazy-preloader"></div> 1372 1373 </div> 1374 1375 <div class="swiper-slide"> 1376 1377 1378 <a 1379 href="/collections/éº»è±æ²é¡" 1380 class="img-flex qk-align--stretch qk-display--contents" 1381 target="" 1382 rel="" 1383 > 1384 1385 1386 1387 1388 1389 1390 <picture> 1391 1392 <source 1393 media="(max-width: 576px)" 1394 data-srcset="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4NDQ4XzQ4MHg3MjBf6bq76IqxLmpwZy5qcGVnIl1d.jpeg?sha=6cf2f1f86844b6bf" 1395 alt="éº»è±æ²é¡" 1396 > 1397 1398 1399 <source 1400 media="(max-width: 992px)" 1401 data-srcset="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4NDQ4Xzk2MHg4NzBf6bq76IqxLmpwZy5qcGVnIl1d.jpeg?sha=a10bf9d34e160f67" 1402 alt="éº»è±æ²é¡" 1403 > 1404 1405 <img 1406 id="slider-image" 1407 data-src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2NzA4NDQ3XzE5MjB4OTAwX-m6u-iKsS5qcGcuanBlZyJdXQ.jpeg?sha=5de125ce9e449698" 1408 height="auto" 1409 alt="éº»è±æ²é¡" 1410 class="swiper-lazy" 1411 > 1412 </picture> 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 </a> 1427 1428 1429 <div class="swiper-lazy-preloader"></div> 1430 1431 </div> 1432 1433 <div class="swiper-slide"> 1434
1435 <span class="img-flex qk-align--stretch qk-display--contents"> 1436 1437 1438 1439 1440 1441 1442 <picture> 1443 1444 <source 1445 media="(max-width: 576px)" 1446 data-srcset="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTI5MDQ4XzQ4MHg3MjAucG5nLnBuZyJdXQ.png?sha=7c2398573930ea1a" 1447 alt="" 1448 > 1449 1450 1451 <source 1452 media="(max-width: 992px)" 1453 data-srcset="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTI5MDQyXzk2MHg4NzAucG5nLnBuZyJdXQ.png?sha=045f8d1bb681b809" 1454 alt="" 1455 > 1456 1457 <img 1458 id="slider-image" 1459 data-src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTI5MDE3XzE5MjB4OTAwLnBuZy5wbmciXV0.png?sha=9c06c0696f646603" 1460 height="auto" 1461 alt="" 1462 class="swiper-lazy" 1463 > 1464 </picture> 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 </span> 1479 1480 1481 <div class="swiper-lazy-preloader"></div> 1482 1483 </div> 1484 1485 </div> 1486 1487 <div 1488 class="qk-swiper_btn qk-swiper_btn--lg qk-swiper_btn--v2 qk-swiper_btn--prev main_slider_custom_prev qk-hidden--mobile" 1489 ></div> 1490 <div 1491 class="qk-swiper_btn qk-swiper_btn--lg qk-swiper_btn--v2 qk-swiper_btn--next main_slider_custom_next qk-hidden--mobile" 1492 ></div> 1493 1494 </div> 1495 1496 <div class="qk-swiper_pg qk-w--100 qk-mg_t--1 qk-text--center main_slider_pagination"></div> 1497 1498</section> 1499
1500<script> 1501 $(document).ready(function(){ 1502 let isDynamicLoading = false; 1503 let settingObj = { 1504 id: '_main_slider_custom', 1505 mobile_img_number: Number('1'), 1506 mobile_img_space: Number('8'), 1507 img_number: Number('1'), 1508 img_space: Number('12'), 1509 swiper_delay: '3', 1510 } 1511 window.mainSlider = function(obj){ 1512 var id = themeHelper.escapeId(obj.id); 1513 var slideCount = $(`#${obj.id} .swiper-slide`).length 1514 var autoLoop = true 1515 if (slideCount <= 1){ 1516 autoLoop = false 1517 } 1518 var mainSlider = new Swiper('#' + id + ' .swiper-container', { 1519 preloadImages: false, 1520 slidesPerView: Number(obj.mobile_img_number), 1521 spaceBetween: Number(obj.mobile_img_space), 1522 breakpoints: { 1523 0:{ 1524 slidesPerView: Number(obj.mobile_img_number), 1525 spaceBetween: Number(obj.mobile_img_space), 1526 }, 1527 991: { 1528 slidesPerView: Number(obj.img_number), 1529 spaceBetween: Number(obj.img_space), 1530 } 1531 }, 1532 // Enable lazy loading 1533 observer: true, 1534 observeParents: true, 1535 autoheight: true, 1536 lazy: { 1537 loadPrevNext: true, 1538 }, 1539 freeMode: { 1540 enabled: true, 1541 sticky: true, 1542 momentum: true, 1543 momentumRatio: 0.4, 1544 momentumVelocityRatio: 0.1, 1545 }, 1546 loop: autoLoop, 1547 autoplay: { delay: obj.swiper_delay * 1000 }, 1548 speed: Number('300.0'), 1549 pagination: { 1550 el: '#' + id + ' .main_slider_pagination', 1551 clickable: true, 1552 }, 1553 navigation: { 1554 nextEl: '#' + id + ' .main_slider_custom_next', 1555 prevEl: '#' + id + ' .main_slider_custom_prev', 1556 }, 1557 on: { 1558 init: function () { 1559 if (isDynamicLoading && !window.matchMedia("(max-width: 576px)").matches) { 1560 document.querySelector('#' + id + ' .main-slider-placeholder').style.display = 'none'; 1561 document.querySelector('#' + id + ' .swiper-container').style.visibility = 'visible'; 1562 } 1563 }, 1564 } 1565 }); 1566 } 1567 if (isDynamicLoading) { 1568 window.DynamicLoading.setupComponent({ 1569 sectionId: "_main_slider_custom", 1570 sectionSettingData: settingObj, 1571 entryName:'mainSlider', 1572 source:'https://cdnjs.cloudflare.com/ajax/libs/Swiper/5.4.5/js/swiper.js', 1573 componentType:'js', 1574 hiddenDom: true 1575 }); 1576 }else{ 1577 mainSlider(settingObj); 1578 } 1579 }) 1580</script>
1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594<link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/_index_4_blocks-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' />
1595<script src='//cdn1-next.cybassets.com/frontend/shop/productDisplay-4a1e7dfec7e41476.js' type='text/javascript'></script>
1595 1596 1597<style> 1598 [id="_index_4_blocks"] { 1599 margin: 0 0px 50px !important; 1600 } 1601 1602 @media (min-width: 992px) { 1603 [id="_index_4_blocks"] .block:not(.last-row) { 1604 margin-bottom: 10px !important; 1605 } 1606 [id="_index_4_blocks"] .block-default-width-margin:not(:first-of-type), 1607 [id="_index_4_blocks"] .block-not-first-margin { 1608 margin-left: 10px !important; 1609 } 1610 } 1611 1612 @media (max-width: 991px) { 1613 [id="_index_4_blocks"] { 1614 margin: 0 0px 50px !important; 1615 } 1616 [id="_index_4_blocks"] > .qk-display--flex.qk-flex--wrap { 1617 gap: 10px; 1618 justify-content: flex-start; 1619 } 1620 [id="_index_4_blocks"] .block { 1621 flex: 0 0 calc((100% - (1 - 1) * 10px) / 1); 1622 } 1623 } 1624 1625 .video-block-loading { 1626 background-color: #eeee; 1627 position: absolute; 1628 top: 0; 1629 bottom: 0; 1630 left: 0; 1631 width: 100%; 1632 height: 100%; 1633 } 1634</style> 1635
1636<script> 1637 1638 $(document).ready(function() { 1639 let isDynamicLoading = false; 1640 if (isDynamicLoading) { 1641 window.DynamicLoading.setupComponent({ 1642 sectionId:'_index_4_blocks', 1643 componentType:'liquid', 1644 }); 1645 } 1646 1647 1648 1649 1650 1651 1652 1653 }) 1654</script>
1654 1655
1656<script> 1657 function buildYoutubeEmbedUrl(url, options) { 1658 const YT_REGEX = /^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=|shorts\/)([^#&?]*).*/; 1659 const match = (url || '').match(YT_REGEX); 1660 const videoId = match && match[2].length === 11 ? match[2] : ''; 1661 1662 if (!videoId) { 1663 return ''; 1664 } 1665 1666 const autoPlay = options && options.autoPlay; 1667 const hideControls = options && options.hideControls; 1668 const loop = options && options.loop; 1669 1670 const searchParams = new URLSearchParams(); 1671 1672 searchParams.set('autoplay', autoPlay ? '1' : '0'); 1673 // è¥èªåææ¾ï¼é è¨éé³ä»¥ç¬¦åç覽å¨éå¶ 1674 searchParams.set('mute', autoPlay ? '1' : '0'); 1675 searchParams.set('playsinline', '1'); 1676 1677 searchParams.set('controls', hideControls ? '0' : '1'); 1678 searchParams.set('rel', '0'); 1679 1680 if (loop) { 1681 searchParams.set('loop', '1'); 1682 searchParams.set('playlist', videoId); 1683 } 1684 1685 return 'https://www.youtube.com/embed/' + videoId + '?' + searchParams.toString(); 1686 } 1687 1688 function parseYtUrlOnLoad(target, url, autoPlay, hideControls, loop) { 1689 const finalUrl = buildYoutubeEmbedUrl(url, { 1690 autoPlay: autoPlay, 1691 hideControls: hideControls, 1692 loop: loop, 1693 }); 1694 1695 if (!finalUrl || target.src === finalUrl) { 1696 return; 1697 } 1698 1699 const handleVideoLoad = function () { 1700 try { 1701 const wrapper = $(target).closest('.embed-responsive')[0]; 1702 if (wrapper) { 1703 // éé loading skeleton 1704 const loading = wrapper.querySelector('.video-block-loading'); 1705 if (loading) { 1706 loading.style.display = 'none'; 1707 } 1708 } 1709 } catch (e) { 1710 console.error('iframe onload èç失æ', e); 1711 } finally { 1712 target.removeEventListener('load', handleVideoLoad); 1713 } 1714 }; 1715 1716 target.addEventListener('load', handleVideoLoad); 1717 1718 target.src = finalUrl; 1719 if (hideControls && autoPlay) { 1720 target.style.pointerEvents = 'none'; 1721 } 1722 1723 // 夿·æ¯ä¸æ¯ YouTube shortsï¼æ±ºå®è¦ä¸è¦å ä¸ .short-youtube class 1724 try { 1725 const isShort = (url || '').indexOf('/shorts/') !== -1; 1726 if (isShort) { 1727 const wrapper = $(target).closest('.embed-responsive')[0]; 1728 if (wrapper) { 1729 wrapper.classList.add('short-youtube'); 1730 } 1731 } 1732 } catch (e) { 1733 console.error('isShort 夿·å¤±æ', e); 1734 } 1735 } 1736 1737 1738 window.addEventListener('load', function () { 1739 const sectionEl = document.getElementById('_index_4_blocks'); 1740 if (!sectionEl) return; 1741 1742 const options = { 1743 threshold: 0.25, 1744 }; 1745 1746 1747 1748 1749 1750 1751 1752 1753 }); 1754</script>
1754 1755 1756<section id="_index_4_blocks" class="index-4-blocks"> 1757 <div class="qk-display--flex qk-flex--wrap"> 1758 1759 1760 1761 1762 <div class="block image mobile-1-col block-default-width-margin last-row" style="width: calc(33.333333333333336% - 6.666666666666667px);"> 1763 1764 <div class="img-card" id="display_index_4_block_1"> 1765 1766 1767 1768 <a href="/blogs/news" class="banner qk-hidden--mobile" target="" rel=""> 1769 <img src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTI5NTYxXzE5MjB4OTIwX-acgOaWsOa2iOaBry5qcGcuanBlZyJdXQ.jpeg?sha=ae80d11c00d329c6" class="qk-w--100" alt=""> 1770 </a> 1771 1772 1773 1774 1775 <a 1776 href="/blogs/news" 1777 class="banner qk-display--bk qk-hidden--phone qk-hidden--pc" 1778 target="" 1779 rel="" 1780 > 1781 <img 1782 src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTE2MDAyXzk2MF_mnIDmlrDmtojmga8uanBnLmpwZWciXV0.jpeg?sha=04a6bcb5b150da28" 1783 class="qk-w--100" 1784 alt="" 1785 > 1786 </a> 1787 1788 1789 1790 1791 <a 1792 href="/blogs/news" 1793 class="banner qk-display--bk qk-hidden--pc qk-hidden--tablet" 1794 target="" 1795 rel="" 1796 > 1797 <img 1798 src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTE2MDAyXzk2MF_mnIDmlrDmtojmga8uanBnLmpwZWciXV0.jpeg?sha=04a6bcb5b150da28" 1799 class="qk-w--100" 1800 alt="" 1801 > 1802 </a> 1803 1804 1805 1806 <div class="advance-rich-text-content-container"> 1807 1808 </div> 1809 </div> 1810 1811 </div> 1812 1813 1814 1815 <div class="block image mobile-1-col block-default-width-margin last-row" style="width: calc(33.333333333333336% - 6.666666666666667px);"> 1816 1817 <div class="img-card" id="1686109638114_0"> 1818 1819 1820 1821 <a href="/blogs/åªé«å ±å°" class="banner qk-hidden--mobile" target="" rel=""> 1822 <img src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTI5NTc4XzE5MjB4OTIwX-WqkumrlOWgseWwji5qcGcuanBlZyJdXQ.jpeg?sha=a2da60162e9c9f54" class="qk-w--100" alt=""> 1823 </a> 1824 1825 1826 1827 1828 <a 1829 href="/blogs/åªé«å ±å°" 1830 class="banner qk-display--bk qk-hidden--phone qk-hidden--pc" 1831 target="" 1832 rel="" 1833 > 1834 <img 1835 src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTE2MDU0Xzk2MF_lqpLpq5TloLHlsI4uanBnLmpwZWciXV0.jpeg?sha=d4567729a9c5b0f2" 1836 class="qk-w--100" 1837 alt="" 1838 > 1839 </a> 1840 1841 1842 1843 1844 <a 1845 href="/blogs/åªé«å ±å°" 1846 class="banner qk-display--bk qk-hidden--pc qk-hidden--tablet" 1847 target="" 1848 rel="" 1849 > 1850 <img 1851 src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTE2MDU0Xzk2MF_lqpLpq5TloLHlsI4uanBnLmpwZWciXV0.jpeg?sha=d4567729a9c5b0f2" 1852 class="qk-w--100" 1853 alt="" 1854 > 1855 </a> 1856 1857 1858 1859 <div class="advance-rich-text-content-container"> 1860 1861 </div> 1862 </div> 1863 1864 </div> 1865 1866 1867 1868 <div class="block image mobile-1-col block-default-width-margin last-row" style="width: calc(33.333333333333336% - 6.666666666666667px);"> 1869 1870 <div class="img-card" id="1686109641362_0"> 1871 1872 1873 1874 <a href="/pages/ï½ï¼ï½" class="banner qk-hidden--mobile" target="" rel=""> 1875 <img src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTI5NTkxXzE5MjB4OTIwX1EmQS5qcGcuanBlZyJdXQ.jpeg?sha=4c11815baeab4031" class="qk-w--100" alt=""> 1876 </a> 1877 1878 1879 1880 1881 <a 1882 href="/pages/ï½ï¼ï½" 1883 class="banner qk-display--bk qk-hidden--phone qk-hidden--pc" 1884 target="" 1885 rel="" 1886 > 1887 <img 1888 src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTE2MDg4Xzk2MF9RJkEuanBnLmpwZWciXV0.jpeg?sha=d1ac64b45fb824b6" 1889 class="qk-w--100" 1890 alt="" 1891 > 1892 </a> 1893 1894 1895 1896 1897 <a 1898 href="/pages/ï½ï¼ï½" 1899 class="banner qk-display--bk qk-hidden--pc qk-hidden--tablet" 1900 target="" 1901 rel="" 1902 > 1903 <img 1904 src="//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L2F0dGFjaGVkX3Bob3Rvcy8xNjg2MTE2MDg4Xzk2MF9RJkEuanBnLmpwZWciXV0.jpeg?sha=d1ac64b45fb824b6" 1905 class="qk-w--100" 1906 alt="" 1907 > 1908 </a> 1909 1910 1911 1912 <div class="advance-rich-text-content-container"> 1913 1914 </div> 1915 </div> 1916 1917 </div> 1918 1919 </div> 1920</section> 1921 1922 1923<link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/_index_8_blocks-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' />
1923<script src='//cdn1-next.cybassets.com/frontend/shop/productCollection-4a1e7dfec7e41476.js' type='text/javascript'></script>
1923<!-- cyb_snippet _combo_product_related_items_modal start --><!-- cyb_snippet _combo_product_related_items_modal end --> 1924 1925 1926
1927<script> 1928 $(document).ready(function() { 1929 let isDynamicLoading = false; 1930 1931 function sendProductImpressions(products, collectionTitle) { 1932 if (products && products.length > 0) { 1933 var gtm_product = [] 1934 1935 $.each(products, function(index, product) { 1936 productInfo = { 1937 'brand': product.vendor, 1938 'category': product.product_type, 1939 'id': product.id, 1940 'list': 'Index: ' + collectionTitle, 1941 'name': product.title, 1942 'position': index + 1, 1943 'price': product.price, 1944 'variant': '' 1945 } 1946 1947 if (typeof google_tag_manager_id != 'undefined' || typeof cyb != 'undefined') { 1948 gtm_product.push(productInfo) 1949 } 1950 }) 1951 1952 if (typeof google_tag_manager_id != 'undefined' && gtm_product.length > 0) { 1953 dataLayer.push({ 1954 'event': 'productImpressions', 1955 'ecommerce': { 1956 'impressions': gtm_product 1957 } 1958 }); 1959 } 1960 1961 if (typeof cyb != "undefined" && gtm_product.length > 0) { 1962 cyb.push({ 1963 'event': 'productImpressions', 1964 'impressions': gtm_product 1965 }); 1966 } 1967 } 1968 } 1969 1970 const props = { 1971 sectionId: "_index_8_blocks", 1972 collection: { 1973 id: 243267, 1974 title: "è´ç²©é¡", 1975 }, 1976 allProductCount: 9, 1977 cartEnabled: true, 1978 discountPriceSloganUrl: "", 1979 showMultipleLabels: false, 1980 collectionHandleUrl: "/collections/è´ç²©é¡", 1981 blockProducts: 1982{"products":[{"id":41075983,"title":"å°ç粩","handle":"å°ç粩","price":120.0,"vendor":null,"slogan":"","sell_from":"2024-01-12 00:00:00","url":"/products/å°ç粩","product_type":null,"total_sold":2752,"sold_out":false,"price_range":{"min":{"id":47435352,"price":120.0,"compare_at_price":null},"max":{"id":47435352,"price":120.0,"compare_at_price":null}},"show_slogan":false,"related_to_sales_page":false,"hide_price?":false,"sales_mode_purchasable?":true,"featured_image":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc1OTgzLzE2ODYxOTM0MTlfZGZhY2MzMTNiM2U3ODUyYzQzZjguanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=b8d3b34ed60454db","optional_combo_product?":false,"combo_product_info":null,"purchase_eligibility":{"required":false,"eligible":true,"status":"eligible"},"product_labels":[],"images":["//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc1OTgzLzE2ODYxOTM0MTlfZGZhY2MzMTNiM2U3ODUyYzQzZjguanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=b8d3b34ed60454db","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc1OTgzLzE2ODYwNDA3ODZfOGViZWI2MTU3OTExNTcwZGU4NTYuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=bf144ea0985baf57","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc1OTgzLzE2ODYwNDA3ODdfOWVlNWNlZDRmZGVkNTM3Y2Y1ZDAuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=455cd66493f4c240"]},{"id":41076076,"title":"è±ç粩","handle":"è±ç粩","price":120.0,"vendor":null,"slogan":"","sell_from":"2024-01-12 00:00:00","url":"/products/è±ç粩","product_type":null,"total_sold":7490,"sold_out":false,"price_range":{"min":{"id":47435455,"price":120.0,"compare_at_price":null},"max":{"id":47435455,"price":120.0,"compare_at_price":null}},"show_slogan":false,"related_to_sales_page":false,"hide_price?":false,"sales_mode_purchasable?":true,"featured_image":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MDc2LzE2ODYxOTM1MzlfMDU5MTc3NDZhZjM0MzQ3Mjg0MTIuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=f8e6e0f5d6a9fd23","optional_combo_product?":false,"combo_product_info":null,"purchase_eligibility":{"required":false,"eligible":true,"status":"eligible"},"product_labels":[],"images":["//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MDc2LzE2ODYxOTM1MzlfMDU5MTc3NDZhZjM0MzQ3Mjg0MTIuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=f8e6e0f5d6a9fd23","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MDc2LzE2ODYwNDExNzlfMTM3N2VlYTZiZWQ5MjFlNGI0ZTYuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=6c4ba006bfd9685f","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MDc2LzE2ODYwNDExNzlfMzA0MDE4MmY5ZTY0MjQ5ZGMzMWYuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=e009c2f9d9484592"]},{"id":41076141,"title":"é»è麻粩","handle":"é»è麻粩","price":120.0,"vendor":null,"slogan":"","sell_from":"2024-01-12 00:00:00","url":"/products/é»è麻粩","product_type":null,"total_sold":1460,"sold_out":false,"price_range":{"min":{"id":47435531,"price":120.0,"compare_at_price":null},"max":{"id":47435531,"price":120.0,"compare_at_price":null}},"show_slogan":false,"related_to_sales_page":false,"hide_price?":false,"sales_mode_purchasable?":true,"featured_image":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MTQxLzE2ODYwNDE0NDhfNWI1OThlMzMxYzkwYjEwZTY0NjguanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=0aaf14852cf62eb3","optional_combo_product?":false,"combo_product_info":null,"purchase_eligibility":{"required":false,"eligible":true,"status":"eligible"},"product_labels":[],"images":["//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MTQxLzE2ODYwNDE0NDhfNWI1OThlMzMxYzkwYjEwZTY0NjguanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=0aaf14852cf62eb3","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MTQxLzE2ODYwNDE0NDhfMDQwYTdiMGM4MGMzOTFlNzdlNjQuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=897187515de62b8c","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MTQxLzE2ODYwNDE0NDhfNmRhYWNlZjY1OTEzNjRhMGVjYTEuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=659daca441b2b2c8"]},{"id":41075960,"title":"ç½è麻粩","handle":"ç½è麻粩","price":120.0,"vendor":null,"slogan":"","sell_from":"2024-01-12 00:00:00","url":"/products/ç½è麻粩","product_type":null,"total_sold":1975,"sold_out":false,"price_range":{"min":{"id":47435326,"price":120.0,"compare_at_price":null},"max":{"id":47435326,"price":120.0,"compare_at_price":null}},"show_slogan":false,"related_to_sales_page":false,"hide_price?":false,"sales_mode_purchasable?":true,"featured_image":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc1OTYwLzE2ODYwNDA2ODlfYzU5NTk1NzhjNmI4NWQ2MmI3OWEuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=9d32511327b0f617","optional_combo_product?":false,"combo_product_info":null,"purchase_eligibility":{"required":false,"eligible":true,"status":"eligible"},"product_labels":[],"images":["//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc1OTYwLzE2ODYwNDA2ODlfYzU5NTk1NzhjNmI4NWQ2MmI3OWEuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=9d32511327b0f617","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc1OTYwLzE2ODYwNDA2ODlfMGE5N2ExNTU2MzY2ZmY4YjJjOTQuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=1c51bf8f6522b8dc","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc1OTYwLzE2ODYwNDA2ODlfOGRhNDM0YjlmMDY5ZGNhMTA1OTUuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=7bfee21d99823f64"]},{"id":41076064,"title":"æµ·èè麻粩","handle":"è麻海è粩","price":120.0,"vendor":null,"slogan":"","sell_from":"2024-01-12 00:00:00","url":"/products/è麻海è粩","product_type":null,"total_sold":940,"sold_out":false,"price_range":{"min":{"id":47435441,"price":120.0,"compare_at_price":null},"max":{"id":47435441,"price":120.0,"compare_at_price":null}},"show_slogan":false,"related_to_sales_page":false,"hide_price?":false,"sales_mode_purchasable?":true,"featured_image":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MDY0LzE2ODYxOTM1MTFfYmJjODRlN2IxMWVhODEzYmZlZjkuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=e6289859ae3d6bdc","optional_combo_product?":false,"combo_product_info":null,"purchase_eligibility":{"required":false,"eligible":true,"status":"eligible"},"product_labels":[],"images":["//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MDY0LzE2ODYxOTM1MTFfYmJjODRlN2IxMWVhODEzYmZlZjkuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=e6289859ae3d6bdc","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MDY0LzE2ODYwNDExMzZfZDc2YWE4NmI0NGQzMTFhNTI3OWYuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=cdd75641b56d3efd","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MDY0LzE2ODYwNDExMzZfMmQzNGUyYWJiNTgxMDlkMDM2MDIuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=64d9342338efaad0"]},{"id":41076190,"title":"椰奶粩","handle":"椰奶粩","price":120.0,"vendor":null,"slogan":"","sell_from":"2024-01-12 00:00:00","url":"/products/椰奶粩","product_type":null,"total_sold":629,"sold_out":false,"price_range":{"min":{"id":47435589,"price":120.0,"compare_at_price":null},"max":{"id":47435589,"price":120.0,"compare_at_price":null}},"show_slogan":false,"related_to_sales_page":false,"hide_price?":false,"sales_mode_purchasable?":true,"featured_image":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MTkwLzE2ODYwNDE2OTdfNjA1MTcyMmU1ODI0ZDVlYTA1YWYuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=e65372d23e794466","optional_combo_product?":false,"combo_product_info":null,"purchase_eligibility":{"required":false,"eligible":true,"status":"eligible"},"product_labels":[],"images":["//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MTkwLzE2ODYwNDE2OTdfNjA1MTcyMmU1ODI0ZDVlYTA1YWYuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=e65372d23e794466","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MTkwLzE2ODYwNDE2OTdfNjI0ZDQ5ODgwZmQ0YTM4MzY1OTguanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=184ab1e763632cab","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MTkwLzE2ODYwNDE2OThfZWFmZmI2OGE3NzJmMGM1MzlhNDUuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=806f3b21ce4736a6"]},{"id":41075992,"title":"æä»ç²©(éå¹´ä¸åº)","handle":"æä»ç²©","price":120.0,"vendor":null,"slogan":"","sell_from":"2024-01-12 00:00:00","url":"/products/æä»ç²©","product_type":null,"total_sold":942,"sold_out":false,"price_range":{"min":{"id":47435361,"price":120.0,"compare_at_price":null},"max":{"id":47435361,"price":120.0,"compare_at_price":null}},"show_slogan":false,"related_to_sales_page":false,"hide_price?":false,"sales_mode_purchasable?":true,"featured_image":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc1OTkyLzE2ODYwNDA4NDNfZjVkOTgxNzg4ZjVkMTU5ZDc0NTQuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=89f388b984e45888","optional_combo_product?":false,"combo_product_info":null,"purchase_eligibility":{"required":false,"eligible":true,"status":"eligible"},"product_labels":[],"images":["//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc1OTkyLzE2ODYwNDA4NDNfZjVkOTgxNzg4ZjVkMTU5ZDc0NTQuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=89f388b984e45888","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc1OTkyLzE2ODYwNDA4NDNfM2M1NGRjNDM3YzllNTFmN2ZkMjQuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=6822ab5213415e38","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc1OTkyLzE2ODYwNDA4NDNfNGQwOGI5YzA
19821OWE4YjQyMmE5YjUuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=afac4dc806ec519b"]},{"id":41076093,"title":"é»ç´«ç±³é¦ç²©(éå¹´ä¸åº)","handle":"é»ç±³é¦ç²©","price":120.0,"vendor":null,"slogan":"","sell_from":"2024-01-12 00:00:00","url":"/products/é»ç±³é¦ç²©","product_type":null,"total_sold":199,"sold_out":false,"price_range":{"min":{"id":47435476,"price":120.0,"compare_at_price":null},"max":{"id":47435476,"price":120.0,"compare_at_price":null}},"show_slogan":false,"related_to_sales_page":false,"hide_price?":false,"sales_mode_purchasable?":true,"featured_image":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MDkzLzE2ODYwNDEyMjlfZTliY2Q2MzA0Mzg0OTRjZTc3NDEuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=6c61a67f8784c01a","optional_combo_product?":false,"combo_product_info":null,"purchase_eligibility":{"required":false,"eligible":true,"status":"eligible"},"product_labels":[],"images":["//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MDkzLzE2ODYwNDEyMjlfZTliY2Q2MzA0Mzg0OTRjZTc3NDEuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=6c61a67f8784c01a","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MDkzLzE2ODYwNDEyMjlfZTdjYjU0MGVlNDliYjYyZjkxZDguanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=c59707bf347aa9db","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MDkzLzE2ODYwNDEyMjlfYThmYzk5YjQ1N2I1M2NkNjgxYmEuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=e05ec35784538471"]},{"id":41076250,"title":"ç¶åè´ç²©ï¼å ¨ç´ ï¼(éå¹´ä¸åº)","handle":"ç¶åè´ç²©å ¨ç´ ","price":120.0,"vendor":null,"slogan":"","sell_from":"2024-01-12 00:00:00","url":"/products/ç¶åè´ç²©å ¨ç´ ","product_type":null,"total_sold":2906,"sold_out":false,"price_range":{"min":{"id":47435658,"price":120.0,"compare_at_price":null},"max":{"id":47435658,"price":120.0,"compare_at_price":null}},"show_slogan":false,"related_to_sales_page":false,"hide_price?":false,"sales_mode_purchasable?":true,"featured_image":"//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MjUwLzE2ODYwNDE5NjZfNmU1ZDNkNGI3MTBmYmQxYmI0MjIuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=8d55a161e8e7d616","optional_combo_product?":false,"combo_product_info":null,"purchase_eligibility":{"required":false,"eligible":true,"status":"eligible"},"product_labels":[],"images":["//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MjUwLzE2ODYwNDE5NjZfNmU1ZDNkNGI3MTBmYmQxYmI0MjIuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=8d55a161e8e7d616","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MjUwLzE2ODYwNDE5NjZfZTEwMTc0YmZiZDAxMTg5NDFmYTEuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=7df3b90072edda2b","//cdn1-next.cybassets.com/media/W1siZiIsIjI0NjA2L3Byb2R1Y3RzLzQxMDc2MjUwLzE2ODYwNDE5NjZfODE1MTBlMWZiNDk1N2EyMTdiNjUuanBlZyJdLFsicCIsInRodW1iIiwiNjAweDYwMCJdXQ.jpeg?sha=75a40f9519522ef6"]}]} 1983, 1984 sessionTitle: null, 1985 section: {"type":"_index_8_blocks","visible":true,"settings":{"dict_title":"æ¢é·åå","collection_handle":"è´ç²©é¡","limit":"12","margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"24","product_display":"displayPartial","product_arrangement":"1"},"custom_name":"åååé¡"}, 1986 productURLSearch: "", 1987 hasIntegratedProductLabelsPlugin: false, 1988 isDisplayPriceRange: null || false, 1989 pageType: "index", 1990 } 1991 if (isDynamicLoading) { 1992 window.DynamicLoading.setupComponent({ 1993 sectionId: '#index_8_blocks-_index_8_blocks', 1994 callbackData: props, 1995 entryName: 'renderProductCollection', 1996 source: '//cdn1-next.cybassets.com/frontend/shop/productCollection-4a1e7dfec7e41476.js', 1997 }); 1998 } else { 1999 renderProductCollection('#index_8_blocks-_index_8_blocks', props); 2000 } 2001 var products = props.blockProducts && props.blockProducts.products; 2002 if (products) { 2003 sendProductImpressions(products, props.collection.title); 2004 } 2005 }); 2006</script>
2006 2007 2008<style> 2009 [id="_index_8_blocks"] { 2010 margin: 0 0px 50px !important; 2011 } 2012 @media (max-width: 991px) { 2013 [id="_index_8_blocks"] { 2014 margin: 0 0px 24px !important; 2015 } 2016 } 2017</style> 2018 2019<section id="_index_8_blocks" class="index_8_blocks qk-text--center"> 2020 <div id="index_8_blocks-_index_8_blocks"></div> 2021</section> 2022 2023 2024 2025 2026 2027 <!-- å å ¥è³¼ç©è» --> 2028 2029 <!-- cyb_snippet new_addcart_modal start --> 2030<link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/vue_product_modal-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' /> 2031 2032<div id="new-addcart-modal" class="container"> 2033 <transition name="modal"> 2034 <product-modal 2035 v-if="showProductModal" 2036 :only-description="onlyDescription" 2037 :product-url="popProductUrl" 2038 :color="color" 2039 :is-collection="isCollection" 2040 :is-show-description="isShowDescription" 2041 :is-quick-buy="isQuickBuy" 2042 :selected-variant-id="selectedVariantId" 2043 :categories="categories" 2044 :call-back="checkoutAddToCartCallback" 2045 ref="productModal" 2046 > 2047 </product-modal> 2048 </transition> 2049</div> 2050 2051<!-- cyb_snippet components/product_modal/product_modal start -->
2052<script type="text/x-template" id="product-modal"> 2053 <div class="modal-mask qk-h--100 qk-w--100 qk-l--0 qk-t--0 qk-pos--fixed" @click="closeModal"> 2054 <div class="modal-content qk-bd--none qk-center qk-bg--theme_bg" :class="{'only-description': onlyDescription}" @click.stop> 2055 <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> 2056 <div class="modal-body custom-scrollbar qk-w--100"> 2057 <div v-if="!isLoading"> 2058 <div id="checkout-product" class="row"> 2059 <div class="col-sm-6 col-xs-4"> 2060 <photo-swiper 2061 :mediaItems="swiperItems" 2062 :current-image-index="currentImageIndex" 2063 :current-variant="currentVariant" 2064 :video-after-image="videoAfterImage" 2065 ></photo-swiper> 2066 </div> 2067 <div class="col-sm-6 col-xs-8"> 2068 <h4 class="qk-fs--hd2 qk-fw--bold qk-text--heading qk-mg--0" v-html="product.title"></h4> 2069 <p class="product_brief qk-text--text qk-fs--body" v-html="product.brief"></p> 2070 <p class="product_slogan qk-text--heading qk-fs--body" v-html="product.slogan"></p> 2071 <div class="swiper_thumbnails" style="margin-bottom: 10px;"> 2072 <swiper-thumbnails 2073 :mediaItems="swiperItems" 2074 :current-image-index="currentImageIndex" 2075 :title="product.title" 2076 @update-current-image-index="(thumbnailIndex) => { currentImageIndex = thumbnailIndex }" 2077 ></swiper-thumbnails> 2078 </div> 2079 2080 <div v-if="!hidePrice" style="margin-bottom: 10px;"> 2081 2082 <span class="price-title qk-fs--body qk-fw--500 qk-text--heading">${ priceTitleTag }</span> 2083 2084 <div> 2085 <span v-html="variantPrice" class="variant-price qk-fs--hd1 qk-fw--bold" :class="[isDiscountPrice ? 'qk-text--discount_price' : 'qk-text--price']"></span> 2086 <del v-html="marketPrice" class="variant-del-price qk-fs--body qk-fw--500 qk-text--text"></del> 2087 </div> 2088 </div> 2089 <div v-if="!onlyDescription" class="controls"> 2090 <div class="variant-quantity qk-display--flex qk-flex--column"> 2091 <div v-if="hasVariant" class="product-variant-options"> 2092 <div v-for="(option, index) in optionInfo" class="product-variant-option" :class="{'product-variant-option--hidden': shouldHideSingleVariantOptions}"> 2093 <div class="advance variant-select-option" v-if="styledShopMenu==='dropDownType'"> 2094 2095 <label>${option.name}</label> 2096 <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> 2097 <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}`)"> 2098 <option value="null" class="select_option-hidden">è«é¸æ${option.name}</option> 2099 <option :style="{ visibility : isMobileSize ? 'hidden' : 'visible' }" v-for="(types) in option.types" :disabled="!types.isValid" :value="types.name">${types.name}</option> 2100 </select> 2101 <span class="select_placeholder-color" v-if="currentOption[`option${index + 1}`] === null" v-show="isMobileSize" @click="onClickSelectModal(option,`option${index + 1}`)">è«é¸æ${option.name}</span>
2102 <span v-else :value="currentOption[`option${index + 1}`]" v-show="isMobileSize" @click="onClickSelectModal(option,`option${index + 1}`)" v-html="currentOption[`option${index + 1}`]"></span> 2103 </div> 2104 <advance-option v-else :option-key="'option' + (index + 1)" :option="option" :current-option="currentOption" :toggle-current-option="toggleCurrentOption"/> 2105 </div> 2106 </div> 2107 <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)"> 2108 <div class="list_block custom-scrollbar qk-of_x--hidden"> 2109 <h4 class="qk-text--heading qk-fs--body">æ¤åååèçåªæ æ´»å 2110 </h4> 2111 <template v-if="displayPeriodicSalesPages"> 2112 <div v-for="salesPage in product.showableSalesPages" class="discount-list"> 2113 <span class="discount-label qk-fs--breadcrumb qk-bd--default qk-bd--accent qk-bg--white qk-display--il_bk qk-text--accent">宿å®é¡ 2114 </span> 2115 <a class="discount-title qk-text--accent qk-fs--body" :href="salesPage.path">${ salesPage.title }</a> 2116 </div> 2117 </template> 2118 <template v-for="discounts in discountsList"> 2119 <div v-for="discount in discounts" class="discount-list"> 2120 <a v-if="discount.url" :href="discount.url" class="discount-title qk-text--accent qk-fs--body"> 2121 ${ discount.title } 2122 </a> 2123 <span v-else class="discount-title qk-text--accent qk-fs--body">${ discount.title }</span> 2124 </div> 2125 </template> 2126 </div> 2127 </div> 2128 <div v-if="showPurchaseControls" class="product-quantity qk-bd--product_border" v-show="!isMobileSize"> 2129 <div class="btn-group qk-w--100" role="group" aria-label="First group"> 2130 <button class="btn add-down qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityDecrease">ï¼</button> 2131 <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"> 2132 <button class="btn add-up qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityIncrease">ï¼</button> 2133 </div> 2134 </div> 2135 </div> 2136 <div v-if="showPurchaseControls" class="add-button-wrapper"> 2137 <!-- cyb_snippet _product_modal_button start --> 2138<button 2139 class="btn btn-default add-button qk-cursor--pointer qk-w--100 qk-btn--primary" 2140 :class="{selected: isChoose, adding: adding || isHideAddCartBtn, secondary: isSecondaryBtn, 'qk-btn--disabled': isHideAddCartBtn && isNewNnCollection, 'qk-bd--none': isHideAddCartBtn && isNewNnCollection}" 2141 type="button" 2142 :disabled="isHideAddCartBtn" 2143 @click="addProduct" 2144> 2145 ${ addCartText } 2146</button> 2147 2148<!-- cyb_snippet _product_modal_button end --> 2149 </div> 2150 <div class="product-others qk-fs--body"> 2151 <span class="product-love"> 2152 <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"> 2153 <svg 2154 width="15" 2155 height="15"
2156 viewBox="0 0 24 24" 2157 fill="none" 2158 xmlns="http://www.w3.org/2000/svg"> 2159 <path 2160 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" 2161 stroke="currentColor" 2162 stroke-width="2" 2163 stroke-linecap="round" 2164 stroke-linejoin="round" /> 2165 </svg> 2166 å å ¥ææ 2167 </a> 2168 </span> 2169 <span class="product_sold qk-text--text" v-if="false"> 2170 <span>å·²é·å®ï¼ 2171 ${ product.totalSold } 2172 ä»¶ 2173 </span> 2174 </span> 2175 <span class="product_bonus qk-text--text" v-if="false"> 2176 æ¤åå ã æé« ãå¯ä»¥ææµç´ å© 2177 <span class="val qk-fw--600 qk-fs--hd2" v-if="currentVariant">${currentVariant.maxUsableBonus}</span> 2178 <span class="val qk-fw--600 qk-fs--hd2" v-else>${maxUsableBonus}</span> 2179 é» 2180 <span v-html="bonusToPrice"/> 2181 </span> 2182 </div> 2183 <div class='product_limit_buy qk-fs--body' v-show="product.minBuy > 0 || product.limitBuy > 0"> 2184 ${limitBuyText} 2185 </div> 2186 </div> 2187 </div> 2188 </div> 2189 <div v-if="isShowDescription" class="row"> 2190 <div class="col-sm-12"> 2191 2192 <div v-if="product.bodyHtml"> 2193 <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading"> 2194 ååä»ç´¹ 2195 </h5> 2196 <div class="ckeditor"> 2197 <div v-html="product.bodyHtml"></div> 2198 </div> 2199 </div> 2200 2201 2202 <div v-if="otherDescriptions['product_description_section_spec']"> 2203 <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading"> 2204 è¦æ ¼èªªæ 2205 </h5> 2206 <div class="ckeditor"> 2207 <div v-html="otherDescriptions['product_description_section_spec']"></div> 2208 </div> 2209 </div> 2210 2211 2212 <div v-if="otherDescriptions['product_description_section_shipping']"> 2213 <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading"> 2214 ééæ¹å¼ 2215 </h5> 2216 <div class="ckeditor"> 2217 <div v-html="otherDescriptions['product_description_section_shipping']"></div> 2218 </div> 2219 </div> 2220 2221 </div> 2222 </div> 2223 </div> 2224 <div v-show="isLoading" style="text-align: center; padding-bottom: 20px;"> 2225 <i class="fas fa-spinner fa-spin fa-fw fa-2x"></i> 2226 </div> 2227 </div> 2228 <!-- cyb_snippet _product_modal_button_mobile start --> 2229 <div 2230 v-if="showPurchaseControls" 2231 v-show="isMobileSize" 2232 class="mobile_footer" 2233 :class="{'mobile_footer-z': variantSize > 1 }"> 2234 <div class="product-quantity"> 2235 <div class="btn-group qk-w--100" role="group" aria-label="First group"> 2236 <button class="btn add-down qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityDecrease">ï¼</button> 2237 <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"> 2238 <button class="btn add-up qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityIncrease">ï¼</button> 2239 </div> 2240 </div> 2241 <button 2242 v-if="!isLoading && !onlyDescription" 2243 class="btn btn-mobile add-button qk-btn qk-btn--primary qk-btn--lg" 2244 :class="{selected: isChoose, adding: adding || isHideAddCartBtn, 'qk-btn--disabled': isHideAddCartBtn && isNewNnCollection, 'qk-bd--none': isHideAddCartBtn && isNewNnCollection}" 2245 type="button" 2246 :disabled="isHideAddCartBtn" 2247 @click="addProduct"> 2248 ${ addCartText } 2249 </button> 2250</div> 2251<div 2252 class="mobile-modal" 2253 :class="{ 'modal-open': isModalSelectShow && isMobileSize }"> 2254 <div class="mobile_modal-content"> 2255 <div class="modal_close-button"> 2256 <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> 2257 </div> 2258 2259 <p>è«é¸æ${modalOption.name}</p> 2260 <div class="modal_select-templete qk-display--flex qk-of_y--auto qk-w--100"> 2261 <div class="options-container"> 2262 <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> 2263 </div> 2264 </div> 2265 <div v-if="variantSize > 1" class="modal_select_footer qk-display--flex"> 2266 <button type="button" class="modal_cancel qk-bd--default qk-btn--secondary qk-bd--button qk-text--button" @click="onChangeModalSelect(false,false)">åæ¶</button> 2267 <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> 2268 </div> 2269 </div> 2270</div> 2271 2272<!-- cyb_snippet _product_modal_button_mobile end --> 2273 </div> 2274 </div> 2275</script>
2275 2276 2277<!-- cyb_snippet components/product_modal/color_image_option start -->
2278<script id="color-image-option" type="text/x-template"> 2279 <div class="color-image qk-display--flex qk-flex--wrap qk-align--center"> 2280 <div class="title">é¡è²</div> 2281 <div 2282 v-for="(imageColor, index) in imageColors" 2283 :class="{ 2284 'focus': !currentOption[optionKey] === option.types[index].name && currentImageIndex === index, 2285 'selected': currentOption[optionKey] === option.types[index].name, 2286 'disabled': !option.types[index].isValid 2287 }" 2288 class="image-option img-flex qk-bd--default qk-bd--transparent qk-display--block qk-pos--rel" 2289 @mouseleave="setCurrentImageIndex(index)" 2290 @mouseover="getOptionImageIndex(index)" 2291 @click="setOption(optionKey, index)" 2292 > 2293 <img v-if="imageColor !== 'noColorImage'" :src="imageColor.large" alt="image"> 2294 <img v-else src="/assets/no-image-large.png" alt="image"> 2295 </div> 2296 </div> 2297</script>
2297 2298
2299<script type="text/javascript"> 2300 $(document).ready(function() { 2301 window.themeHelper.productModalComponents['color-image-option'] = { 2302 template: '#color-image-option', 2303 delimiters: ['${', '}'], 2304 props: { 2305 optionKey: String, 2306 option: Object, 2307 product: Object, 2308 imageColors: Array, 2309 isChoose: Boolean, 2310 currentImageIndex: Number, 2311 setCurrentImageIndex: Function, 2312 getOptionImageIndex: Function, 2313 currentOption: Object, 2314 toggleCurrentOption: Function, 2315 }, 2316 methods: { 2317 setOption: function(optionKey, index) { 2318 const type = this.option.types[index]; 2319 if(type.isValid){ 2320 this.toggleCurrentOption(optionKey, type.name); 2321 } 2322 } 2323 } 2324 }; 2325 }); 2326</script>
2326 2327 2328<!-- cyb_snippet components/product_modal/color_image_option end --> 2329<!-- cyb_snippet components/product_modal/advance_option start -->
2330<script id="advance-option" type="text/x-template"> 2331 <div class="advance"> 2332 <div class="title qk-text--heading qk-fs--body">${option.name}</div> 2333 <div 2334 v-for="type in option.types" 2335 :class="{ 2336 'selected': currentOption[optionKey] === type.name, 2337 'disabled': !type.isValid 2338 }" 2339 @click="setOption(optionKey, type)" 2340 class="option qk-btn qk-bd--button qk-text--button qk-pd_x--1" 2341 > 2342 ${type.name} 2343 </div> 2344 </div> 2345</script>
2345 2346
2347<script type="text/javascript"> 2348 $(document).ready(function() { 2349 window.themeHelper.productModalComponents['advance-option'] = { 2350 template: '#advance-option', 2351 delimiters: ['${', '}'], 2352 props: { 2353 optionKey: String, 2354 option: Object, 2355 product: Object, 2356 currentOption: Object, 2357 toggleCurrentOption: Function, 2358 }, 2359 methods: { 2360 setOption: function(optionKey, type) { 2361 if(type.isValid){ 2362 this.toggleCurrentOption(optionKey, type.name); 2363 } 2364 } 2365 } 2366 }; 2367 }); 2368</script>
2368 2369 2370<!-- cyb_snippet components/product_modal/advance_option end --> 2371 2372<!-- cyb_snippet components/product_modal/photo_swiper start --> 2373 2374
2375<script id="photo-swiper" type="text/x-template"> 2376 <div ref="photoSwiper" id="photo_swiper" class="photos swiper swiper-container"> 2377 <div class="swiper-wrapper"> 2378 <template v-if="hasImage"> 2379 <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"> 2380 <video-player v-if="item.url" :video="item" 2381 :video-poster=" !!mediaItems[firstImageIndex] ? mediaItems[firstImageIndex].large : '//cdn1-next.cybassets.com/img_loading.svg' " 2382 > 2383 </video-player> 2384 <img v-else class="qk-center" :src="item.large" alt="image"/> 2385 </div> 2386 </template> 2387 <div v-else class="photo swiper-slide qk-align--center qk-display--flex qk-justify--center qk-vert--text_top default_scale"> 2388 <img src="//cdn1-next.cybassets.com/assets/no-image-large-2b95ea56c455be9ce081d81c14eded925df68bf8fa38809e46f6af8fcdd5f9bc.png" alt="image" /> 2389 </div> 2390 </div> 2391 <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> 2392 <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> 2393 2394 <div class="photo-pagination qk-bd--default qk-bd--body qk-text--center qk-text--body qk-fs--breadcrumb qk-visible-sm"> 2395 <span class="current-index qk-text--default_dark">${currentImageIndex +1 }</span><span class="pagination-slash">/</span> 2396 <span>${mediaItems.length}</span> 2397 </div> 2398 </div> 2399</script>
2399 2400
2401<script> 2402 $(document).ready(function () { 2403 window.themeHelper.productModalComponents['photo-swiper'] = { 2404 template: '#photo-swiper', 2405 delimiters: ['${', '}'], 2406 props: { 2407 mediaItems: Array, 2408 currentImageIndex: Number, 2409 currentVariant: Object, 2410 videoAfterImage: Boolean, 2411 }, 2412 data: function () { 2413 return { 2414 swiper: {}, 2415 swiperOption: { 2416 preventInteractionOnTransition: true, 2417 rewind: true, 2418 spaceBetween: 5, 2419 slidesPerView: 1, 2420 navigation: { 2421 nextEl: '.photo-next', 2422 prevEl: '.photo-prev' 2423 } 2424 }, 2425 showBtn: true, 2426 isVariantReposition: false, 2427 } 2428 }, 2429 mounted: function() { 2430 this.swiper = new Swiper('#photo_swiper', this.swiperOption); 2431 this.swiper.on('slideChange', this.slideOnChange); 2432 }, 2433 watch: { 2434 currentImageIndex: function() { 2435 this.slideToIndex(); 2436 }, 2437 currentVariant: { 2438 immediate: true, 2439 handler: function() { 2440 this.showBtn = this.mediaItems.length > 1; 2441 this.isVariantReposition = true; 2442 this.$nextTick(() => { 2443 if (this.swiper) { 2444 this.swiper.update(); 2445 this.swiper.slideToLoop(this.initialItemIndex) 2446 this.slideOnChange(); 2447 this.isVariantReposition = false; 2448 } 2449 }); 2450 }, 2451 }, 2452 }, 2453 computed: { 2454 hasImage: function() { 2455 return this.mediaItems.length > 0; 2456 }, 2457 hasVideo: function() { 2458 return this.mediaItems.findIndex(item => !!item.url) !== -1; 2459 }, 2460 variantPhotos: function() { 2461 if (this.currentVariant?.photos?.length) { 2462 return this.currentVariant.photos; 2463 } else { 2464 return null; 2465 } 2466 }, 2467 initialItemIndex: function() { 2468 if (this.hasVideo && !this.videoAfterImage) { 2469 // Focus on photo if "variant with photos" selected, video otherwise 2470 return this.variantPhotos?.length ? 1 : 0; 2471 } else { 2472 // Focus on first photo 2473 return 0; 2474 } 2475 }, 2476 }, 2477 methods: { 2478 slideOnChange: function() { 2479 themeHelper.EventBus.$emit('photoOnChange', this.swiper.realIndex, this.isVariantReposition); 2480 }, 2481 slideToIndex: function() { 2482 if(this.swiper.realIndex != this.currentImageIndex) { 2483 this.swiper.slideToLoop(this.currentImageIndex); 2484 this.swiper.update(); 2485 } 2486 }, 2487 } 2488 }; 2489 }); 2490</script>
2490 2491 2492 2493<!-- cyb_snippet components/product_modal/video_player start -->
2494<script id="video-player" type="text/x-template"> 2495 <div class="videoPlayer__wrapper" @click="handleVideoClick"> 2496 <video 2497 id='modal-video' 2498 class="videoPlayer__video qk-cursor--pointer qk-center" 2499 :poster="videoPoster" 2500 loop defaultMuted muted playsinline webkit-playsinline autoplay 2501 > 2502 <source :src="videoUrl" type="video/mp4"> 2503 <p>ä½ çç覽å¨ä¸æ¯æ´ HTML 5 video</p> 2504 </video> 2505 <button id="modal-video-button" class="videoPlayer__pauseButton"></button> 2506 </div> 2507</script>
2507 2508
2509<script> 2510 $(document).ready(function () { 2511 window.themeHelper.productModalComponents['video-player'] = { 2512 template: '#video-player', 2513 delimiters: ['${', '}'], 2514 props: { 2515 video: Object, 2516 videoPoster: String, 2517 }, 2518 data: function() { 2519 return { 2520 videoElement: null, 2521 buttonElement: null, 2522 }; 2523 }, 2524 mounted: function() { 2525 this.videoElement = $('#modal-video')[0]; 2526 this.buttonElement = $('#modal-video-button'); 2527 this.setVideoVolumeZero(); 2528 this.videoElement.addEventListener('canplay', (event) => { 2529 this.sendGtag('play'); 2530 }, { once: true }); 2531 }, 2532 computed: { 2533 videoUrl: function() { 2534 return this.video.url; 2535 } 2536 }, 2537 methods: { 2538 sendGtag: function(action) { 2539 window.productVideoView && productVideoView(action); 2540 }, 2541 setVideoVolumeZero: function() { 2542 this.videoElement.volume = 0; 2543 }, 2544 handleVideoClick: function() { 2545 if (this.videoElement.paused){ 2546 this.videoElement.play(); 2547 this.sendGtag('play'); 2548 } else { 2549 this.videoElement.pause(); 2550 this.sendGtag('paused'); 2551 } 2552 this.handleVideoButtonDisplay(this.buttonElement, this.videoElement); 2553 }, 2554 handleVideoButtonDisplay: function(button, video) { 2555 button.toggleClass('videoPlayer__playButton', video.paused); 2556 button.toggleClass('videoPlayer__pauseButton', !video.paused); 2557 }, 2558 } 2559 }; 2560 }); 2561</script>
2561 2562 2563<!-- cyb_snippet components/product_modal/video_player end --> 2564 2565<!-- cyb_snippet components/product_modal/photo_swiper end --> 2566<!-- cyb_snippet components/product_modal/swiper_thumbnails start -->
2567<script id="swiper-thumbnails" type="text/x-template"> 2568 <div 2569 v-for="(thumbnail, index) in allThumbnails" 2570 :key="index" 2571 class="product-thumbnail img-flex qk-of--hidden qk-display--il_bk qk-cursor--pointer qk-bd--default qk-bd--transparent default_scale" 2572 :class="{ focus: index === currentImageIndex }" 2573 @mouseover="updateCurrentImageIndex(index)" 2574 > 2575 <template v-if="thumbnail.isVideo"> 2576 <video class="qk-w--100 qk-h--100" :src="thumbnail.url" defaultMuted playsinline></video> 2577 <button class="videoPlayer__playButton"></button> 2578 </template> 2579 <img v-else :src="thumbnail.url" :alt="title" class="qk-w--100 qk-h--100"> 2580 </div> 2581</script>
2581 2582
2583<script type="text/javascript"> 2584 $(document).ready(function () { 2585 window.themeHelper.productModalComponents['swiper-thumbnails'] = { 2586 template: '#swiper-thumbnails', 2587 delimiters: ['${', '}'], 2588 props: { 2589 title: String, 2590 mediaItems: Array, 2591 currentImageIndex: Number, 2592 }, 2593 emits: ['updateCurrentImageIndex'], 2594 methods: { 2595 updateCurrentImageIndex: function(thumbnailIndex) { 2596 if (thumbnailIndex !== this.currentImageIndex ) { 2597 this.$emit('updateCurrentImageIndex', thumbnailIndex); 2598 } 2599 }, 2600 }, 2601 mounted() { 2602 // can be removed after replacing video thumbnail with img 2603 const thumbnailVideo = $('.product-thumbnail video')[0]; 2604 if (!!thumbnailVideo) { 2605 thumbnailVideo.volume = 0; 2606 const promise = thumbnailVideo.play(); 2607 promise.then(() => { 2608 thumbnailVideo.pause(); 2609 }) 2610 } 2611 }, 2612 computed: { 2613 allThumbnails: function() { 2614 return this.mediaItems.map(item => ({ 2615 isVideo: !!item.url, 2616 url: item.url || item.medium 2617 })); 2618 }, 2619 }, 2620 watch: { 2621 allThumbnails: { 2622 handler(){ 2623 this.updateCurrentImageIndex(this.currentImageIndex); 2624 } 2625 } 2626 } 2627 }; 2628 }); 2629</script>
2629 2630 2631<!-- cyb_snippet components/product_modal/swiper_thumbnails end --> 2632 2633 2634<!-- cyb_snippet _product_modal_js start -->
2635<script type="text/javascript"> 2636 $(document).ready(function() { 2637 var categoryLevels = []; 2638 var productCategoryLevels = null; 2639 var pageMainProductId = null; 2640 window.themeHelper.productModalComponents['product-modal'] = { 2641 template: '#product-modal', 2642 delimiters: [ 2643 '${', '}' 2644 ], 2645 props: { 2646 onlyDescription: Boolean, 2647 cartItems: Array, 2648 groupId: Number, 2649 productUrl: String, 2650 color: String, // unused 2651 collectionId: Number, 2652 categories: Array, 2653 // 夿·æ¯å¦æè²ç¥¨å±é 2654 isCollection: { 2655 type: Boolean, 2656 required: false, 2657 default: false, 2658 }, 2659 // 夿·å å ¥è³¼ç©è»çæ¹æ³ 2660 isNnCollection: Boolean, 2661 isNewNnCollection: Boolean, 2662 isBundleDiscount: Boolean, 2663 2664 // 夿·æ¯å¦é¡¯ç¤ºååæè¿° 2665 isShowDescription: { 2666 type: Boolean, 2667 default: true 2668 }, 2669 2670 // 夿·æ¯å¦çºç«å³è³¼è²· 2671 isQuickBuy: { 2672 type: Boolean, 2673 default: false 2674 }, 2675 selectedVariantId: Number, 2676 callBack: Function 2677 }, 2678 data: function() { 2679 return { 2680 styledShopMenu: "buttonType", 2681 selectOption: '', 2682 selectCurrentStr:'', 2683 isModalSelectShow: false, 2684 modalOption: {}, 2685 adding: false, 2686 currentImageIndex: 0, 2687 _navState: { variantId: null, photoIndex: 0 }, 2688 currentOption: { 2689 option1: null, 2690 option2: null, 2691 option3: null 2692 }, 2693 currentVariant: null, 2694 variantNotifications: null, 2695 currentVariantIndex: null, 2696 product: {}, 2697 isChoose: false, 2698 isLoading: true, 2699 isEmptyClickable: liquidHelper.isEmptyClickable, 2700 quantity: 1, 2701 maxUsableBonus: 0, 2702 isDiscountPrice: false, 2703 displayProductDiscountsList: true, 2704 displayPeriodicSalesPages:false, 2705 discountsList: null, 2706 hasVideoPlugin: false, 2707 videoDisplayLocation: null, 2708 hasStockNotificationPlugin: true, 2709 isDisplayPriceRange: null, 2710 hasVariantPriceRangePlugin: true, 2711 hasHideSingleVariantOptionsPlugin: false, 2712 } 2713 }, 2714 mounted: function() { 2715 this.getProductDetail(); 2716 $('.custom-scrollbar').addCustomScrollbar(); 2717 themeHelper.EventBus.$on('photoOnChange', this.photoOnChange); 2718 }, 2719 beforeUnmount: function() { 2720 themeHelper.EventBus.$off('photoOnChange', this.photoOnChange); 2721 }, 2722 computed: { 2723 photoUrls: function() { 2724 return this.product.photoUrls.length > 0 2725 ? this.product.photoUrls 2726 : [this.featuredImage]; 2727 }, 2728 photoUrlsMap: function() { 2729 var map = {}; 2730 var urls = this.product.photoUrls; 2731 this.product.photos.forEach(function(photo, index) { 2732 map[photo.photo.id] = urls[index]; 2733 }); 2734 2735 return map; 2736 }, 2737 featuredImage: function() { 2738 return this.product.featuredImage; 2739 }, 2740 swiperPhotos: function() { 2741 if (!this.photoUrls.length) { 2742 return [this.featuredImage]; 2743 } 2744 2745 if (this.currentVariant && this.currentVariant.photos.length) { 2746 var map = this.photoUrlsMap; 2747 return this.currentVariant.photos.map(function(p) { 2748 return map[p.id]; 2749 }); 2750 } 2751 2752 return this.photoUrls; 2753 }, 2754 productVideo: function() { 2755 return this.product.video; 2756 }, 2757 videoAfterImage: function() { 2758 return this.videoDisplayLocation === 'after'; 2759 }, 2760 swiperItems: function() { 2761 const media = [...this.swiperPhotos]; 2762 if ( 2763 this.hasVideoPlugin && this.productVideo.url 2764 ) { 2765 this.videoAfterImage 2766 ? media.push(this.productVideo) 2767 : media.unshift(this.productVideo); 2768 } 2769 return media; 2770 }, 2771 firstImageIndex: function() { 2772 return this.hasVideoPlugin && this.productVideo.url && !this.videoAfterImage 2773 ? 1 2774 : 0 2775 }, 2776 otherDescriptions: function() { 2777 var descriptions = {}; 2778 this.product.otherDescriptions.forEach(function(od) { 2779 descriptions[od.settingName] = od.bodyHtml; 2780 }) 2781 return descriptions 2782 }, 2783 variantOptions: function() { 2784 return themeHelper.variantOptions(this.product); 2785 }, 2786 firstValidVariant: function() { 2787 var self = this; 2788 var result = this.product.variants.find(function(variant) { 2789 // å¢å product modal è¯çµ¡åºå®¶ property 2790 variant.imgUrl = ""; 2791 variant.productTitle = ""; 2792 2793 return variant.available; 2794 }); 2795 2796 return result 2797 ? result 2798 : null; 2799 }, 2800 selectedValidVariant: function() { 2801 var self = this; 2802 var result = this.variantOptions.find(function(variant) { 2803 return variant.id === self.selectedVariantId; 2804 }); 2805 2806 return result 2807 ? result 2808 : null; 2809 }, 2810 totalInventoryQuantity: function(product) { 2811 return themeHelper.totalInventoryQuantity(this.product) 2812 }, 2813 addCartText: function() { 2814 var variants = parseInt(""); 2815 let isRegisteredNotification = this.currentVariant && this.variantNotifications && this.variantNotifications[this.currentVariant.id] 2816 if (this.isNnCollection || this.isBundleDiscount) { 2817 if (this.currentVariant && !themeHelper.variantIsAvailable(this.currentVariant)) { 2818 if (this.currentVariant.inventoryPolicy === 'continue') { 2819 if (this.isNnCollection) { 2820 return this.isChoose && !this.isNewNnCollection 2821 ? 'å·²é è³¼' 2822 : 'é è³¼åå'; 2823 } 2824 } else { 2825 return 'å·²å®å®'; 2826 } 2827 } 2828 if (this.totalInventoryQuantity === 0) { 2829 return 'å·²å®å®'; 2830 } 2831 return this.isChoose && !this.isNewNnCollection 2832 ? 'å·²é¸è³¼' 2833 : 'é¸è³¼'; 2834 } else { 2835 if (this.isQuickBuy) { 2836 if (this.currentVariant && !themeHelper.variantIsAvailable(this.currentVariant)) { 2837 if (this.currentVariant.inventoryPolicy === 'continue'){ 2838 return 'ç«å³é è³¼' 2839 } 2840 return this.hasStockNotificationPlugin 2841 ? (isRegisteredNotification 2842 ? 'å·²ç»è¨è£è²¨éç¥' 2843 : 'å·²å®å®ï¼è²¨å°éç¥æ') 2844 : 'è¯çµ¡åºå®¶' 2845 } 2846 return 'ç«å³è³¼è²·'; 2847 } else { 2848 if (this.currentVariant) { 2849 if (!themeHelper.variantIsAvailable(this.currentVariant)) { 2850 if (this.currentVariant.inventoryPolicy === 'continue'){ 2851 return 'é è³¼åå' 2852 } 2853 return this.hasStockNotificationPlugin 2854 ? (isRegisteredNotification 2855 ? 'å·²ç»è¨è£è²¨éç¥' 2856 : 'å·²å®å®ï¼è²¨å°éç¥æ') 2857 : 'è¯çµ¡åºå®¶' 2858 } 2859 } else { 2860 if (this.totalInventoryQuantity === 0) { 2861 return 'å·²å®å®'; 2862 } 2863 } 2864 return 'å å ¥è³¼ç©è»'; 2865 } 2866 } 2867 }, 2868 cartItem: function() { 2869 if (!this.currentVariant) { 2870 return null 2871 } 2872 return { 2873 id: this.currentVariant.id, 2874 groupId: this.groupId, 2875 productId: this.product.id, 2876 title: this.product.title, 2877 photo: this.currentVariant.imgUrl || this.featuredImage.large, 2878 quantity: this.quantity, 2879 price: this.currentVariant.price, 2880 variant: this.currentVariant, 2881 product: this.product 2882 } 2883 }, 2884 options: function() { 2885 return this.product.options; 2886 }, 2887 optionTypes: function() { 2888 2889 // å æ ¹æè¨å®çvariantsä¾æåº 2890 var self = this; 2891 2892 var option1 = []; 2893 var option2 = []; 2894 var option3 = [];
2895 this.product.variants.forEach(function(item) { 2896 if (item.option1 !== null) { 2897 option1.push(item.option1); 2898 } 2899 if (item.option2 !== null) { 2900 option2.push(item.option2); 2901 } 2902 if (item.option3 !== null) { 2903 option3.push(item.option3); 2904 } 2905 }) 2906 var filteredOptionTypes = []; 2907 this.product.optionTypes.forEach(function(item, index) { 2908 filteredOptionTypes.push(self.getUniqueVariant(eval('option' + ( 2909 index + 1 2910 ))).join(',')); 2911 }); 2912 return filteredOptionTypes; 2913 }, 2914 optionInfo: function() { 2915 var self = this; 2916 2917 return self.options.map(function(option, index) { 2918 return { 2919 name: option, 2920 types: self.getOptions('option' + ( 2921 index + 1 2922 ), self.optionTypes[index].split(',')) 2923 } 2924 }); 2925 }, 2926 hasVariant: function() { 2927 return this.product.options.length > 0; 2928 }, 2929 shouldHideSingleVariantOptions: function() { 2930 return this.hasHideSingleVariantOptionsPlugin && 2931 this.product.variants && 2932 this.product.variants.length <= 1; 2933 }, 2934 variantSize: function() { 2935 if(this.product.options){ 2936 return this.product.options.length; 2937 } 2938 }, 2939 firstVariant: function() { 2940 return this.product.variants[0]; 2941 }, 2942 firstCheapestVariant: function() { 2943 return this.product.variants.find((v)=> (v.price === this.priceStats.minPrice)); 2944 }, 2945 priceStats: function() { 2946 return this.product.variants.reduce(function(acc, variant) { 2947 return { 2948 minPrice: variant.price < acc.minPrice ? variant.price : acc.minPrice, 2949 maxPrice: variant.price > acc.maxPrice ? variant.price : acc.maxPrice, 2950 }; 2951 }, { 2952 minPrice: this.firstVariant.price, 2953 maxPrice: this.firstVariant.price, 2954 }); 2955 }, 2956 hidePrice: function() { 2957 return this.product && this.product.hidePrice === true; 2958 }, 2959 salesModePurchasable: function() { 2960 return !(this.product && this.product.salesModePurchasable === false); 2961 }, 2962 // - 任鏿æ£ï¼ç´ é ç¶ ï¼ã鏿ãåªæ¯å é²è©¦ç®æ¸ å®ï¼ä¸æç´æ¥ä¸å®ï¼æ åªæèå¹åå 2963 // - å ¶ä»æ å¢ï¼ååé ã群çµé ãå¤å±¤ç´åé¡ãæå°ãé¦é åååå¡ï¼ï¼ä¸å¯è³¼è²·ï¼å«èå¹ï¼å°±æ´çµæ¶æ 2964 showPurchaseControls: function() { 2965 if (this.isNnCollection || this.isBundleDiscount) { 2966 return !this.hidePrice; 2967 } 2968 return this.salesModePurchasable; 2969 }, 2970 variantPrice: function() { 2971 if (this.hidePrice) { 2972 return ''; 2973 } 2974 var from = liquidHelper.defaultCurrency; 2975 if (this.currentVariant) { 2976 return moneySymbol(this.currentVariant.price, from); 2977 } 2978 if (this.product.variants.length === 1) { 2979 return moneySymbol(this.firstVariant.price, from); 2980 } 2981 2982 var minPrice = this.priceStats.minPrice; 2983 var maxPrice = this.priceStats.maxPrice; 2984 2985 if (minPrice !== maxPrice && (!this.hasVariantPriceRangePlugin || this.isDisplayPriceRange)) { 2986 this.isDiscountPrice = false; 2987 return moneySymbol(minPrice, from) + '~' + moneySymbol(maxPrice, from); 2988 } else { 2989 return moneySymbol(minPrice, from); 2990 } 2991 }, 2992 marketPrice: function() { 2993 if (this.hidePrice) { 2994 this.isDiscountPrice = false; 2995 return; 2996 } 2997 var from = liquidHelper.defaultCurrency; 2998 if (this.currentVariant) { 2999 this.isDiscountPrice = false; 3000 if (this.currentVariant.compareAtPrice && this.currentVariant.compareAtPrice > this.currentVariant.price) { 3001 this.isDiscountPrice = true; 3002 return moneySymbol(this.currentVariant.compareAtPrice, from); 3003 } 3004 } else { 3005 if (!_.includes(this.variantPrice, '~')) { 3006 const price = Number(this.variantPrice.replace(/[^0-9.
3006-]/g, "")) 3007 // æªé¸ææ¬¾å¼ä¹ä¸é¡¯ç¤ºåéæï¼é¡¯ç¤ºç¬¬ä¸åæä¾¿å®ç款å¼çå®å¹ 3008 if (this.firstCheapestVariant.compareAtPrice && this.firstCheapestVariant.compareAtPrice > price){ 3009 this.isDiscountPrice = true; 3010 return moneySymbol(this.firstCheapestVariant.compareAtPrice, from); 3011 } 3012 // æªé¸ææ¬¾å¼æè¦æ¹åä¸è¬å¹æ ¼é¡è² 3013 this.isDiscountPrice = false; 3014 } 3015 } 3016 }, 3017 isShowDropdownList: function() { 3018 if (this.product.options.length > 0) { 3019 return true; 3020 } 3021 return this.product.variants.length > 1 3022 }, 3023 priceTitleTag: function() { 3024 return this.marketPrice 3025 ? getDiscountPriceName() 3026 : getDiscountPriceSuggestionName(); 3027 }, 3028 isHideAddCartBtn: function() { 3029 if (this.addCartText === 'å·²å®å®') { 3030 return true; 3031 } 3032 return false; 3033 }, 3034 isSecondaryBtn: function() { 3035 if (this.addCartText === 'è¯çµ¡åºå®¶') { 3036 return true; 3037 } 3038 return false; 3039 }, 3040 variantsMaxUsableBonus: function() { 3041 var variants = this.product.variants; 3042 var maxUsableBonusArray = variants.map(function(item) { 3043 return item.maxUsableBonus 3044 }); 3045 return Math.max.apply(null, maxUsableBonusArray); 3046 }, 3047 bonusToPrice: function() { 3048 const bonus = this.currentVariant 3049 ? this.currentVariant.maxUsableBonus 3050 : this.maxUsableBonus; 3051 const price = Math.floor(bonus / window.liquidHelper.conversionBonus); 3052 const priceWithMoney = window.themeHelper.productDisplayCurrencyBlock(price); 3053 return "(ç´çæ¼ value )".replace('value', priceWithMoney); 3054 }, 3055 isMobileSize: function() { 3056 return window.innerWidth <= 580 3057 }, 3058 limitBuyText: function () { 3059 const minCount = this.product.minBuy; 3060 const maxCount = this.product.limitBuy; 3061 if (minCount > 0 && maxCount > 0) { 3062 return 'æ¤å忝çè¨å®æå°é購買 minCount ä»¶ï¼æå¤å¯è³¼è²· maxCount ä»¶'.replace('minCount', minCount).replace('maxCount', maxCount); 3063 } 3064 if (minCount > 0) { 3065 return 'æ¤å忝çè¨å®æå°é購買 minCount ä»¶'.replace('minCount', minCount); 3066 } 3067 if (maxCount > 0) { 3068 return 'æ¤å忝çè¨å®æå¤å¯è³¼è²· maxCount ä»¶'.replace('maxCount', maxCount); 3069 } 3070 return ''; 3071 } 3072 }, 3073 methods: { 3074 onClickSelectModal: function(objData, selectOptionStr) { 3075 this.isModalSelectShow = true; 3076 this.modalOption = objData; 3077 this.selectOption = selectOptionStr 3078 this.selectCurrentStr = this.currentOption && (String(this.currentOption[selectOptionStr]) || null) 3079 }, 3080 onChangeModalSelect: function(flag, isSelect) { 3081 if(!isSelect){ 3082 this.setOption(this.selectOption,this.selectCurrentStr,this.modalOption.types) 3083 } 3084 this.isModalSelectShow = flag; 3085 }, 3086 setOption: function(optionKey, type, dataArr) { 3087 let flag = true 3088 dataArr.forEach(item => { 3089 if (item.name === type) { 3090 flag = item.isValid 3091 } 3092 }) 3093 if (flag) { 3094 this.toggleCurrentOption(optionKey, type) 3095 } 3096 }, 3097 addToWishListEvent: function() { 3098 try { 3099 if (appMarketAddToWishListEvent) { 3100 var product = this.product; 3101 var currentVariant = this.currentVariant 3102 var element = $(`.btn[data-id=${product.id}]`); 3103 var index; 3104 var listName; 3105 if (element) { 3106 index = element.data('position') 3107 listName = element.data('list') 3108 } 3109 // sku_properties:é¸ä¸æ¬¾å¼ç option pairs(ç¶åèªç³»),é¡åå zip å¼ 3110 var optionValues = [currentVariant.option1, currentVariant.option2, currentVariant.option3]; 3111 var properties = [];
3112 (product.options || []).forEach(function(optionName, i) { 3113 if (optionName && optionValues[i]) { 3114 properties.push({ name: optionName, value: optionValues[i] }); 3115 } 3116 }); 3117 var dataSet = { 3118 name: product.title, 3119 category: product.productType, 3120 categories: (this.categories && this.categories.length) ? this.categories : (categoryLevels.length ? categoryLevels : (product.id === pageMainProductId ? productCategoryLevels : undefined)), 3121 sku: currentVariant.sku, 3122 price: currentVariant.price, 3123 compare_at_price: currentVariant.compareAtPrice, 3124 properties: properties, 3125 quantity: currentVariant.inventoryQuantity, 3126 variant: currentVariant.title, 3127 listName: listName || null, 3128 productId: product.id, 3129 variantId: currentVariant.id, 3130 index: Number(index) || 0, 3131 } 3132 appMarketAddToWishListEvent(dataSet) 3133 } 3134 } catch (e) { 3135 console.error(e) 3136 } 3137 }, 3138 addWishList: function() { 3139 if (this.currentVariant === null) { 3140 window.msg('è«é¸æå忬¾å¼', 'warning').show(); 3141 return; 3142 } 3143 var productVariantId = this.currentVariant.id; 3144 var addToWishListEvent = this.addToWishListEvent 3145 $.ajax({ 3146 method: 'POST', 3147 url: '/tracking_items', 3148 dataType: 'json', 3149 data: { 3150 product_variant_id: productVariantId 3151 }, 3152 success: function(response) { 3153 if (response.message) { 3154 window.msg(response.message, 'success').show(); 3155 addToWishListEvent() 3156 } 3157 3158 if (response.error) { 3159 window.msg(response.error, 'error').show(); 3160 3161 } 3162 if (response.info) { 3163 window.msg(response.info, 'info').show(); 3164 } 3165 if (response.success === false) { 3166 if (window.liquidHelper && window.liquidHelper.language && window.liquidHelper.language.handle) { 3167 window.location = "/" + window.liquidHelper.language.handle + "/account/login"; 3168 } else { 3169 window.location = "/account/login"; 3170 } 3171 } 3172 } 3173 }); 3174 }, 3175 setChoose: function(currentVariant) { 3176 this.maxUsableBonus = 0; 3177 var quantity = 1; 3178 var cartItem = null; 3179 if (!this.isNnCollection && this.cartItems) { 3180 cartItem = this.normalGetChoosenItem(currentVariant); 3181 } 3182 if (this.isNnCollection) { 3183 cartItem = this.nnCollectionGetChoosenItem(currentVariant); 3184 } 3185 this.isChoose = !! cartItem; 3186 if (this.isNewNnCollection) { 3187 return 3188 } 3189 this.quantity = cartItem 3190 ? cartItem.quantity 3191 : this.quantity; 3192 3193 // product modal è¯çµ¡åºå®¶æ å¢ 3194 if (currentVariant) { 3195 var photoIndex = 0; 3196 if (! currentVariant.imgUrl) { 3197 currentVariant.imgUrl = this.swiperPhotos.length > 0 3198 ? (this.swiperPhotos[photoIndex] && this.swiperPhotos[photoIndex].large) 3199 : this.featuredImage.large; 3200 } 3201 currentVariant.productTitle = this.product.title + ' - ' + this.currentVariant.title; 3202 } 3203 }, 3204 normalGetChoosenItem: function(currentVariant) { 3205 return this.cartItems.find(function(cartItem) { 3206 return currentVariant && cartItem.id === currentVariant.id; 3207 }); 3208 }, 3209 nnCollectionGetChoosenItem: function(currentVariant) { 3210 var isSelected = null; 3211 if (! currentVariant) { 3212 return isSelected; 3213 } 3214 if (this.isNewNnCollection) { 3215 var cart = store.get(`SpecialCollectionCart_${this.collectionId}`); 3216 isSelected = cart && cart.find((item) => item.variant_id == currentVariant.id) || null; 3217 } else { 3218 store.each(function(value, key) { 3219 var productId = _.includes(key, 'Pro' + currentVariant.productId); 3220 var variantID = _.includes(key, 'Var' + currentVariant.id); 3221 if (productId && variantID) { 3222 isSelected = store.get(key); 3223 } 3224 }); 3225 } 3226 3227 return isSelected; 3228 }, 3229 // get product detail 3230 getProductDetail: function() { 3231 var self = this; 3232 3233 $.ajax({ 3234 url: self.productUrl + '.json', 3235 type: 'GET', 3236 timeout: 30000, 3237 beforeSend: function() { 3238 self.isLoading = true; 3239 }, 3240 error: function(xhr) { 3241 self.closeModal(); 3242 if (xhr.status === 429) { 3243 window.showAddCartRateLimitModal(5); 3244 return; 3245 } 3246 window.msg('網路é£ç·ç°å¸¸ï¼è«éæ°æ´ç', 'error').show(); 3247 } 3248 }).done(function(data) { 3249 if (data.id) { 3250 var productData = [themeHelper.toCamelCase(data)]; 3251 self.product = themeHelper.priceWithDiscount(productData, liquidHelper.hasPriceWithDiscountPlugin)[0]; 3252 self.maxUsableBonus = self.variantsMaxUsableBonus; 3253 if (self.product.variants.length === 1 || liquidHelper.isFirstVariantSelected || self.selectedVariantId) { 3254 self.currentVariant = self.firstValidVariant; 3255 // 妿已ç¶èªé¸ååï¼åååé 䏿»å å ¥è³¼ç©è»é¡¯ç¤ºèªé¸åå 3256 if (self.selectedVariantId) { 3257 self.currentVariant = self.selectedValidVariant; 3258 } 3259 if (self.currentVariant) { 3260 self.setChoose(self.currentVariant); 3261 self.setDefaultOption(); 3262 } 3263 } 3264 if (self.displayProductDiscountsList) { 3265 self.setUpDiscountsTag(data); 3266 } 3267 self.isLoading = false;
3268 if (self.product && self.product.variants) { 3269 self.product.variants.forEach(function(discountedVariant) { 3270 var rawVariant = data.variants.find(function(v) { return v.id === discountedVariant.id; }); 3271 if (rawVariant) { rawVariant.price = discountedVariant.price; } 3272 }); 3273 } 3274 viewItem && viewItem(data, { collectionId: '', collectionName: null, categories: (self.categories && self.categories.length) ? self.categories : (categoryLevels.length ? categoryLevels : (data.id === pageMainProductId ? productCategoryLevels : undefined)) }); 3275 3276 (function() { 3277 // Read login status from cacheable, skip GET /pv_notification if not login. 3278 if (window.store && window.store.get('customer')) { 3279 var cacheableCustomer = window.store.get('customer'); 3280 if (cacheableCustomer.notLogin) { 3281 return; 3282 } 3283 } 3284 $.ajax({ 3285 url: '/pv_notification', 3286 method: 'GET', 3287 dataType: 'json', 3288 data: { 3289 product_id: parseInt(data.id) 3290 }, 3291 success: function(response) { 3292 self.variantNotifications = response.variants; 3293 } 3294 }) 3295 })(); 3296 } else { 3297 window.msg('網路é£ç·ç°å¸¸ï¼è«éæ°æ´ç', 'error').show(); 3298 self.closeModal() 3299 } 3300 }) 3301 }, 3302 // product image btn 3303 photoOnChange: function(photoIndex, isVariantReposition) { 3304 var visiblePhotos = (this.currentVariant && this.currentVariant.photos.length) 3305 ? this.currentVariant.photos 3306 : this.product.photos.map(function(p) { return p.photo; }); 3307 var result = themeHelper.buildNavigateItemImagePayload(this._navState, { 3308 product: this.product, 3309 currentVariant: this.currentVariant, 3310 visiblePhotos: visiblePhotos, 3311 slideIndex: photoIndex, 3312 videoOffset: this.firstImageIndex, 3313 }); 3314 this._navState = result.nextState; 3315 if (result.payload && !isVariantReposition) { 3316 window.navigateItemImage(result.payload); 3317 } 3318 this.currentImageIndex = photoIndex; 3319 }, 3320 toggleCurrentOption: function(key, value) { 3321 this.currentOption[key] = 3322 (this.currentOption[key] === value || value === 'null') ? null : value; 3323 var variantIndex = this.getVariantIndex(); 3324 if (variantIndex !== -1) { 3325 this.currentVariant = this.product.variants[variantIndex]; 3326 } else { 3327 this.currentVariant = null; 3328 } 3329 this.setChoose(this.product.variants[variantIndex]); 3330 if (this.currentOption[key] !== null) { 3331 var optionIndex = parseInt(key.replace('option', '')) - 1; 3332 appStoreSelectItemEvent(this.product, this.product.options[optionIndex], this.currentOption[key], this.currentVariant); 3333 } 3334 }, 3335 toggleNotification: function() { 3336 var self = this; 3337 var variantId = this.currentVariant.id; 3338 3339 $.ajax({ 3340 url: '/toggle_pv_notification', 3341 method: 'POST', 3342 dataType: 'json', 3343 data: { 3344 product_variant_id: variantId 3345 }, 3346 success: function(response) { 3347 self.variantNotifications[variantId] = response.notice; 3348 window.msg(response.message, "success").show(); 3349 }, 3350 error: function(xhr) { 3351 var response = xhr.responseJSON; 3352 var msg = response && response.error || "網路é£ç·ç°å¸¸ï¼è«éæ°æ´ç"; 3353 window.msg(msg, "error").show(); 3354 } 3355 }) 3356 }, 3357 getOptionImageIndex: function(index) { 3358 this.currentImageIndex = index; 3359 }, 3360 quantityDecrease: function() { 3361 if (this.cartItem) { 3362 themeHelper.EventBus.$emit('quantityDecrease', this.cartItem, false); 3363 this.quantity = this.cartItem.quantity 3364 } else { 3365 window.msg("è«é¸æå忬¾å¼", 'warning').show(); 3366 } 3367 }, 3368 quantityIncrease: function() { 3369 if (this.cartItem) { 3370 themeHelper.EventBus.$emit('quantityIncrease', this.cartItem, false); 3371 this.quantity = this.cartItem.quantity 3372 } else { 3373 window.msg("è«é¸æå忬¾å¼", 'warning').show(); 3374 } 3375 }, 3376 quantityChange: function(el) { 3377 if (this.cartItem) { 3378 themeHelper.EventBus.$emit('quantityChange', parseInt(el.target.value), this.cartItem, false); 3379 this.quantity = this.cartItem.quantity; 3380 el.target.value = this.cartItem.quantity; 3381 } else { 3382 window.msg("è«é¸æå忬¾å¼", 'warning').show(); 3383 } 3384 }, 3385 addProduct: function() { 3386 if (this.addCartText === 'è¯çµ¡åºå®¶') { 3387 $('#messagebuy-Modal').data('variant', this.currentVariant); 3388 $('#messagebuy-Modal').modal('show'); 3389 $('#messagebuy-Modal').css("background-color", "rgba(0, 0, 0, .6)"); 3390 } else if ( 3391 this.addCartText === 'å·²ç»è¨è£è²¨éç¥' || 3392 this.addCartText === 'å·²å®å®ï¼è²¨å°éç¥æ' 3393 ) { 3394 this.toggleNotification(); 3395 } else { 3396 if (this.cartItem) { 3397 try { 3398 if (this.isChoose) { 3399 themeHelper.EventBus.$emit('updateStore', 'update', this.cartItem, this.callBack) 3400 } else { 3401 themeHelper.EventBus.$emit('updateStore', 'add', this.cartItem, this.callBack) 3402 } 3403 3404 this.adding = true; 3405 this.closeModal(); 3406 } catch (e) { 3407 window.msg("å忬¾å¼ç°å¸¸", 'error').show(); 3408 } 3409 } else { 3410 window.msg("è«é¸æå忬¾å¼", 'warning').show(); 3411 } 3412 } 3413 }, 3414 closeModal: function() { 3415 themeHelper.EventBus.$emit('closeProductModal'); 3416 }, 3417 setDefaultOption: function() { 3418 var self = this; 3419 Object.keys(self.currentOption).map(function(optionKey) { 3420 self.currentOption[optionKey] = self.currentVariant[optionKey]; 3421 }); 3422 }, 3423 getVariantIndex: function() { 3424 var self = this; 3425 return self.product.variants.findIndex(function(variant, index) { 3426 var isVariant = true;
3427 Object.keys(self.currentOption).forEach(function(option) { 3428 if (variant[option] !== self.currentOption[option]) { 3429 isVariant = false; 3430 } 3431 }); 3432 return isVariant; 3433 }); 3434 }, 3435 3436 // 篩é¸éè¤åé 3437 getUniqueVariant: function(variants) { 3438 return variants.filter(function(value, index, self) { 3439 return self.indexOf(value) === index; 3440 }); 3441 }, 3442 groupBy(xs, key) { 3443 return xs.reduce(function(rv, x) { 3444 (rv[x[key]] = rv[x[key]] || []).push(x); 3445 return rv; 3446 }, {}); 3447 }, 3448 setUpDiscountsTag(data) { 3449 var self = this; 3450 var languagePrefix = '/' + ((window.shopScriptHelper && window.shopScriptHelper.i18nLocale) || 'zh-TW'); 3451 $.ajax({ 3452 url: languagePrefix + self.productUrl + '/discounts_list', 3453 method: 'GET', 3454 success: function(result) { 3455 if (result.length > 0) { 3456 var discounts_list = self.groupBy(result, 'campaign_type'); 3457 self.discountsList = discounts_list; 3458 } else { 3459 self.discountsList = null; 3460 } 3461 } 3462 }); 3463 }, 3464 getOptions: function(optionKey, optionTypes) { 3465 var self = this; 3466 return optionTypes.map(function(optionType, index) { 3467 var isValid = true; 3468 3469 // é¸åºå å«ç®åtypeçvariant 3470 var matchVariants = self.product.variants.filter(function(variant) { 3471 return variant[optionKey] === optionType; 3472 }); 3473 3474 // 篩é¸å·²å¾é¸type 3475 Object.keys(self.currentOption).forEach(function(currentOptionKey) { 3476 if (currentOptionKey !== optionKey) { 3477 matchVariants = matchVariants.filter(function(variant) { 3478 if (self.currentOption[currentOptionKey]) { 3479 return variant[currentOptionKey] === self.currentOption[currentOptionKey] 3480 } else { 3481 return true; 3482 } 3483 }); 3484 } 3485 }); 3486 if (matchVariants.length === 0) { 3487 isValid = false; 3488 } 3489 if (! self.isEmptyClickable) { 3490 isValid = false; 3491 matchVariants.find(function(item) { 3492 if (item.inventoryQuantity === null || item.inventoryQuantity > 0 || item.inventoryPolicy === 'continue') { 3493 isValid = true; 3494 } 3495 }); 3496 } 3497 return {name: optionType, isValid: isValid} 3498 }); 3499 } 3500 } 3501 }; 3502 }); 3503</script>
3503 3504 3505<!-- cyb_snippet _product_modal_js end --> 3506 3507<!-- cyb_snippet components/product_modal/product_modal end --> 3508 3509<!-- cyb_snippet messagebuy_modal start --> 3510 3511 3512<!-- cyb_snippet messagebuy_modal end --> 3513<!-- cyb_snippet components/rate_limit_modal start --> 3514<link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/rate_limit_modal-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' /> 3515 3516<div class="modal fade" id="rate-limit-modal" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="static" data-keyboard="false"> 3517 <div class="modal-dialog modal-dialog-centered" role="document"> 3518 <div class="modal-content"> 3519 <div class="modal-body"> 3520 <div class="qk-text--default_dark rate-limit-text"> 3521 <p id="rate-limit-title">ç®åæ¶è³¼äººæ½®ç¾å¤ï¼è«èå¿çå</p> 3522 <p class="qk-fs--body qk-fw--500 rate-limit-message"> 3523 <span class="qk-text--error" id="rate-limit-countdown"></span> 3524 <span id="rate-limit-desc"></span> 3525 </p> 3526 <p class="qk-fs--body qk-fw--500 rate-limit-message" id="rate-limit-warn">è¥é¢éæ¤é é¢ï¼å¯è½æå»¶é·çå¾ æéã</p> 3527 </div> 3528 <button id="rate-limit-btn" class="btn qk-btn qk-btn--primary" disabled>éæ°é²å ¥ååé </button> 3529 </div> 3530 </div> 3531 </div> 3532</div> 3533
3534<script> 3535 window.showRateLimitModal = function(countdownSec) { 3536 var countdown = countdownSec || 5; 3537 var $modal = $('#rate-limit-modal'); 3538 var $btn = $modal.find('#rate-limit-btn'); 3539 var $countdownEl = $modal.find('#rate-limit-countdown'); 3540 3541 $btn.show(); 3542 $modal.find('#rate-limit-desc').text(language["product_rate_limit_desc"]); 3543 $countdownEl.text(countdown); 3544 $btn.prop('disabled', true); 3545 $modal.modal('show'); 3546 3547 var timer = setInterval(function() { 3548 countdown--; 3549 $countdownEl.text(countdown); 3550 if (countdown <= 0) { 3551 clearInterval(timer); 3552 $btn.prop('disabled', false); 3553 } 3554 }, 1000); 3555 3556 $btn.off('click').on('click', function() { 3557 location.reload(); 3558 }); 3559 } 3560 3561 window.showAddCartRateLimitModal = function(countdownSec) { 3562 var countdown = countdownSec || 5; 3563 var $modal = $('#rate-limit-modal'); 3564 var $countdownEl = $modal.find('#rate-limit-countdown'); 3565 3566 $modal.find('#rate-limit-btn').hide(); 3567 $modal.find('#rate-limit-desc').text(language["addcart_rate_limit_desc"]); 3568 $countdownEl.text(countdown); 3569 $modal.modal('show'); 3570 3571 var timer = setInterval(function() { 3572 countdown--; 3573 $countdownEl.text(countdown); 3574 if (countdown <= 0) { 3575 clearInterval(timer); 3576 $modal.modal('hide'); 3577 } 3578 }, 1000); 3579 } 3580</script>
3580 3581 3582<!-- cyb_snippet components/rate_limit_modal end --> 3583
3584<script> 3585 $(document).ready(function() { 3586 const shouldSkipQuantityCheck = false; 3587 const newAddCartModalApp = new window.themeHelper.LiquidVueHandler({ 3588 componentNames: Object.keys(window.themeHelper.productModalComponents), 3589 mountSelector: '#new-addcart-modal', 3590 autoMount: false, 3591 }); 3592 3593 newAddCartModalApp.createApp({ 3594 el: '#new-addcart-modal', 3595 delimiters: ['${', '}'], 3596 data() { 3597 return { 3598 collectionId: 0, 3599 categories: [], 3600 color: '', // unused 3601 isCollection: true, 3602 productQuantity: 0, 3603 onlyDescription: false, 3604 showProductModal: false, 3605 popProductUrl: '', 3606 loading: false, 3607 }; 3608 }, 3609 mounted: function() { 3610 themeHelper.EventBus.$on('closeProductModal',this.closeProductModal); 3611 themeHelper.EventBus.$on('updateStore', this.addProduct); 3612 themeHelper.EventBus.$on('quantityDecrease', this.quantityDecrease); 3613 themeHelper.EventBus.$on('quantityIncrease', this.quantityIncrease); 3614 themeHelper.EventBus.$on('quantityChange', this.quantityChange); 3615 }, 3616 methods: { 3617 addProduct: function(actionType, productData, checkoutAddToCartCallback){ 3618 var self = this; 3619 var pageViewId = window.CYBERBIZ && window.CYBERBIZ.dis && window.CYBERBIZ.dis.pageViewId; 3620 $.ajax({ 3621 method: 'POST', 3622 url: '/cart/add', 3623 headers: pageViewId ? { 'X-Cyb-Page-View-Id': pageViewId } : {}, 3624 data: { 3625 id: productData.id, 3626 quantity: productData.quantity, 3627 }, 3628 dataType: 'json', 3629 beforeSend: function() { 3630 self.loading = true; 3631 themeHelper.ajaxLoadingMsg('loading'); 3632 $('.shopcart').dropdown('hide') 3633 $('.global-cart-count').hide(); 3634 $('.global-cart-loading').show(); 3635 $('.global-cart-loading').html('<i class="fa fa-spinner fa-pulse" style="vertical-align: middle;"></i>'); 3636 }, 3637 error: function(xhr) { 3638 $('.global-cart-loading').hide(); 3639 $('.global-cart-count').show(); 3640 self.loading = false; 3641 if (xhr.status === 429) { 3642 themeHelper.ajaxLoadingMsg('hide', 0); 3643 self.closeProductModal(); 3644 window.showAddCartRateLimitModal(5); 3645 return; 3646 } 3647 themeHelper.ajaxLoadingMsg('fail', 2000); 3648 } 3649 }).done(function(data, status, request){ 3650 // product modal ç«å³è³¼è²·æé 3651 window.sendAddToCartEvent && sendAddToCartEvent({ 3652 price: productData.price, 3653 quantity: productData.quantity, 3654 id: productData.product.id, 3655 name: productData.product.title, 3656 category: productData.product.productType, 3657 brand: productData.product.vendor, 3658 qc: productData.variant.qc, 3659 variant: { 3660 id: productData.variant.id, 3661 title: productData.variant.title, 3662 sku: productData.variant.sku, 3663 price: productData.variant.price, 3664 qc: productData.variant.qc, 3665 }, 3666 position: "ååå½åºè¦çª", 3667 request, 3668 }) 3669 if (self.isQuickBuy) { 3670 if (window.liquidHelper && window.liquidHelper.language && window.liquidHelper.language.handle) { 3671 window.location = "/" + window.liquidHelper.language.handle + "/cart"; 3672 } else { 3673 window.location = "/cart"; 3674 } 3675 } else { 3676 themeHelper.ajaxLoadingMsg('success'); 3677 pullNavCart(); 3678 $('.shopcart').dropdown('show') 3679 $('.global-cart-loading').hide(); 3680 self.loading = false; 3681 } 3682 if(typeof checkoutAddToCartCallback === 'function'){ 3683 var callbackData = { 3684 id: productData.id, 3685 quantity: productData.quantity, 3686 title: productData.product ? productData.product.title : productData.title || '' 3687 }; 3688 checkoutAddToCartCallback(callbackData) 3689 } 3690 peh.emit('product:add_to_cart', [{ 3691 variantId: productData.id, 3692 quantity: productData.quantity 3693 }], self.collectionId); 3694 }).fail(function(e){ 3695 if (e.status === 429) { 3696 return; 3697 } 3698 let err_msg = e.responseJSON.err_msg; 3699 err_msg && err_msg.length > 0 ? 3700 window.msg(e.responseJSON.err_msg, 'warning').show(): 3701 window.msg("å å ¥è³¼ç©è»æèª¤ï¼è«éæ°å試", 'warning').show(); 3702 }) 3703 }, 3704 quantityDecrease: function(cartItem, isAdded){ 3705 if (cartItem.quantity > 1) { 3706 cartItem.quantity -= 1; 3707 } else { 3708 window.msg("æ¸éä¸å¾çºä½æ¼ 1", 'warning').show(); 3709 } 3710 }, 3711 quantityIncrease: function(cartItem, isAdded){ 3712 const limitQuantity = cartItem.variant.inventoryQuantity; 3713 const limitBuy = cartItem.product.limitBuy 3714 if (limitBuy && cartItem.quantity >= limitBuy) { 3715 product_limit_buy = "æ¤ååéè³¼ limitBuy ä»¶".replace('limitBuy', limitBuy) 3716 window.msg(product_limit_buy, 'warning').show(); 3717 return; 3718 } else if (cartItem.quantity >= liquidHelper.cartQuantityLimit) { 3719 window.msg("æ¸éè¶ é購買ä¸é", 'warning').show(); 3720 } else if ( cartItem.quantity < limitQuantity || limitQuantity === null || 3721 cartItem.variant.inventoryPolicy == "continue" || shouldSkipQuantityCheck) { 3722 cartItem.quantity += 1; 3723 } else { 3724 this.showInventoryMessage(limitQuantity); 3725 } 3726 },
3727 quantityChange: function(quantity, cartItem, isAdded){ 3728 const limitBuy = cartItem.product.limitBuy 3729 var limitQuantity = cartItem.variant.inventoryQuantity; 3730 var inventoryPolicy = cartItem.variant.inventoryPolicy; 3731 if (Number.isInteger(quantity)) { 3732 if (quantity >= 1) { 3733 if (limitBuy && quantity >= limitBuy) { 3734 product_limit_buy = "æ¤ååéè³¼ limitBuy ä»¶".replace('limitBuy', limitBuy) 3735 window.msg(product_limit_buy, 'warning').show(); 3736 } else if (quantity > liquidHelper.cartQuantityLimit) { 3737 window.msg("æ¸éè¶ é購買ä¸é", 'warning').show(); 3738 } else if (quantity <= limitQuantity || limitQuantity === null || inventoryPolicy == "continue" || shouldSkipQuantityCheck) { 3739 cartItem.quantity = quantity; 3740 } else { 3741 cartItem.quantity = limitQuantity; 3742 this.showInventoryMessage(limitQuantity); 3743 } 3744 } else { 3745 window.msg("æ¸éä¸å¾çºä½æ¼ 1", 'warning').show(); 3746 } 3747 } else { 3748 window.msg("æ¸éè¼¸å ¥é¯èª¤", 'warning').show(); 3749 } 3750 }, 3751 popModal: function(productUrl, collectionId, color, isCollection, isShowDescription, isQuickBuy, variantId, checkoutAddToCartCallback, categories){ 3752 this.showProductModal = true; 3753 this.collectionId = collectionId; 3754 this.categories = categories || []; 3755 this.popProductUrl = productUrl; 3756 this.color = color || ''; // unused 3757 this.isCollection = isCollection || false; 3758 this.isShowDescription = isShowDescription != false; 3759 this.isQuickBuy = isQuickBuy || false; 3760 this.selectedVariantId = parseInt(variantId) || undefined; 3761 this.checkoutAddToCartCallback = checkoutAddToCartCallback; 3762 document.body.style.overflow = "hidden"; 3763 }, 3764 closeProductModal: function() { 3765 this.showProductModal = false; 3766 document.body.style.overflow = ""; 3767 }, 3768 showInventoryMessage: function(inventoryQuantity) { 3769 const stockMessage = "åå庫åå©é¤ count ä»¶".replace('count', inventoryQuantity || 0); 3770 window.msg(stockMessage, 'warning').show(); 3771 }, 3772 } 3773 }); 3774 3775 for (const componentName in window.themeHelper.productModalComponents) { 3776 newAddCartModalApp.component( 3777 componentName, 3778 window.themeHelper.productModalComponents[componentName], 3779 ); 3780 } 3781 3782 window.new_addcart_modal = newAddCartModalApp.mount(); 3783 }); 3784</script>
3784 3785 3786<!-- cyb_snippet new_addcart_modal end --> 3787
3787<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/new_cart-4a1e7dfec7e41476.js' type='text/javascript'></script>
3787 3788 3789</div> 3790 3791 </div> 3792 3793 <!-- Footer --> 3794 3795 3796 3797 3798 3799 3800 3801<style> 3802 3803 3804 @media(min-width: 991px) { 3805 .display_x .left-content > div { 3806 max-width: calc(100% / 3); 3807 } 3808 } 3809</style> 3810 3811<div id="index-recommendation"></div> 3812 3813<footer id="footer" class="qk-fs--body qk-bg--footer_bg"> 3814 3815 3816 <div class="qk-container display_x"> 3817 <div class="footer_content qk-mg--0 qk-display--flex qk-justify--between"> 3818 <div class="left-content qk-flex--1"> 3819 3820 3821 <div class="link-list-container"> 3822 3823 <p class="footer_title qk-fs--title qk-text--footer_text">é¿çè´ç²©å°è³£åº</p> 3824 3825 <div class="item horizontal qk-text--left"> 3826 <ul class="qk-display--flex qk-flex--wrap"> 3827 3828 3829 <li class="qk-display--il_bk"> 3830 3831 <a 3832 class="qk-text--footer_text" 3833 href="/pages/éæ¼é¿ç-20230914160358" 3834 rel="noopener noreferrer" 3835 target="_blank">éæ¼æå</a> 3836 3837 </li> 3838 3839 <li class="qk-display--il_bk"> 3840 3841 <a 3842 class="qk-text--footer_text" 3843 href="/pages/about-us" 3844 rel="noopener noreferrer" 3845 target="_blank">交éè³è¨</a> 3846 3847 </li> 3848 3849 <li class="qk-display--il_bk"> 3850 3851 <a 3852 class="qk-text--footer_text" 3853 href="/pages/ï½ï¼ï½" 3854 rel="noopener noreferrer" 3855 target="_blank">ï¼±ï¼ï¼¡</a> 3856 3857 </li> 3858 3859 <li class="qk-display--il_bk"> 3860 3861 <a 3862 class="qk-text--footer_text" 3863 href="/blogs/åªé«å ±å°" 3864 rel="noopener noreferrer" 3865 target="_blank">åªé«å ±å°</a> 3866 3867 </li> 3868 3869 <li class="qk-display--il_bk"> 3870 3871 <a 3872 class="qk-text--footer_text" 3873 href="/blogs/è£½ä½æµç¨" 3874 rel="noopener noreferrer" 3875 target="_blank">è£½ä½æµç¨</a> 3876 3877 </li> 3878 3879 <li class="qk-display--il_bk"> 3880 3881 <a 3882 class="qk-text--footer_text" 3883 href="/blogs/news" 3884 rel="noopener noreferrer" 3885 target="_blank">ææ°æ¶æ¯</a> 3886 3887 </li> 3888 3889 <li class="qk-display--il_bk"> 3890 3891 <a 3892 class="qk-text--footer_text" 3893 href="/pages/privacy" 3894 rel="noopener noreferrer" 3895 target="_blank">é±ç§æ¿ç</a> 3896 3897 </li> 3898 3899 <li class="qk-display--il_bk"> 3900 3901 <a 3902 class="qk-text--footer_text" 3903 href="https://drive.google.com/file/d/1fQTOqI428RYM0eI3Z-JfIaWMV9y7bg8z/view?usp=sharing" 3904 rel="noopener noreferrer" 3905 target="_blank">è¨è³¼å®ä¸è¼</a> 3906 3907 </li> 3908 3909 3910 </ul> 3911 </div> 3912 </div> 3913 3914 3915 3916 <div class="link-list-container"> 3917 3918 <p class="footer_title qk-fs--title qk-text--footer_text"></p> 3919 3920 <div class="item horizontal qk-text--left"> 3921 <ul class="qk-display--flex qk-flex--wrap"> 3922 3923 3924 <li class="qk-display--il_bk"> 3925 3926 <a 3927 class="qk-text--footer_text" 3928 href="/collections/è´ç²©é¡" 3929 rel="noopener noreferrer" 3930 target="_blank">è´ç²©é¡</a> 3931 3932 </li> 3933 3934 <li class="qk-display--il_bk"> 3935 3936 <a 3937 class="qk-text--footer_text" 3938 href="/collections/æµ·æ´é¢¨å³è´ç²©" 3939 rel="noopener noreferrer" 3940 target="_blank">æµ·æ´é¢¨å³è´ç²©</a> 3941 3942 </li> 3943 3944 <li class="qk-display--il_bk"> 3945 3946 <a 3947 class="qk-text--footer_text" 3948 href="/collections/é ¥çé¡" 3949 rel="noopener noreferrer" 3950 target="_blank">é ¥çé¡</a> 3951 3952 </li> 3953 3954 <li class="qk-display--il_bk"> 3955 3956 <a 3957 class="qk-text--footer_text" 3958 href="/collections/éº»è±æ²é¡" 3959 rel="noopener noreferrer" 3960 target="_blank">麻è±é¡</a> 3961 3962 </li> 3963 3964 <li class="qk-display--il_bk"> 3965 3966 <a 3967 class="qk-text--footer_text" 3968 href="/collections/禮ç" 3969 rel="noopener noreferrer" 3970 target="_blank">禮ç</a> 3971 3972 </li> 3973 3974 3975 </ul> 3976 </div> 3977 </div> 3978 3979 3980 3981 <div id="1686116321657_2" class="rich-text-editor-container qk-text--footer_text item qk-flex--1"> 3982 3983 <p class="footer_title qk-fs--title rich-text-editor-title">è¯çµ¡è³è¨</p> 3984 3985 <div class="rich-text-content-container"> 3986 <p>è¨è³¼å°ç· ï¼02-2408-1889ã02-2498-1189</p> 3987<p>å³ç ï¼02-2498-7588</p> 3988<p>ä¿¡ç®± ï¼[email protected]</p> 3989<p></p> 3990<p>éå±±èè¡é¿çè´ç²©ï¼ç¸½åºï¼<br>å°åï¼å°ç£æ°åå¸éå±±åéå éè¡65è</p> 3991<p>çæ¥æé</p> 3992<p>å¹³æ¥09ï¼00 - 18ï¼00</p> 3993<p>忥09ï¼00 - 20ï¼00</p> 3994<p></p> 3995<p>éå±±èè¡é¿çè´ç²©ï¼ä¸å±±åºï¼</p> 3996<p>å°åï¼æ°åå¸éå±±åä¸å±±è·¯110è</p> 3997<p>çæ¥æé</p> 3998<p>09ï¼00 - 21ï¼00</p> 3999 4000 </div> 4001 </div> 4002 4003 4004 </div> 4005 <div class="right-content qk-display--flex qk-flex--column"> 4006 4007 <div class="media qk-display--il"> 4008 <div class="item social_media qk-h--auto qk-float--l"> 4009 <ul> 4010 4011 <li class="qk-display--il_bk"> 4012 <a target="_blank" rel="noopener noreferrer" href="https://www.facebook.com/ayufoods/?locale=zh_TW"> 4013 <svg 4014 class="facebook-svg" 4015 xmlns="http://www.w3.org/2000/svg" 4016 width="40" 4017 height="40"
4018 viewBox="0 0 40 40"> 4019 <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" /> 4020 </svg> 4021 </a> 4022 </li> 4023 4024 4025 4026 4027 </ul> 4028 </div> 4029 </div> 4030 </div> 4031 </div> 4032 </div> 4033 4034 <div class="copyright qk-text--footer_text qk-bd--footer_text qk-text--left qk-bd_t--default"> 4035 <div class="qk-container container qk-fw--500"> 4036 <span>Copyright ©</span> 4037 <a class="qk-text--link" href="/"> 4038 <span>ayufoods</span> 4039 </a> 4040 <span>All Rights Reserved.</span> 4041 <span>Designed by 4042 </span> 4043 <a 4044 class="qk-text--link" 4045 href="https://www.cyberbiz.io?utm_source=poweredbycyberbiz" 4046 target="_blank" 4047 rel="noopener noreferrer" 4048 title="Designed by CYBERBIZ">CYBERBIZ</a>. 4049 </div> 4050 </div> 4051 4052</footer>
4053<script> 4054 $(document).ready(function() { 4055 let isDynamicLoading = false; 4056 4057 let menusData = { 4058 4059 4060 "é è ³ä¸»é¸å®_1": { 4061 4062 "type": "items", 4063 "data": [ 4064 4065 4066 4067 { 4068 "title": "éæ¼æå", 4069 "url": "/pages/éæ¼é¿ç-20230914160358", 4070 "item_type": "page" 4071 }, 4072 4073 { 4074 "title": "交éè³è¨", 4075 "url": "/pages/about-us", 4076 "item_type": "page" 4077 }, 4078 4079 { 4080 "title": "ï¼±ï¼ï¼¡", 4081 "url": "/pages/ï½ï¼ï½", 4082 "item_type": "page" 4083 }, 4084 4085 { 4086 "title": "åªé«å ±å°", 4087 "url": "/blogs/åªé«å ±å°", 4088 "item_type": "blog" 4089 }, 4090 4091 { 4092 "title": "è£½ä½æµç¨", 4093 "url": "/blogs/è£½ä½æµç¨", 4094 "item_type": "blog" 4095 }, 4096 4097 { 4098 "title": "ææ°æ¶æ¯", 4099 "url": "/blogs/news", 4100 "item_type": "blog" 4101 }, 4102 4103 { 4104 "title": "é±ç§æ¿ç", 4105 "url": "/pages/privacy", 4106 "item_type": "page" 4107 }, 4108 4109 { 4110 "title": "è¨è³¼å®ä¸è¼", 4111 "url": "https://drive.google.com/file/d/1fQTOqI428RYM0eI3Z-JfIaWMV9y7bg8z/view?usp=sharing", 4112 "item_type": "http" 4113 } 4114 4115 4116 ] 4117 4118 }, 4119 4120 4121 4122 "é è ³ä¸»é¸å®_2": { 4123 4124 "type": "items", 4125 "data": [ 4126 4127 4128 4129 { 4130 "title": "è´ç²©é¡", 4131 "url": "/collections/è´ç²©é¡", 4132 "item_type": "custom_collection" 4133 }, 4134 4135 { 4136 "title": "æµ·æ´é¢¨å³è´ç²©", 4137 "url": "/collections/æµ·æ´é¢¨å³è´ç²©", 4138 "item_type": "custom_collection" 4139 }, 4140 4141 { 4142 "title": "é ¥çé¡", 4143 "url": "/collections/é ¥çé¡", 4144 "item_type": "custom_collection" 4145 }, 4146 4147 { 4148 "title": "麻è±é¡", 4149 "url": "/collections/éº»è±æ²é¡", 4150 "item_type": "custom_collection" 4151 }, 4152 4153 { 4154 "title": "禮ç", 4155 "url": "/collections/禮ç", 4156 "item_type": "custom_collection" 4157 } 4158 4159 4160 ] 4161 4162 }, 4163 4164 4165 4166 4167 }; 4168 4169 if (isDynamicLoading) { 4170 window.DynamicLoading.setupComponent({ 4171 sectionId: '#footer', 4172 callbackData:{ 4173 section: {"type":"footer","visible":true,"settings":{"footer_link":"footer","display_facebook":true,"shop_facebook":"https://www.facebook.com/ayufoods/?locale=zh_TW","display_instagram":false,"shop_instagram":"https://www.instagram.com/?hl=zh-tw","display_line":false,"shop_line":"https://line.me/zh-hant/","display_youtube":false,"shop_youtube":"https://www.youtube.com/","footer_link_arrangement":"display_x"},"block_order":["default_link_list","1686193641937_0","default_contact_info","1686116321657_2"],"blocks":{"default_link_list":{"type":"link_list_setting","custom_name":"é¸å®","thumbnail":"list","draggable":true,"visible":true,"settings":{"dict_link_list_block_title":"é¿çè´ç²©å°è³£åº","footer_link":"é è ³ä¸»é¸å®_1"}},"default_contact_info":{"type":"contact_info_setting","custom_name":"è¯çµ¡è³è¨","thumbnail":"contactInfo","draggable":true,"visible":false,"settings":{"dict_contact_info_block_t
4173itle":"è¯çµ¡è³è¨","display_phone":"true","dict_phone_number":"0912345678","display_fax_number":"true","dict_shop_fax_number":"0222345678","display_shop_email":"true","dict_shop_email":"[email protected]","display_shop_address":"true","dict_shop_address":"測試å°å","display_office_time":"true","dict_shop_office_time":"10:00-17:00"}},"1686116321657_2":{"type":"rich_text_editor_setting","custom_name":"èªè¨æå","visible":true,"settings":{"dict_rich_text_title":"è¯çµ¡è³è¨","dict_rich_text_content":"\u003cp\u003eè¨è³¼å°ç· ï¼02-2408-1889ã02-2498-1189\u003c/p\u003e\n\u003cp\u003eå³ç ï¼02-2498-7588\u003c/p\u003e\n\u003cp\u003eä¿¡ç®± ï¼[email protected]\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n\u003cp\u003eéå±±èè¡é¿çè´ç²©ï¼ç¸½åºï¼\u003cbr\u003eå°åï¼å°ç£æ°åå¸éå±±åéå éè¡65è\u003c/p\u003e\n\u003cp\u003eçæ¥æé\u003c/p\u003e\n\u003cp\u003eå¹³æ¥09ï¼00 - 18ï¼00\u003c/p\u003e\n\u003cp\u003e忥09ï¼00 - 20ï¼00\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n\u003cp\u003eéå±±èè¡é¿çè´ç²©ï¼ä¸å±±åºï¼\u003c/p\u003e\n\u003cp\u003eå°åï¼æ°åå¸éå±±åä¸å±±è·¯110è\u003c/p\u003e\n\u003cp\u003eçæ¥æé\u003c/p\u003e\n\u003cp\u003e09ï¼00 - 21ï¼00\u003c/p\u003e\n"}},"1686193641937_0":{"type":"link_list_setting","custom_name":"é¸å®","visible":true,"settings":{"dict_link_list_block_title":"","footer_link":"é è ³ä¸»é¸å®_2"}}},"custom_name":"é è ³"}, 4174 shop: { 4175 name: 'ayufoods', 4176 cyberbiz_link: 'https://www.cyberbiz.io?utm_source=poweredbycyberbiz', 4177 facebook_fan_page: '', 4178 }, 4179 menus: menusData, 4180 is_display_facebook_fan_block: false 4181 }, 4182 entryName:'renderFooterSection', 4183 source:'//cdn1-next.cybassets.com/frontend/shop/footerSection-4a1e7dfec7e41476.js', 4184 }); 4185 } 4186 }); 4187</script>
4187 4188 4189<!-- cyb_snippet _tracking_code start --> 4190
4190<script> 4191 window.fbAsyncInit = function() { 4192 FB.init({ 4193 appId : '', 4194 xfbml : true, 4195 version : 'v24.0', 4196 }); 4197 }; 4198 (function(d, s, id){ 4199 var js, fjs = d.getElementsByTagName(s)[0]; 4200 if (d.getElementById(id)) {return;} 4201 js = d.createElement(s); 4202 js.id = id; 4203 js.src = 'https://connect.facebook.net/zh_TW/sdk.js'; 4204 fjs.parentNode.insertBefore(js, fjs); 4205 }(document, 'script', 'facebook-jssdk')); 4206 </script>
4206 4207 4208
4209<script> 4210 // for scupio 4211 if (document.querySelector("meta[name=\"scupio_mid\"]")) { 4212 mid = document.querySelector("meta[name=\"scupio_mid\"]").content; 4213 } else { 4214 mid = ""; 4215 } 4216 if (!window.is_scupio_sent && mid) { 4217 window._bwtm = window._bwtm || [] 4218 window._bwtm.push({ 4219 "mid": mid, 4220 "uid": "" 4221 }); 4222 } 4223</script>
4223 4224 4225<!-- cyb_snippet _tracking_code end --> 4226
4227<script> 4228 $(document).ready(function(){ 4229 if(window.location.pathname != '' && window.location.pathname != '/' ){ 4230 document.getElementById('index-recommendation').style.display = 'none' 4231 } 4232 }); 4233</script>
4233 4234 4235 4236 4237 <!-- Fast-Events --> 4238 <!-- cyb_snippet fast_events start --> 4239 4240
4241<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/fast_events-4a1e7dfec7e41476.js' type='text/javascript'></script>
4241 4242<link href='//cdn1-next.cybassets.com/frontend/shop/beta_theme/css/fast_events-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' /> 4243 4244<!-- cyb_snippet fast_events end --> 4245 4246 <div class="bottom-right qk-pos--fixed"> 4247 <!-- gototop --> 4248 <div id="gototop" class="qk-display--none qk-text--center"> 4249 <a href="javascript:void(0)" class="qk-circle qk-circle--lg qk-pos--relative qk-text--center"> 4250 <i class="fas fa-chevron-up"></i> 4251 </a> 4252 </div> 4253 4254 <!-- popup --> 4255 4256 4257 4258 4259<div id="popup-wrapper" class="qk-display--none"></div> 4260 4261<template id="popup-template"> 4262 <div 4263 :class="status" 4264 v-if="hasContent" 4265 id="popup-section" 4266 > 4267 <transition name="backdrop"> 4268 <div 4269 v-if="shouldShowPopup" 4270 @click.capture="minifyPopup" 4271 id="popup-backdrop" 4272 class="qk-w--100vw qk-h--100vh qk-pos--fixed qk-t--0 qk-l--0 qk-tst" 4273 > 4274 </div> 4275 </transition> 4276 <transition name="onShow"> 4277 <div 4278 @click.self="showPopup" 4279 @transitionstart="updateGameStatus('start', this)" 4280 @transitionend="updateGameStatus('end', this)" 4281 class="popup-content qk-display--flex qk-align--center qk-tst qk-tst_dur--30 qk-tst_timing--ease_o" 4282 > 4283 <div 4284 v-for="block in blocks" 4285 :key="block.id" 4286 :class="[block.type, minifiedBlockClasses, block.settings.icon_size]" 4287 class="block qk-tst qk-tst_dur--30 qk-tst_timing--ease_o qk-of--auto" 4288 > 4289 <div v-if="block.type === 'image'" class="qk-pos--rel"> 4290 <img 4291 v-show="!shouldShowPopup" 4292 :src="block.settings.dict_icon_image_url" 4293 class="qk-tst qk-tst_dur--30 qk-tst_timing--ease_o" 4294 alt="popup button" 4295 > 4296 <a 4297 v-show="shouldShowPopup" 4298 :href="block.settings.dict_link" 4299 :target="block.settings.target" 4300 :rel="block.settings.rel" 4301 class="qk-display--flex qk-align--center" 4302 @click="linkClicked" 4303 > 4304 <picture> 4305 <source :srcset="block.settings.dict_mobile_image_url" media="(max-width: 576px)"> 4306 <source :srcset="block.settings.dict_tablet_image_url" media="(max-width: 992px)"> 4307 <img 4308 :src="block.settings.dict_image_url" 4309 class="qk-tst qk-tst_dur--30 qk-tst_timing--ease_o" 4310 alt="popup picture" 4311 /> 4312 </picture> 4313 </a> 4314 </div> 4315 <div v-if="block.type === 'video'"> 4316 <iframe 4317 :src="block.settings.dict_video_link" 4318 frameborder="0" 4319 class="qk-center--y qk-w--100 qk-h--100" 4320 ></iframe> 4321 </div> 4322 <div v-if="block.type === 'game'"> 4323 <div v-show="gameStatus === 'show'" :class="{ 'show-game': gameStatus === 'show' }"> 4324 <iframe 4325 class="cb-game-iframe iframe-loading" 4326 :src="getGameIframeSrc(block)" 4327 style="border: none;" 4328 > 4329 Loading 4330 </iframe> 4331 </div> 4332 <div v-show="gameStatus === 'minified'"> 4333 <img 4334 src="//cdn1-next.cybassets.com/game_assets/game_minified_new.png" 4335 class="qk-h--100 qk-w--100" 4336 alt="game minified icon" 4337 /> 4338 </div> 4339 </div> 4340 <div 4341 v-if="block.type === 'carousel'" 4342 :id="`popup-carousel-${block.id}`" 4343 > 4344 </div> 4345 </div> 4346 </div> 4347 </transition> 4348 <transition name="backdrop"> 4349 <div 4350 v-if="shouldShowPopup" 4351 @click.capture="minifyPopup" 4352 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" 4353 > 4354 </div> 4355 </transition> 4356 </div> 4357</template> 4358
4359<script> 4360 $(document).ready(function() { 4361 const CDN_HOST = '//cdn1-next.cybassets.com'; 4362 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":"å½çªå»£å"}; 4363 var popupSection = Vue.createApp({ 4364 template: '#popup-template', 4365 delimiters: ['${', '}'], 4366 data() { 4367 const isOmniauthPage = ['omniauth_terms_agreement', 'omniauth_mobile/'] 4368 .some(path => location.pathname.includes(path)); 4369 return { 4370 status: 'minified', 4371 gameStatus: 'show', 4372 blocks: isOmniauthPage 4373 ? [] 4374 : section.block_order && section.block_order.reduce( 4375 function(acc, blockId) { 4376 const block = section.blocks[blockId]; 4377 if (block && block.visible) { 4378 acc.push({ 4379 ...block, 4380 id: blockId, 4381 }); 4382 } 4383 return acc; 4384 }, 4385 [], 4386 ), 4387 hasAddedGameScript: false, 4388 }; 4389 }, 4390 computed: { 4391 hasContent: function() { 4392 return !!(this.blocks && this.blocks.length > 0); 4393 }, 4394 minifiedBlockClasses: function() { 4395 return this.status === 'minified' ? 'qk-pointer--none qk-unselectable' : ''; 4396 }, 4397 shouldShowPopup: function() { 4398 return this.status === 'show'; 4399 } 4400 }, 4401 methods: { 4402 unhidePopup: function(storedStatus) { 4403 this.status = storedStatus; 4404 $('#popup-wrapper').removeClass('qk-display--none'); 4405 }, 4406 showPopup: function() { 4407 if (this.status !== 'show') { 4408 this.status = 'show'; 4409 this.saveStatus(this.status); 4410 } 4411 }, 4412 minifyPopup: function() { 4413 this.status = 'minified'; 4414 this.saveStatus('minified'); 4415 }, 4416 loadStatus: function() { 4417 return JSON.parse(localStorage.getItem('popupStatus')); 4418 }, 4419 saveStatus: function(status) { 4420 if (status) { 4421 localStorage.setItem('popupStatus', JSON.stringify({ 4422 status: status, 4423 setTime: new Date().getTime(), 4424 })); 4425 } 4426 }, 4427 linkClicked: function() { 4428 this.saveStatus('minified'); 4429 }, 4430 parseVideoLink: function(settings) { 4431 settings.dict_video_link = themeHelper.parseYtUrl(settings.dict_video_link); 4432 }, 4433 setupImageSrc: function (settings) { 4434 settings.dict_image_url = this.addCdnHost(settings.dict_image_url); 4435 if (settings.dict_tablet_image_url) { 4436 settings.dict_tablet_image_url = this.addCdnHost(settings.dict_tablet_image_url); 4437 } 4438 if (settings.dict_mobile_image_url) { 4439 settings.dict_mobile_image_url = this.addCdnHost(settings.dict_mobile_image_url); 4440 } 4441 settings.dict_icon_image_url = this.addCdnHost(settings.dict_icon_image_url) || settings.dict_image_url; 4442 }, 4443 addCdnHost: function(url) { 4444 if (!url) { 4445 return url; // only add cdn host if url is not empty 4446 } 4447 4448 try { 4449 new URL(url); 4450 return url; // already a valid url, cdn host not needed 4451 } catch { 4452 return `${CDN_HOST}${url}`; 4453 } 4454 }, 4455 initStatus: function() { 4456 let newStatus = 'show'; 4457 const popupStatus = this.loadStatus(); 4458 const currentTime = new Date().getTime(); 4459 const oneDay = 1000 * 60 * 60 * 24; 4460 const hasStoredStatus = popupStatus && currentTime - popupStatus.setTime < oneDay; 4461 const redirectedByGameLogin = !this.hasRedirectUrl() && this.redirectedByGameLogin(); 4462 const isLoggingIn = this.isLoggingIn(); 4463 const isCartPage = window.location.pathname.split('/').includes('carts'); 4464 4465 if (hasStoredStatus && !redirectedByGameLogin) { 4466 newStatus = popupStatus.status; 4467 } 4468 4469 if (isLoggingIn) { 4470 newStatus = 'minified'; 4471 } else { 4472 localStorage.removeItem('redirectedByPopup'); 4473 } 4474 4475 setTimeout(() => { 4476 this.status = newStatus; 4477 this.gameStatus = newStatus; 4478 this.saveStatus(newStatus); 4479 if(!isCartPage){ 4480 this.unhidePopup(newStatus); 4481 } 4482 }, 1000); 4483 }, 4484 initBlocks: function() { 4485 if (this.hasContent) { 4486 this.blocks.forEach(block => { 4487 switch(block.type) { 4488 case 'image': 4489 this.setupImageSrc(block.settings); 4490 4491 const isOpenInNewTab = block.settings.link_open_in_new_tab; 4492 if (isOpenInNewTab) { 4493 block.settings.target = '_blank'; 4494 block.settings.rel = 'noopener noreferrer'; 4495 } 4496 4497 break; 4498 case 'video': 4499 this.parseVideoLink(block.settings); 4500 break; 4501 } 4502 }) 4503 } 4504 }, 4505 getGameIframeSrc: function (block) { 4506 return `/games/${block.settings.dict_game_handle}` 4507 }, 4508 updateGameStatus: function(type, element) { 4509 if ( 4510 (type === 'start' && this.status === 'minified') 4511 || (type === 'end' && this.status === 'show') 4512 ) { 4513 this.gameStatus = this.status; 4514 } 4515 }, 4516 setupGameRedirects: function() { 4517 window.addEventListener('pagehide', () => { 4518 const isGameActive = document.body.getElementsByClassName('show-game').length; 4519 if (isGameActive) { 4520 localStorage.setItem('redirectedByPopup', 'true'); 4521 this.saveStatus('minified'); 4522 } 4523 }); 4524 }, 4525 hasRedirectUrl: function() { 4526 return (new URLSearchParams(location.search)).has('redirect_url'); 4527 }, 4528 redirectedByGameLogin: function() { 4529 return localStorage.getItem('redirectedByPopup'); 4530 }, 4531 isLoggingIn: function() { 4532 const loginRelatedPathnames = [ 4533 'account/signup', 4534 'account/login', 4535 'account/customer/password/new', 4536 'pages/terms' 4537 ]; 4538 return loginRelatedPathnames.some(path => location.pathname.includes(path)); 4539 } 4540 }, 4541 created: function() { 4542 this.initStatus(); 4543 this.initBlocks(); 4544 this.setupGameRedirects(); 4545 }, 4546 mounted: function() { 4547 this.blocks.forEach((block) => { 4548 if (block.type === 'carousel' && block.settings.dict_c
4548arousel) { 4549 renderCarousel(`#popup-carousel-${block.id}`, { 4550 title: block.settings.dict_carousel, 4551 CDN_HOST, 4552 onLinkClick: () => this.linkClicked(), 4553 }); 4554 } 4555 }); 4556 }, 4557 }); 4558 popupSection.mount('#popup-wrapper'); 4559 }); 4560</script>
4560 4561 4562 4563 4564 </div> 4565 4566 <!-- ajaxloading --> 4567 <div id="ajaxloading" class="qk-display--none qk-h--100vh qk-w--100vw qk-l--0 qk-t--0 qk-pos--fixed"> 4568 <div class="ajaxbody qk-pos--abs qk-l--50 qk-t--50 qk-text--center"> 4569 <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"> 4570 <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"/> 4571 <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 "/> 4572 <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"/> 4573 <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"/> 4574 <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"/> 4575 <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"/> 4576 </svg> 4577 <div class="success_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">å·²å å ¥è³¼ç©è»</div> 4578 <div class="success_update_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">å·²æ´æ°è³¼ç©è»</div> 4579 <div class="fail_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">網路ç°å¸¸ï¼è«éæ°æ´ç</div> 4580 </div> 4581 </div> 4582
4582<script src="//cdn1-next.cybassets.com/assets/referral-code-trace-5fcbbe026a61c36b5f09a1615a1c168688205205d9d3e7ee854181a66b64a6ed.js"></script>
4582</body> 4583 4584
4584<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/sub_vendor-4a1e7dfec7e41476.js' type='text/javascript'></script>
4584 4585
4585<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/theme_helper-4a1e7dfec7e41476.js' type='text/javascript'></script>
4585 4586 4587 <!-- theme assets --> 4588
4588<script src='//cdn1-next.cybassets.com/s/files/24606/theme/92088/assets/js/1678256979_c56705cf_main.js?1678256979' type='text/javascript'></script>
4588 4589
4589<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/theme-4a1e7dfec7e41476.js' type='text/javascript'></script>
4589 4590 4591 <!-- for cache --> 4592
4592<script src='//cdn1-next.cybassets.com/frontend/shop/beta_theme/js/cacheable-4a1e7dfec7e41476.js' type='text/javascript'></script>
4592 4593</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.