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