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