PageSourceSearch

https://www.tangshop.com.tw/en/collections/all-product

html tangshop.com.tw collected 2026-10-07 00:04:16 UTC 286,229 bytes, 4,653 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en" style="height:100%;">
3  <head>
4      
4<script>
5        window.dataLayer = window.dataLayer || [];
6      </script>
6
7    <!-- Google Tag Manager -->
8            
8<script>
vendor: 375 bytes, lines 8-12
8(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
9            new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
10            j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
11            'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
12            })(window,document,'script','dataLayer','
12GTM-WDZNN7G
vendor: 3 bytes, line 12
12');
12</script>
12
13          
14            
14<script>
vendor: 375 bytes, lines 14-18
14(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
15            new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
16            j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
17            'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
18            })(window,document,'script','dataLayer','
18GTM-W4482X4
vendor: 3 bytes, line 18
18');
18</script>
18
19          
20            
20<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
21            new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
22            j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
23            'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
24            })(window,document,'script','dataLayer','AW-18038378516');</script>
24
25          
25<script>var google_tag_manager_id = 'GTM-WDZNN7G';</script>
25
26<!-- End Google Tag Manager -->
27      <!-- CYBERBIZ Google Tag Manager -->
28      
28<script>
vendor: 345 bytes, lines 28-32
28(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
29      new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
30      j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
31      'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
32      })(window,document,'script','cyb','
32GTM-TXD9LVJ
vendor: 3 bytes, line 32
32');
32</script>
32
33      <!-- End CYBERBIZ Google Tag Manager -->
34    
35      
35<script>
36        function getUserFromCookie(){
37          if(localStorage.customer && localStorage.customer != '{"notLogin":true}'){
38            return JSON.parse(localStorage.customer).id;
39          }else{
40            return "";
41          }
42        }
43        cyb = [{
44          'shop': "19123-唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮",
45          'shop_plan': "enterprise",
46          'userId': getUserFromCookie()
47        }];
48      </script>
48
49    
50      <!-- CYBERBIZ Google Tag Manager -->
51      
51<script>
vendor: 345 bytes, lines 51-55
51(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
52      new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
53      j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
54      'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
55      })(window,document,'script','cyb','
55GTM-P7528MQ
vendor: 3 bytes, line 55
55');
55</script>
55
56      <!-- End CYBERBIZ Google Tag Manager -->
57    
58    <meta charset="utf-8">
59<meta http-equiv="X-UA-Compatible" content="IE=edge">
60<meta name="viewport" content="width=device-width, initial-scale=1">
61<link rel="icon" href="https://cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzI3MzI5MTUzX-e2suermUxPR08tNDhweF_lt6XkvZzljYDln58gMS5qcGcuanBlZyJdXQ.jpeg?convert=false&sha=9373337cfc63f02e">
62<link rel="apple-touch-icon" href="https://cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzI3MzI5MTUzX-e2suermUxPR08tNDhweF_lt6XkvZzljYDln58gMS5qcGcuanBlZyJdXQ.jpeg?convert=false&sha=9373337cfc63f02e">
63
64<meta property="og:site_name" content="唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮" />
65
66<!-- og tag -->
67
68
69<!-- og image -->
70
71  
72  <meta property="og:image" content="https://cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzI3MzI5MTUzX-e2suermUxPR08tNDhweF_lt6XkvZzljYDln58gMS5qcGcuanBlZyJdXQ.jpeg?sha=9373337cfc63f02e" />
73  
74
75
76<title>
77  
78    All Items 唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮
79  
80</title>
81
82
83
84<script src='//cdn-general.cybassets.com/frontend/shop/useSettingsData-4a1e7dfec7e41476.js' type='text/javascript'></script>
84
85
86
87
88  
88<script>
89    window.setSettingsData({"draggable_sections":{"404":[],"index":["1784872606193_0","1761013335454_0","1762138750168_8","1761887142104_5","1761888635800_8","1762132608049_5","1761018575429_4"],"product":["product_info","product_description","board_comments","related_products"],"combo_product":["combo_product_info","combo_product_desc","board_comments"],"collection":[],"category":[],"blog":[],"article":[],"cart":[],"contact":[],"express_delivery":[],"search":[]},"sections":{"navbar":{"type":"navbar","visible":true,"settings":{"navbar_image_logo_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzI3MzIyNzAyX-e2suermeaWsExPR08t5ZSQ6IiW5a2QMTAwcHhf5bel5L2c5Y2A5Z-fIDEgKDEpLmpwZy5qcGVnIl1d.jpeg?sha=f2f010d7aa3eaf8b","navbar_image_logo_tablet_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzI3MzIyNzAyX-e2suermeaWsExPR08t5ZSQ6IiW5a2QMTAwcHhf5bel5L2c5Y2A5Z-fIDEgKDEpLmpwZy5qcGVnIl1d.jpeg?sha=f2f010d7aa3eaf8b","navbar_image_logo_mobile_url":"","main_nav":"改","slider_primary_linklist":"改","slider_primary_linklist_set_open":false,"nav_show_three_dimension":true,"search_enabled":true,"display_only_index":false,"dict_header_banner_image_url":"/theme_src/i18n_shesay/default_img/header_banner_image.png","dict_header_banner_image_tablet_url":"","dict_header_banner_image_mobile_url":"","dict_header_banner_link":"","display_count_down":false,"navbar_display_style":"rowCenterNav","menu_display_style":"three_dimension_menu","header_banner_start":"","header_banner_end":"","timer_text_color":"#c39d6f","timer_bg_color":"#2b2b6e","logo_height":"","link_menu_enabled":false,"link_menu":"undefined","display_banner_type":"imageBanner","header_banner_simple_text_size":"25","header_banner_simple_text_color":"#ffffff","header_banner_simple_bg":"#000000","mobile_logo_position":"center","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","breadcrumb_referrer_enabled":false},"custom_name":"導覽列"},"footer":{"type":"footer","visible":true,"settings":{"footer_link":"footer","display_facebook":true,"shop_facebook":"https://www.facebook.com/","display_instagram":true,"shop_instagram":"https://www.instagram.com/?hl=zh-tw","display_line":true,"shop_line":"https://line.me/zh-hant/","display_youtube":true,"shop_youtube":"https://www.youtube.com/","footer_link_arrangement":"display_x","display_facebook_fan_block":true},"block_order":["default_contact_info","default_link_list","default_link_list_2"],"blocks":{"default_link_list":{"type":"link_list_setting","thumbnail":"list","draggable":true,"visible":true,"settings":{"dict_link_list_block_title":"About Us","footer_link":"footer"},"custom_name":"選單"},"default_contact_info":{"type":"contact_info_setting","thumbnail":"contactInfo","draggable":true,"visible":true,"settings":{"dict_contact_info_block_title":"Contact Info","display_phone":true,"dict_phone_number":"0912345678","display_fax_number":false,"dict_shop_fax_number":"0222345678","display_shop_email":true,"dict_shop_email":"[email protected]","display_shop_address":false,"dict_shop_address":"Shop Address","display_office_time":true,"dict_shop_office_time":"10:00-17:00"},"custom_name":"聯絡資訊"},"default_link_list_2":{"type":"link_list_setting","visible":true,"settings":{"dict_link_list_block_title":"Help","footer_link":"main-menu"},"custom_name":"選單"}},"custom_name":"頁腳"},"_index_product_banner":{"type":"_index_product_banner","visible":false,"settings":{"dict_link":"","dict_image_url":"/theme_src/i18n_shesay/default_img/index_product_banner.png","dict_tablet_image_url":"","dict_mobile_image_url":"","cta_btn_display_style":"topPosition","cta_btn_text":"了解更多","cta_btn_bg_color":"#000000","cta_btn_text_color":"#ffffff","margin_x":"0","margin_bottom":"24","mobile_margin_x":"0","mobile_margin_bottom":"24"},"custom_name":"橫幅廣告"},"_index_product_banner_2":{"type":"_index_product_banner","visible":false,"settings":{"dict_image_url":"/theme_src/i18n_shesay/default_img/index_product_banner_2.png","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","display_cta_btn":true,"cta_btn_display_style":"bottomPosition","cta_btn_text":"Shop Now","cta_btn_bg_color":"#000000","cta_btn_text_color":"#ffffff","margin_x":"80","margin_bottom":"48","mobile_margin_x":"16","mobile_margin_bottom":"24"},"custom_name":"橫幅廣告"},"_index_4_blocks":{"type":"_index_4_blocks","visible":false,"settings":{"margin_x":"24","margin_bottom":"48","mobile_margin_x":"16","mobile_margin_bottom":"24","mobile_columns":1,"margin_block":"10","mobile_margin_block":"10"},"blocks":{"display_index_4_block_1":{"type":"image","visible":true,"settings":{"dict_image_url":"/theme_src/i18n_shesay/default_img/index_4_blocks_1.png","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","dict_image_description":""},"custom_name":"圖片"},"display_index_4_block_1_2":{"type":"image","visible":true,"settings":{"dict_image_url":"/theme_src/i18n_shesay/default_img/index_4_blocks_1_2.png","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","dict_image_description":""},"custom_name":"圖片"},"display_index_4_block_1_3":{"type":"image","visible":true,"settings":{"dict_image_url":"/theme_src/i18n_shesay/default_img/index_4_blocks_1_3.png","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","dict_image_description":""},"custom_name":"圖片"}},"block_order":["display_index_4_block_1","display_index_4_block_1_2","display_index_4_block_1_3"],"custom_name":"自訂排版設計"},"_index_4_blocks_2":{"type":"_index_4_blocks","visible":false,"blocks":{"display_index_4_block_2":{"type":"video","visible":true,"settings":{"dict_video_link":"https://www.youtube.com/watch?v=Jy6Kxf_hQi8","block_propotion":"100"},"custom_name":"影片"},"1761024105592_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYxODgyNTEzXzE3Mzc0NDU5OTJfMTAwZy0yX-S_ri5qcGcuanBlZyJdXQ.jpeg?sha=bc45b86c41bd5ed6","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzM3NDQ1OTkyXzEwMGctMi5qcGcuanBlZyJdXQ.jpeg?sha=0a02c31d19561854","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzM3NDQ1OTkyXzEwMGctMi5qcGcuanBlZyJdXQ.jpeg?sha=0a02c31d19561854","dict_image_description":"\u003cp\u003e\u003c/p\u003e\n","dict_link":"/collections/nougat200g56","dict_image_title":"","block_propotion":"40"}},"1761024180239_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYxODgyNTAzXzE3Mzc0NDU5NjlfMTAwZy0xX-S_ri5qcGcuanBlZyJdXQ.jpeg?sha=99623f9722796ffc","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYxODgyNTAzXzE3Mzc0NDU5NjlfMTAwZy0xX-S_ri5qcGcuanBlZyJdXQ.jpeg?sha=99623f9722796ffc","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYxODgyNTAzXzE3Mzc0NDU5NjlfMTAwZy0xX-S_ri5qcGcuanBlZyJdXQ.jpeg?sha=99623f9722796ffc","dict_image_description":"\u003cp style=\"text-align:center;\"\u003e\u003c/p\u003e\n","dict_link":"/collections/nougat100g56","block_propotion":"40"}},"1761886678026_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":"","dict_link":"","block_propotion":"10"}},"1761886679751_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":"","dict_link":"","block_propotion":"10"}}},"block_order":["1761886678026_0","1761024105592_0","1761024180239_0","1761886679751_0"],"settings":{"margin_x":"100","margin_bottom":"58","mobile_margin_x":"50","mobile_margin_bottom":"40","mobile_columns":1,"margin_block":"100","mobile_margin_block":"10","mobile_align":"left"},"custom_name":"自訂排版設計"},"_index_4_blocks_3":{"type":"_index_4_blocks","visible":false,"settings":{"margin_x":"120","margin_bottom":"24","mobile_margin_x":"0","mobile_margin_bottom":"16","mobile_columns":2,"margin_block":"10","mobile_margin_block":"10"},"blocks":{"display_index_4_block_3":{"type":"image","visible":true,"settings":{"dict_image_url":"/theme_src/i18n_shesay/default_img/index_4_blocks_3.png","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","block_propotion":"33.3","dict_image_description":""},"custom_name":"圖片"},"display_index_4_block_3_2":{"type":"image","visible":true,"settings":{"dict_image_url":"/theme_src/i18n_shesay/default_img/index_4_blocks_3_2.png","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","block_propotion":"66.6","dict_image_description":""},"custom_name":"圖片"}},"block_order":["display_index_4_block_3","display_index_4_block_3_2"],"custom_name":"自訂排版設計"},"_index_8_blocks":{"type":"_index_8_blocks","visible":false,"settings":{"dict_title":"New Arrivals","collection_handle":"salted-egg-yolk-nougat","limit":"48","margin_x":"0","margin_bottom":"48","mobile_margin_x":"0","mobile_margin_bottom":"24","product_display":"displayDefault","product_arrangement":"1","product_column_for_pc":"4","product_alignment":"leftPosition","product_text_align":"center"},"custom_name":"商品分類"},"express_delivery_index_4_blocks":{"type":"_index_4_blocks","visible":false,"blocks":{"express_delivery_display_index_4_block_1":{"type":"image","visible":true,"settings":{"title":"","dict_link":"","dict_image_url":"/theme_src/i18n_shoestore/default_img/index_4_blocks_1.jpg","dict_tablet_image_url":"","dict_mobile_image_url":""}}},"block_order":["express_delivery_display_index_4_block_1"]},"custom_text":{"type":"custom_text","visible":true,"settings":{}},"blog":{"type":"blog","visible":true,"settings":{"article_limit_in_blog_page":"6"}},"article":{"type":"article","visible":true,"settings":{"display_blog_menu":true,"dict_blog_tags_title":"Categories","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":"
896","category_product_item_limit":"18"}},"shop_setting":{"type":"shop_setting","visible":true,"settings":{"favicon_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzI3MzI5MTUzX-e2suermUxPR08tNDhweF_lt6XkvZzljYDln58gMS5qcGcuanBlZyJdXQ.jpeg?sha=9373337cfc63f02e","og_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzI3MzI5MTUzX-e2suermUxPR08tNDhweF_lt6XkvZzljYDln58gMS5qcGcuanBlZyJdXQ.jpeg?sha=9373337cfc63f02e","shop_title":"網站標題","shop_description":"網站簡述","shop_keywords":"網站關鍵字"},"custom_name":"全站設定"},"color_settings":{"type":"color_settings","visible":true,"settings":{"button_color":"#7c6767","button_text_color":"#FFFFFF","accent_color":"#f86f69","heading_color":"#000000","text_color":"#9A9EA2","price_color":"#f86f69","discount_price_color":"#f86f69","theme_bg_color":"#FFFFFF","product_border_color":"#E2E2E2","nav_logo_bg_color":"#FFFFFF","nav_menu_bg_color":"#FFFFFF","nav_menu_text_color":"#000000","nav_menu_icon_color":"#7c6767","footer_bg_color":"#ffffff","footer_text_color":"#9a9ea2","checkout_button_color":"#000000","checkout_accent_color":"#f86f69","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":false,"dict_vip_custom_price_text":"","dict_vip_custom_price_href":""},"custom_name":"基本設定"},"product_description":{"type":"product_description","visible":true,"custom_name":"商品介紹"},"board_comments":{"type":"board_comments","visible":true,"settings":{},"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","related_products_limit":"4"},"custom_name":"相關商品"},"combo_product_info":{"type":"combo_product_info","visible":true,"settings":{}},"combo_product_desc":{"type":"combo_product_desc","visible":true,"settings":{}},"contact":{"type":"contact","visible":true,"settings":{"show_google_map":true,"show_google_map_iframe":"\u003ciframe src=\"https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3613.6479170127777!2d121.56760821400371!3d25.07991984260527!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3442ac6fbd841bbd%3A0x64e16bcf25e3da31!2zMTE05Y-w5YyX5biC5YWn5rmW5Y2A55Ge5YWJ6LevNTEz5be3MzDomZ8!5e0!3m2!1szh-TW!2stw!4v1485156761267\" width=\"600\" height=\"450\" frameborder=\"0\" style=\"border:0\" allowfullscreen\u003e\u003c/iframe\u003e"}},"collection":{"type":"collection","visible":true,"settings":{"collection_sidebar":"改左邊","collection_sidebar_set_open":false,"collection_pagination_limit":"24","product_column_for_pc":"4","is_infinite_scroll":false},"custom_name":"商品分類設定"},"404":{"type":"404","visible":true,"settings":{"image_url":"/theme_src/i18n_shesay/default_img/404_img.png","dict_404_image_url":"/theme_src/i18n_shesay/default_img/404_img.png","dict_title_text":"Sorry, this page does not exist or has been removed","dict_btn_text":"Back to Home"}},"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":{}},"1761013335454_0":{"type":"_main_slider_custom","custom_name":"輪播素材","visible":true,"settings":{"swiper_delay":"3","margin_x":"0","margin_bottom":"50","image_number":"1","image_space":"3","mobile_margin_x":"0","mobile_margin_bottom":"50","mobile_image_number":"1","mobile_image_space":"10","transition_speed":"0.3"},"blocks":{"1761013335455_0":{"type":"image","custom_name":"素材","visible":false,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzI0MTI2NzYxX-WumOe2si3nsbPlhbbmnpcuanBnLmpwZWciXV0.jpeg?sha=1cac94dce7cd9279","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/michelin-nougat-gift-box","slide_contents_display":"center","dict_slide_btn_link":"/collections/michelin-nougat-gift-box","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}},"1761013425994_0":{"type":"image","custom_name":"素材","visible":false,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzE3MDYwOTg3X-adj-S7geezlmJhbm5lci5qcGcuanBlZyJdXQ.jpeg?sha=e39afcfdf8d78a12","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/milk-caramel","slide_contents_display":"left","dict_slide_btn_link":"/products/tm1017","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}},"1761013494450_0":{"type":"image","custom_name":"素材","visible":false,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYxMTgxMDE5XzE2OTUyNzQ1OTdf5Y2X5qOX5qC45qGD57OVX-S_ruWwjzIuanBnLmpwZWciXV0.jpeg?sha=79d3e6be039bb2ee","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/products/chinese-date-walnut-candy","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"}},"1762391413616_0":{"type":"image","custom_name":"素材","visible":false,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYyODQyNzczXzE3MzA5NjMzNTRf5pS5MS3pm5kxMeWumOe2si3pppblnJZf5L-uMi5qcGcuanBlZyJdXQ.jpeg?sha=65be4ad62312413e","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/all","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","main_slider_image_alt":""}},"1763514537152_0":{"type":"image","custom_name":"素材","visible":false,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYzNTE2MDU1X-apq-W5hV_nsbPlhbbmnpfniZvou4st5ben6YWlLmpwZy5qcGVnIl1d.jpeg?sha=44b118f858bded25","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/products/tc1133","slide_contents_display":"left","dict_slide_btn_link":"/products/tc1134","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}},"1763514538864_0":{"type":"image","custom_name":"素材","visible":false,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYzNTE2NjE1X-apq-W5hV_nmofps7PphaUuanBnLmpwZWciXV0.jpeg?sha=eaf55111f295e3db","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/products/tb1060-20251020102054","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"}},"1763517165746_0":{"type":"image","custom_name":"素材","visible":false,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYzNTE3NTU0X-apq-W5hV_nlJzkuI3ovqPlsI8uanBnLmpwZWciXV0.jpeg?sha=084009749ae35fe4","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/products/ts3402","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"}},"1765503678784_0":{"type":"image","custom_name":"素材","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzY1NTAzNjkzX-apq-W5hV_nsbPlhbbmnpfniZvou4vns5Yt6IGW6KqV56-ALmpwZy5qcGVnIl1d.jpeg?sha=922a6c11d35f8b0c","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/20240101","
89slide_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"}},"1766978992579_0":{"type":"image","custom_name":"素材","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzY2OTk0ODQwX-WumOe2si3nsbPlhbbmnpcuanBnLmpwZWciXV0.jpeg?sha=e6dc727b3f94eb8f","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/michelin-nougat-gift-box","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"}},"1767061697044_0":{"type":"image","custom_name":"素材","visible":false,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzY4MjcyMDIwX-apq-W5hV_lhavlr7bnm5Jf5Yqg57SF5YyFLmpwZy5qcGVnIl1d.jpeg?sha=b041d0825ac368fd","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/products/tb1066","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"}},"1768457004350_0":{"type":"image","custom_name":"素材","visible":false,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzY4NDU3MjAxX-apq-W5hV_ng4_prZrlrZAuanBnLmpwZWciXV0.jpeg?sha=ce0f86bf3a23bccc","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/products/tg1077","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"}},"1772767018733_0":{"type":"image","custom_name":"素材","visible":false,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzcyNzY3MDI3X-apq-W5hV_nsbPlhbbmnpfniZvou4st5ben6YWlLeWUkOWvp-iMtl8wMzA45aWz56We56-ALmpwZy5qcGVnIl1d.jpeg?sha=00416752f41ca3be","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","slide_contents_display":"left","dict_slide_btn_link":"/products/38","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}},"1775020957669_0":{"type":"image","custom_name":"素材","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzc2MjE0MDQ2X-apq-W5hV_mr43opqrnr4Dnpq7nm5JfTE9HTy5qcGcuanBlZyJdXQ.jpeg?sha=2e639f1a04223657","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/products/母親節禮盒","slide_contents_display":"left","dict_slide_btn_link":"/products/母親節禮盒","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","main_slider_image_alt":""}},"1780456425652_0":{"type":"image","custom_name":"素材","visible":false,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzgwNDU2NDQ2X-apq-W5hV_nq6_ljYjphqzmlpnmtLvli5UuanBnLmpwZWciXV0.jpeg?sha=41b605f36ad6d04b","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/products/tg1003","slide_contents_display":"left","dict_slide_btn_link":"/products/tg1003","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}},"1781485480873_0":{"type":"image","custom_name":"素材","visible":false,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzg0Mjc3NzI3X-apq-W5hV_lronlv4PlhazlkYouanBnLmpwZWciXV0.jpeg?sha=e0d35233e607ce8c","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","slide_contents_display":"left","dict_slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}},"1784858994532_0":{"type":"image","custom_name":"素材","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzg0ODU5MDE1X-apq-W5hV_lhazniYjooovmtLvli5UuanBnLmpwZWciXV0.jpeg?sha=b86adac05adab4a8","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/tangshop99","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"}},"1785745237325_0":{"type":"image","custom_name":"素材","visible":false,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzg1NzQ1MjUyX-WUkOmLquWtkOS4reeni-emruebki1iYW5uZXIuanBnLmpwZWciXV0.jpeg?sha=fce29393adccdc8b","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/products/box","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"}},"1789520192245_0":{"type":"image","custom_name":"素材","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzg5NTIwMjAwX-apq-W5hV_lrpjntrLpmY3lg7kuanBnLmpwZWciXV0.jpeg?sha=baa6f293d655756d","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","slide_contents_display":"left","dict_slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}}},"block_order":["1789520192245_0","1785745237325_0","1766978992579_0"]},"1761018682297_9":{"type":"_flagship_product","custom_name":"主打商品","visible":false,"settings":{"margin_x":"80","margin_bottom":"50","mobile_margin_x":"16","mobile_margin_bottom":"24","product_image_position":"leftSide"},"blocks":{"1761018682298_0":{"type":"title","custom_name":"商品標題","visible":false,"settings":{"dict_size":"24","enable_product_title_link":true,"product_title_link_open_in_new_tab":true}},"1761018682299_1":{"type":"price","custom_name":"價格","visible":false,"settings":{"price_disabled_edit":""}},"1761018682299_2":{"type":"type_selector","custom_name":"款式選單","visible":true,"settings":{"type_selector_disabled_edit":""}},"1761018682300_3":{"type":"quantity_selector","custom_name":"數量選擇器","visible":true,"settings":{"quantity_selector_disabled_edit":""}},"1761018682300_4":{"type":"button","custom_name":"購買按鈕","visible":true,"settings":{"display_buy_n
89ow_button":true}}},"block_order":["1761018682298_0","1761018682299_1","1761018682299_2","1761018682300_3","1761018682300_4"]},"1761018726083_2":{"type":"_index_8_blocks","custom_name":"商品分類","visible":false,"settings":{"dict_title":"經典牛軋糖系列","collection_handle":"classic-nougat","limit":"3","product_arrangement":"1","product_column_for_pc":"3","product_alignment":"midPosition","product_text_align":"center","margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"24","product_display":"displayDefault","product_column_for_mobile":"2","product_card_hover_effect":"button","product_image_border_radius":"15"},"blocks":{},"block_order":[]},"1761018575429_4":{"type":"_index_4_blogs","custom_name":"分頁頁籤","visible":true,"settings":{"dict_title":"","margin_x":"","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"50","article_columns":"4"},"blocks":{"1761018575431_0":{"type":"blog","custom_name":"部落格","visible":true,"settings":{"blog_handle":"唐舖子愛分享"}},"1762152881395_0":{"type":"blog","custom_name":"部落格","visible":true,"settings":{"blog_handle":"商品介紹"}},"1763452678569_0":{"type":"blog","custom_name":"部落格","visible":true,"settings":{"blog_handle":"商品介紹"}},"1763452688603_0":{"type":"blog","custom_name":"部落格","visible":true,"settings":{"blog_handle":"商品介紹"}}},"block_order":["1761018575431_0","1762152881395_0","1763452678569_0","1763452688603_0"]},"1761018630882_7":{"type":"_custom_html","custom_name":"自訂HTML","visible":false,"settings":{"margin_x":"0","margin_bottom":"0","mobile_margin_x":"0","mobile_margin_bottom":"0"},"blocks":{},"block_order":[]},"1761024069645_5":{"type":"_index_4_blocks","custom_name":"自訂排版設計","visible":true,"settings":{"margin_x":"0","margin_bottom":"50","margin_block":"10","mobile_margin_x":"0","mobile_margin_bottom":"50","mobile_columns":1,"mobile_margin_block":"10"},"blocks":{"1761024069646_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"/theme_src/i18n_shoestore/default_img/index_4_blocks_1.jpg","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":"","dict_link":""}},"1761024069647_1":{"type":"video","custom_name":"影片","visible":true,"settings":{"dict_video_link":""}}},"block_order":["1761024069646_0","1761024069647_1"]},"1761033534812_5":{"type":"_index_4_blocks","custom_name":"自訂排版設計","visible":true,"settings":{"margin_x":"0","margin_bottom":"50","margin_block":"10","mobile_margin_x":"0","mobile_margin_bottom":"50","mobile_columns":1,"mobile_margin_block":"10"},"blocks":{"1761033534813_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzQ1NzgyMjEyXzUwLnBuZy5wbmciXV0.png?sha=97ee5787a95f269d","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":"","dict_link":""}},"1761033534813_1":{"type":"video","custom_name":"影片","visible":true,"settings":{"dict_video_link":""}}},"block_order":["1761033534813_0","1761033534813_1"]},"1761033662883_2":{"type":"_index_8_blocks","custom_name":"商品分類","visible":true,"settings":{"dict_title":"","collection_handle":"618","limit":12,"product_arrangement":"1","product_column_for_pc":"4","product_alignment":"leftPosition","product_text_align":"center","margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"24","product_display":"displayDefault"},"blocks":{},"block_order":[]},"1761033842131_4":{"type":"_index_4_blogs","custom_name":"分頁頁籤","visible":true,"settings":{"dict_title":"","margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"50"},"blocks":{"1761033842132_0":{"type":"blog","custom_name":"部落格","visible":true,"settings":{"blog_handle":"商品介紹"}}},"block_order":["1761033842132_0"]},"1761880418242_8":{"type":"_text_editor_section","custom_name":"文字編輯","visible":false,"settings":{"margin_x":"0","margin_bottom":"0","mobile_margin_x":"0","mobile_margin_bottom":"0","dict_advanced_rich_text_content":"\u003cp style=\"text-align:center;\"\u003e\u003cspan style=\"color: rgb(0,0,0);background-color: rgb(255,255,255);font-size: 64px;
89\"\u003e\u003cstrong\u003e優惠活動\u003c/strong\u003e\u003c/span\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003e\u003c/p\u003e\n"},"blocks":{},"block_order":[]},"1761887142104_5":{"type":"_index_4_blocks","custom_name":"自訂排版設計","visible":true,"settings":{"margin_x":"40","margin_bottom":"50","margin_block":"100","mobile_margin_x":"50","mobile_margin_bottom":"50","mobile_columns":2,"mobile_margin_block":"15","mobile_align":"left"},"blocks":{"1761887142105_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYxODg5MjY1X-WOn-WRs-eJm-i7i-ezluaDheWig18yX-Wck-W9oi5wbmcucG5nIl1d.png?sha=605365b80b757bac","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":"\u003cp style=\"text-align:justify;\"\u003e\u003cspan style=\"font-size: 15px;\"\u003e\u003cstrong\u003e    Almond Nougats\u003c/strong\u003e\u003c/span\u003e\u0026nbsp;\u003c/p\u003e\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n","dict_link":"/collections/classic-nougat","block_propotion":"25"}},"1761887166251_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYxOTAwMzM2XzA2MTTntq3lloZUODc2OV_lnJPlvaIucG5nLnBuZyJdXQ.png?sha=cf4f364811802657","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":"\u003cp style=\"text-align:center;\"\u003e\u003cspan style=\"font-size: 15px;\"\u003e\u003cstrong\u003eNougat with Biscuits\u003c/strong\u003e\u003c/span\u003e\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n","dict_link":"/collections/snowflake-nougat","block_propotion":"25"}},"1761887168138_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYxOTAwMzM1X-WOn-WRsybpubnom4vpu4Nf5ZyT5b2iLnBuZy5wbmciXV0.png?sha=f7586f6ee173c106","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":"\u003cp style=\"text-align:center;\"\u003e\u003cspan style=\"font-size: 15px;\"\u003e\u003cstrong\u003eNutty Toffee\u003c/strong\u003e\u003c/span\u003e\u003c/p\u003e\n","dict_link":"/collections/original-toffee-cashew-crisp","custom_block_image_alt":"","block_propotion":"25"}},"1761887169482_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYyMTUyNzkzX-WUkOmLquWtkGxvZ29f5ZyT5b2iLnBuZy5wbmciXV0.png?sha=1a1091e8290eb6c6","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":"\u003cp style=\"text-align:center;\"\u003e\u003cspan style=\"font-size: 15px;\"\u003e\u003cstrong\u003eCollaboration Collection\u003c/strong\u003e\u003c/span\u003e\u003c/p\u003e\n","dict_link":"/collections/ovaltine_fuyuan","block_propotion":"25"}},"1761887171241_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYxOTAwMzM1X-WNl-ajl-aguOahg-ezlS0gKDEpX-Wck-W9oi5wbmcucG5nIl1d.png?sha=b6f781e6d4a9db23","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":"\u003cp style=\"text-align:center;\"\u003e\u003cspan style=\"font-size: 15px;\"\u003e\u003cstrong\u003eBlack Date \u0026amp; Walnut\u003c/strong\u003e\u003c/span\u003e\u003c/p\u003e\n\u003cp\u003e\u003cspan style=\"font-size: 15px;\"\u003e\u003cstrong\u003e           Soft Candy\u003c/strong\u003e\u003c/span\u003e\u003c/p\u003e\n","dict_link":"/collections/walnut-cake","block_propotion":"25"}},"1761887172515_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYxOTAwMzM1X-aWsOW5tOemruebkjRf5ZyT5b2iLnBuZy5wbmciXV0.png?sha=8efa063499b330fe","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":"\u003cp style=\"text-align:center;\"\u003e\u003cspan style=\"font-size: 15px;\"\u003e\u003cstrong\u003eGift Box\u003c/strong\u003e\u003c/span\u003e\u003c/p\u003e\n","dict_link":"/collections/20240101","block_propotion":"25"}},"1761887177891_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYxOTAwMzM1XzIwMjIt5ZSQ6IiW5a2Q6Yas5paZ56au55uS5oOF5aKD54WnMl_lnJPlvaIucG5nLnBuZyJdXQ.png?sha=18206a35a798af46","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":"\u003cp style=\"text-align:center;\"\u003e\u003cspan style=\"font-size: 15px;\"\u003e\u003cstrong\u003eAdditional Products\u003c/strong\u003e\u003c/span\u003e\u003c/p\u003e\n","dict_link":"/collections/appetizers_sauce","block_propotion":"25"}},"1761898673209_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYxOTAyMDQ1X0lNR180MzE2X-Wck-W9oi5wbmcucG5nIl1d.png?sha=a268dcbd1589ab3c","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":"\u003cp style=\"text-align:center;\"\u003e\u003cspan style=\"font-size: 10px;\"\u003e \u003cstrong\u003eFudge - Caramel - Milk Candy\u003c/strong\u003e\u003c/span\u003e\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n","dict_link":"/collections/milk-caramel","block_propotion":"25"}}},"block_order":["1761887142105_0","1761898673209_0","1761887166251_0","1761887168138_0","1761887171241_0","1761887172515_0","1761887177891_0","1761887169482_0"]},"1761888635800_8":{"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\u003e\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n"},"blocks":{},"block_order":[]},"1762132608049_5":{"type":"_index_4_blocks","custom_name":"自訂排版設計","visible":true,"settings":{"margin_x":"0","margin_bottom":"50","margin_block":"0","mobile_margin_x":"0","mobile_margin_bottom":"50","mobile_columns":1,"mobile_margin_block":"10","mobile_align":"left"},"blocks":{"1762132608050_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNjk4ODA5MTIxX-WUkOmLquWtkF_pm5kxMeWwj-S4ieWcliAoMikuanBnLmpwZWciXV0.jpeg?sha=6af15595e9fe5862","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":"\u003cp\u003e\u003c/p\u003e\n","dict_link":"https://www.tangshop.com.tw/zh-TW/collections/all"}},"1762132619621_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNjk4ODA5MTIxX-WUkOmLquWtkF_pm5kxMeWwj-S4ieWcliAoMykuanBnLmpwZWciXV0.jpeg?sha=92cdb0eeeca72e56","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":"","dict_link":"https://www.tangshop.com.tw/zh-TW/collections/classic-nougat"}},"1762132621141_0":{"type":"image","custom_name":"圖片","visible":false,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYzNTE0NDU5X-WFjemBiy5qcGcuanBlZyJdXQ.jpeg?sha=584c3ebc261b528f","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":"","dict_link":"https://www.tangshop.com.tw/zh-TW/account/signup"}},"1762132622581_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzYzNTE0NDc4
89X0xJTkUuanBnLmpwZWciXV0.jpeg?sha=73d799a1a92f299f","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_image_description":"","dict_link":"https://page.line.me/589iqdvk?oat_content=url\u0026openQrModal=true"}}},"block_order":["1762132608050_0","1762132619621_0","1762132621141_0","1762132622581_0"]},"1762138750168_8":{"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\u003cspan style=\"font-size: 32px;\"\u003e\u003cstrong\u003eAll Products\u003c/strong\u003e\u003c/span\u003e\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n"},"blocks":{},"block_order":[]},"1784872606193_0":{"type":"_main_slider_custom","custom_name":"輪播素材","visible":false,"settings":{"swiper_delay":"3","transition_speed":"0.3","margin_x":"0","margin_bottom":"0","image_number":"1","image_space":"12","mobile_margin_x":"0","mobile_margin_bottom":"0","mobile_image_number":"1","mobile_image_space":"8"},"blocks":{"1784872606195_0":{"type":"image","custom_name":"素材","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzg0Mjc3NzI3X-apq-W5hV_lronlv4PlhazlkYouanBnLmpwZWciXV0.jpeg?sha=e0d35233e607ce8c","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"https://www.tangshop.com.tw/zh-TW/pages/promise","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":["1784872606195_0"]},"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":"/theme_src/i18n_shesay/default_img/header_banner_image.png","dict_image_tablet_url":"","dict_image_mobile_url":"","image_alt":"","dict_content":"","text_size":"25","text_color":"#ffffff","bg_color":"#000000","timer_text_color":"#c39d6f","timer_bg_color":"#2b2b6e","migrated_from_navbar":true},"custom_name":"圖片"}},"block_order":["announcement_bar_block_1"],"settings":{"display_mode":"vertical","carousel_interval":"3"},"custom_name":"置頂公告"}},"navbar_image_logo":true,"show_default_all_products":true,"one_dimension_limit":"6","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":"Autumn Shoes are now in store","dict_index_event_slider_item_2_link":"#","index_event_slider_item_3_display":true,"dict_index_event_slider_item_3_title":"Purchase any 3 items and get 20% off!","dict_index_event_slider_item_3_link":"#","index_event_slider_item_4_display":true,"dict_index_event_slider_item_4_title":"FINAL SALE/Summer shoes are now on clearance sale!","dict_index_event_slider_item_4_link":"#","index_event_slider_item_5_display":true,"dict_index_event_slider_item_5_title":"Sale ends soon","dict_index_event_slider_item_5_link":"#","index_event_slider_item_6_display":true,"dict_index_event_slider_item_6_title":"Register now and get $50 off","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":"/theme_src/beta_theme/default_img/onsale_icon.png","dict_discount_price_name":"","display_discount_price_suggestion_name":false,"dict_discount_price_suggestion_name":"","display_product_section_description":true,"dict_product_section_description":"Product Description","description_section_spec_setting":true,"dict_product_description_section_spec":"Specifications","description_section_shipping_setting":true,"dict_product_description_section_shipping":"Shipping Method","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":"Shop 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,"display_product_vendor":true,"nav_icon_style":"icon_type_default","google_font":"{'ja':{'value':'Noto Sans JP'},'zh-TW':{'value':'Noto Sans TC'},'en':{'value':'Noto Sans TC'},'zh-CN':{'value':'Noto Sans TC'}}","product_text_align":"start","styled_shop_menu":"buttonType","product_video_display_location":"before","product_scale":"default_scale","product_labels":{"items":[{"id":"sale_label","kind":"system","title":"特價標籤","display":true,"type":"image","dict_text":{"zh-TW":""},"image":"/theme_src/beta_theme/default_img/onsale_icon.png","image_size":"large"},{"id":"out_of_stock_label","kind":"system","title":"缺貨標籤","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"periodic_event_label","kind":"system","title":"定期定額標籤","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"6a351562-f9f3-450d-abdc-5502de04537e","kind":"custom","title":"自定義標籤 1","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"6714fdf6-631e-4129-970a-681e114d13c5","kind":"custom","title":"自定義標籤 2","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"96f28b38-3cb7-4da5-9734-dd6b68190100","kind":"custom","title":"自定義標籤 3","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"f8c139fb-ff96-4630-bd3c-2f42fbfd74cb","kind":"custom","title":"自定義標籤 4","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"75f5cd30-c6af-4931-9f8a-29afa516cfae","kind":"custom","title":"自定義標籤 5","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"}]},"product_card_hover_effect":"button","product_image_border_radius":"0"});
90  </script>
90
91
92
93
94
95
96
97
98
99
100
101    <!-- for vendor -->
102    <!-- cyb_snippet _bootstrap start -->
103
104<!-- cyb_snippet _bootstrap end -->
105    <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/vendor-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' />
106
107    <!-- common css rulesets -->
108    <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/common-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' />
109
110    <!-- for navbar -->
111    <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/navbar-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' />
112
113    <!-- for footer -->
114    <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/footer-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' />
115
116    <!-- theme assets -->
117    <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/main-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' />
118
119    <!-- for vendor -->
120    
120<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/vendor-4a1e7dfec7e41476.js' type='text/javascript'></script>
120
121
122            
122<script>
123          window.sci = "eyJzaG9wX2lkIjoxOTEyMywic2hvcF9wbGFuIjoiZW50ZXJwcmlzZSIsImRp\nbV9hZmZpbGlhdGUiOm51bGwsImN1c3RvbWVyX2lkIjpudWxsLCJjdXN0b21l\ncl9uYW1lIjpudWxsLCJzaG9wX25hbWUiOiLllJDoiJblrZAgfCDnsbPlhbbm\nnpcy5pif54mb6LuL57OWIHwg5Lq65rCj5Ly05omL56auIiwic2hhcmVfYXR0\ncmlidXRpb25fZW5hYmxlZCI6ZmFsc2V9\n";
124        </script>
124
125
126
127<meta name="csrf-param" content="authenticity_token" />
128<meta name="csrf-token" content="XNmp351zPFp6g5eXCqPs4gl21nqGq5KrpJI8sOXP_TMrBP4Wn1ZpkqglUXiMcbT7VfEBpNsqCaTOK4W9XXgnGw" />
129<script>(function () {
130  window.gaConfigurations = {"useProductIdInProductEvents":false};
131})();
132</script>
vendor: 1 bytes, line 132
132
133<script>(function () {
134  window.CYBERBIZ_PageContext = {"page_type":"collection"};
135})();
136</script>
136
137<link href="//cdn-general.cybassets.com/frontend/shop/quark-4a1e7dfec7e41476.css" rel="stylesheet" type="text/css" media="all" />
138        
138<script>
139          window.shopScriptHelper = {
140            i18nLocale: "en",
141            i18nLocaleDefault: "zh-TW",
142            availableCurrencies: ["TWD"],
143            defaultCurrency: "TWD",
144            currenciesInfo: [{"html_unit":"NT${{amount_no_decimals}}","name":"新台幣 (TWD)","html":"NT${{amount_no_decimals}}","unit":"","trailing_zeros":false,"decimal_precision":0,"money_format":"%u%n","format":"NT${{amount_no_decimals}}","email_unit":"NT${{amount_no_decimals}}","code":"TWD","symbol":"NT$","email":"NT${{amount_no_decimals}}"}],
145            vueOverrideTranslations: {"en":{"vue":{"bonus_mall":{"add_to_cart":"Add to Cart","already_added_to_cart":"Added to Cart","available_bonus_and_used":"Total bonus points: {customerRemainPoints} points, using {usedBonusPoints} points.","bonus_points":"{points} points","bonus_points_verbose":"{points} bonus points","bonus_price":"Bonus Price","bonus_price_asc":"Sort by Low to High Points","bonus_price_desc":"Sort by High to Low Points","bonus_redemption_price":"{price} Bonus Redemption points","countdown":"Sale starts in","days":"days","default_sort":"Recommended","exceed_buy_limit":"Quantity exceeds purchase limit.","exceed_stock_quantity":"Quantity exceeds available stock.","hours":"hours","insufficient_points":"Insufficient Points","loading_error":"Error loading shopping cart data.","minutes":"minutes","need_to_buy_something":"Quantity must be at least 1.","not_on_sale_yet":"Coming soon","points":"Points","proceed_to_checkout":"Proceed to Checkout","product_count":"A Total Of {totalCount} Items","quantity":"Quantity","recent_days_sold_asc":"Sort by Low to High Sales Volume","recent_days_sold_desc":"Bestselling","seconds":"seconds","select_itmes_count":"You have selected {quantity} bonus items.","sell_from_asc":"Listing date, old to new","sell_from_desc":"Listing date, new to old","sold_out":"Out of Stock","subtotal":"Subtotal","wrong_quantity":"Invalid quantity input."},"common":{"add_to_cart":"Add to Cart","buy_at_least_one":"Purchase Quantity Must Be at Least 1","buy_now":"BUY NOW","cancel":"Cancel","confirm_submit":"Submit","contact_merchant":"Contact Shop","corona":{"confirm_no":"Cancel","confirm_yes":"Confirm","default_sort":"Store Recommendations","price_asc":"Price Low To High","price_desc":"Price High To Low","price_filter":"Price","recent_days_sold_desc":"Best Seller","select_page":"Select Page","select_sort_by":"Sort By","sell_from_asc":"Listing date, old to new","sell_from_desc":"Listing date, new to old","suggested_range":"Suggested Range"},"default_sort":"Store Recommendations","exceed_stock_quantity":"Exceeds Stock Quantity","exceed_upper_limit":"Exceeds Purchase Limit","failed_to_update_cart":"Failed to Update Shopping Cart","onsale":"On Sale","periodic_order_label":"Subscription","pre_order":"Pre-order","price_asc":"Price Low To High","price_desc":"Price High To Low","price_label":"Price","product_description":"Product Description","product_name":"Product Name","product_sold":"Sold {productSold} products","product_status_label":{"login_to_view":"Login to view","login_to_view_full":"Log in to check eligibility","member_exclusive":"For Selected Members Only","not_eligible":"Not eligible","not_eligible_full":"Not eligible for purchase","upcoming_product_with_time":"Sale starts on {time}"},"recent_days_sold_desc":"Best Seller","return":"Return","see_more":"See More","select_option":"Please select {option}","sell_from_asc":"Listing date, old to new","sell_from_desc":"Listing date, new to old","sold_out":"Out of Stock","subtotal":"Subtotal","system_busy_try_again":"System busy; please try again later.","theme":{"choose_specification":"Please Select Specifications","wrong_date":"Wrong Date"},"video_not_supported":"Your browser does not support HTML 5 video.","wrong_quantity":"Quantity Input Error"},"eticket_orders":{"category_all":"All Tickets","category_available":"Available","category_pending":"Unpaid","category_used":"Used up","eticket_orders_branch_stores_address":"Store Address","eticket_orders_branch_stores_name":"Store Name","eticket_orders_branch_stores_phone":"Store Phone","eticket_orders_branch_stores_show":"Show Redeemable Branch Stores","eticket_orders_cancel_order":"Cancel Order","eticket_orders_cancel_order_announcement":"I agree that the invalidation of the invoice or the \"businessman''s sales return, purchase, withdrawal or discount certificate\" will be fully handled by CYBERBIZ Corp. to facilitate the expediting of the refund process. If there is a return/discount, a discount order will be issued directly and uploaded to the Ministry of Finance''s electronic invoice integration service platform for storage. ","eticket_orders_cancel_order_cancel":"Cancel operation","eticket_orders_cancel_order_title":"Are you sure you want to cancel this order?","eticket_orders_canceled":"Canceled","eticket_orders_discounted_price":"Discounted Price","eticket_orders_eticket_notice":"E-ticket Notice","eticket_orders_go_to_payments":"Go to Payments","eticket_orders_invoice_infos":"Invoice Information","eticket_orders_invoice_number":"Invoice Number","eticket_orders_invoice_status":"Invoice Status","eticket_orders_order_date":"Order Date","eticket_orders_order_details":"Order Details","eticket_orders_order_established":"Order Established","eticket_orders_order_no_query_records":"No query records for this order at the moment","eticket_orders_order_notes":"Order Notes","eticket_orders_order_number":"Order Number","eticket_orders_order_query_records":"Query Records","eticket_orders_payment_infos":"Payment Information","eticket_orders_payment_method":"Payment Method","eticket_orders_payment_status":"Payment Status","eticket_orders_qrcode_download":"Download","eticket_orders_qrcode_not_used":"Not Used","eticket_orders_qrcode_quantity":"Quantity: {quantity}","eticket_orders_qrcode_share":"Share","eticket_orders_qrcode_share_text":"This is your e-ticket. Please keep it safe:\n{ title }-{ variantTitle }\nTicket number: { ticketNumber }","eticket_orders_qrcode_ticket_number":"ticket number: {ticket_number}","eticket_orders_qrcode_used":"Used","eticket_orders_qrcode_used_status":"Already used: {used} / Not yet used: {not_used}","eticket_orders_quantity":"Quantity: {quantity}","eticket_orders_send_etickets":"Send E-tickets","eticket_orders_send_message_to_shop":"Send Message to Shop","eticket_orders_separate_etickets":"Separate Etickets","eticket_orders_separate_etickets_cancel":"Cancel operation","eticket_orders_separate_etickets_confirm":"Confirm separate tickets","eticket_orders_separate_etickets_description":"Please note that you are about to go through the ticket splitting process. After splitting, each ticket will have an independent verification code QR Code (the original verification code QR Code will not be used). You can share screenshots of different verification codes with multiple people Use, this operation cannot be restored.","eticket_orders_submit":"Submit","eticket_orders_subtotal":"Subtotal","eticket_orders_title":"Eticket Order Inquiry","eticket_orders_total_price":"Total Price","eticket_orders_unused":"Unused: {quantity}","eticket_orders_usage_status":"Usage Status","eticket_orders_used":"Used: {quantity}","eticket_orders_view_order_details":"View Order Details","eticket_term_of_service":"CYBERBIZ E-Ticket Terms of Service","failed_to_send_message":"Message Sending Failed","order_empty_note":"No Information Available","payment_status_failed":"Payment Failed, Please Contact Customer Service","payment_status_pending":"Authorization Pending","payment_status_success":"Payment Successful","show_eticket_button_qr_code":"Display Ticket QR Code","show_eticket_button_used":"Ticket Already Used","usage_status_partial_used":"Partially Used","usage_status_used":"Fully Used"},"express_delivery":{"add_to_cart":"Add to Cart","add_to_cart_error":"Failed to Add to Cart.","address_incomplete":"Incomplete address entered.","address_incomplete_hint":"Your address is incomplete. Please input the correct address before adding to cart.","back_to_product_list":"Back to Product List","business_hours":"Business Hours","cancel":"Cancel","change":"Change","change_address":"Change Address","choose_store":"Select Delivery Store","cyberbiz_now":"CYBERBIZ NOW","default_sort":"Recommended","delivery_address":"Delivery Address","delivery_address_detail":"Floor or Unit Number","delivery_address_detail_hint":"Enter Floor or Unit Number","delivery_address_hint":"Enter Delivery Address","delivery_address_separate_tips":"Please enter floor or room number information separately","empty_collection":"This category currently has no products.","exit":"Confirm","exit_prompt":"Are you sure you want to exit Express Delivery?","express_delivery":"CYBERBIZ NOW","get_position_error_internal":"Error: Please enable browser access to location permissions.","get_position_error_no_permission":"Error: Please enable your web browser's location service.","get_position_error_require_https":"Error: HTTPS required.","get_position_error_timeout":"Error: Request timeout.","more_info":"More Information","not_search_stores_yet":"Please Click 'Search'","phone":"Contact Phone Number","please_select_specifications":"Please select specifications.","pre_order":"Pre-order","price_asc":"Price Low To High","price_desc":"Price High To Low","product_count":"A Total Of {totalCount}
145 Items","recent_days_sold_desc":"Bestselling","sales_start_info":"Sales Start on {time}","sales_start_info_verbose":"Sales Start on {day} {time}","search_failed":"Store search unsuccessful.","search_product_count":"You have searched for {selectedStoreName}'s products, totaling {count} items.","search_stores":"Search","sell_from_asc":"Listing date, old to new","sell_from_desc":"Listing date, new to old","service_description":"CYBERBIZ NOW Express Delivery Service Details:","service_description_detail":"This shopping service is provided by the CYBERBIZ system. We collaborate with third-party partners to offer delivery services, ensuring a faster shopping experience for you.","service_hours":"Available Time: {day} {time}","service_is_available":"The address you entered supports \"CYBERBIZ NOW Express Delivery\".","service_not_available_in_the_region":"We're sorry, the \"CYBERBIZ NOW Express Delivery\" service is currently not available in your area.","sold_out":"Out of Stock","store_address":"Store Address","store_address_info":"Address: {address}","store_is_closed":"Currently not accepting service","view_products":"View Products"},"express_delivery_with_regularly_used_address":{"address":"Delivery Address","address_detail":"Floor or Unit Number","address_detail_placeholder":"Enter Floor or Unit Number","address_incomplete_hint":"Please enter a complete delivery address","address_invalid_content":"Delivery address is required","address_placeholder":"Please enter a delivery address","button_create":"Add Address","button_save":"Save","button_save_as_regular":"Save as frequently used","cancel":"Cancel","create_address":"Add New Address","delete":"Delete","delete_failed":"Deletion failed","delete_hint":"Once the address is removed, it cannot be recovered.","delete_message":"Are you sure you want to delete this address?","delete_success":"Successfully deleted","edit":"Edit","empty_lists":"No frequently used delivery address","empty_lists_hint":"There are no addresses saved; please click [Add New Address] to create and set a default address.","limit_hint":"You can save up to 5 frequently used addresses. The system will automatically remove the earliest saved address.","name":"Name","name_invalid_content":"Name is required","name_placeholder":"Please enter a name","return":"Keep","save_as_regular":"Save as frequently used","save_success":"Success saved","search_failed":"No delivery stores available for this address. Please use a different delivery address.","select_address":"Select a frequently used delivery address","site":"Address","site_invalid_content":"Address is required","site_placeholder":"Please enter an address","title_address_lists":"Frequently used address saved","title_delete_address":"Are you sure you want to delete this address?","title_edit_address":"Edit delivery address","title_save_as_regular":"Save as frequently used"},"i18n_setting":{"currency":"Currency","language":"Language","language_currency_setting":"Language / Currency Settings"},"line_group_buy":{"add_to_cart":"Add to Cart","go_checkout":"Proceed to Checkout","product_description":"Description","product_shipping":"Shipping Method","product_spec":"Product Specifications"},"menu":{"fourDimensionMenu":{"account":"My Account","cart":"My Cart","help":"Help \u0026 Contact","locator":"Store Locator","wishlist":"My Wishlist"}},"omniauth_mobile":{"agree_label":"By proceeding with verification and completing membership registration, you agree to","and":"and","check_account":"Please fill in your mobile number for identity verification.","confirm_account_information":"Is the account information below belongs to you?","confirm_submit":" Submit","cyb_ToS_and_privacy_policy":"Terms of Service \u0026 Privacy Policy","enter_mobile_number":"Please enter your mobile number.","merge":"Yes, please merge my account.","mobile_number":"Mobile number","phone_validation":"Phone verification","reconfirm":"No, I want to verify again.","registered":"Already have an account ?","resend":" Resend","resend_with_timer":"({ timer } second) Resend","retry_later_error":"Reached system operation limit, please refresh and try again.","return_login":"Back to log in page","send_confirmation_token":"The verification code has been sent to your phone.","send_message":"Send Verification Code","shop_ToS":"Terms of Use","submit_btn":"Sign up","verification_code":"4-digit verification code"},"repurchase":{"alcohol_all_cannot_repurchase":"Products cannot be inquired again.","all_cannot_repurchase":"Products cannot be bought again.","comma":",","lense_all_cannot_repurchase":"Products cannot be delivered again.","partial_cannot_repurchase":"{ reasonList }please refer to your shopping cart.","quote_product_name":"{ productName }","reason_combo_product_changed":"changes for combo product(s)","reason_exceed_the_stock":"Out of stock item(s)","reason_product_is_discontinued":"unpublished item(s)","reason_product_not_found":"deleted item(s)","separator":","},"theme_pages":{"branch_store":{"get_store_empty":"No stores available","get_store_error":"An error occurred while loading store information","options_all_cities":"All Cities","search_stores":"Search","store_address":"Address: { address }","store_open_time":"Business Hours: { openingHours }
145","store_phone":"Phone: { phone }"},"collection":{"all_filters":"All Filters","failed_to_add_to_cart_contact_shop":"Failed to add to cart, please contact the shop","filter_button":"Filter","filter_no_result":"Sorry, no results","not_on_sale_yet":"Coming soon","please_reselect":"Try removing some filters to see more items","product_sold_out":"Sold Out","products_total":"Total of {totalProductCounts} Products","reset_all_filters":"Reset All Filters","reset_filter_button":"Reset Filter","suggested_range":"Suggested Range","view_product":"View Product"},"combo_product":{"add_cart_error_try_again":"Network error, please try again.","arrive_soon":"Arriving Soon","contact_shop":"Contact Shop","discount_bonus":"Redeemable credit(s) per item","has_stock":"In Stock","insufficient_selected_quantity":"Insufficient quantity, {count} more pieces required","inventory_status":"Inventory Status","less_than_count":"Quantity selected must be greater than {count}","limit_reached":"limit reached","no_stock":"Out of Stock","notification_enabled":"Notification Enabled","notify_me_when_stock_arrives":"Sold out! Notify me when the product is available.","over_cart_limit":"Quantity exceeds shopping cart limit; please remove some items and place the order again.","over_stock_quantity":"The quantity entered exceeds the stock quantity. Please decrease your order.","point_equal":"equivalent to","points":"credit(s)","pre_order":"Pre-order Goods","quantity_over_combo_product_limit":"Quantity exceeded required pieces","related_item_name":"Item Name","related_item_quantity":"Quantity","select_optional_combo_product_items":"Select Items","selectable_count":"{count} pieces required, ","selected_count":"{count} selected"},"contact":{"contact_form":"Contact Form","email":"Email Address","email_placeholder":"'Enter your email, e.g.: [email protected]'","fail_operation":"Something went wrong; please try again later!","invalid_email":"Invalid Email","invalid_name":"Name required","invalid_phone_number":"Phone Number Required","invalid_question_content":"Please enter your message","name":"Name","name_placeholder":"Enter your name","phone_number":"Phone Number","phone_number_placeholder":"Enter your phone number","question_content":"Message","question_content_placeholder":"Please enter your message","question_submit_fail":"Something went wrong; please try again later!","question_submit_success":"The question has been sent successfully. We will contact you as soon as possible!","question_type":"Question Type","success_operation":"Message Sent!"},"customer_coupon":{"customer_coupons_product_name":"Gift","customers_coupons_available_used":"Redeemable / Redeemed: ","customers_coupons_available_used_already_used":"{availableUsed} Coupon(s) / {alreadyUsed} Coupon(s)","customers_coupons_coupon":"Discount Coupon","customers_coupons_days":"Days","customers_coupons_discount":"% Off","customers_coupons_end_date":"End Date: ","customers_coupons_end_date_msg_1":"No expiration starting from {start_date}","customers_coupons_end_date_msg_2":"From Today to End Date {end_date}","customers_coupons_end_date_msg_3":"Available once order {name} is completed","customers_coupons_end_date_msg_4":"No Expiration","customers_coupons_expired":"Expired","customers_coupons_free_shipping":"FREE Shipping","customers_coupons_gift_coupon":"Gift Coupon","customers_coupons_left":"Left","customers_coupons_list_div":", ","customers_coupons_lookup_suit_product":"View products","customers_coupons_method":"Applicable Orders: ","customers_coupons_no_coupons_msg":"Sorry, no coupons available for your account!","customers_coupons_no_end_date":"No Expiration","customers_coupons_no_start_use":"Not Enabled","customers_coupons_not_suit":"Not combined with","customers_coupons_product_deleted":"The free gift product has been deleted.","customers_coupons_serial_number":"Code","customers_coupons_still_available":"{timesLeft} Coupon(s)","customers_coupons_suit_any_discount":"All promotions","customers_coupons_suit_any_product":"All products","customers_coupons_suit_discount":"Applicable Promotions: ","customers_coupons_suit_product":"Applicable Products: ","customers_coupons_unlimited":"Unlimited coupons","customers_coupons_unlimited_already_used":"Unlimited coupons / {alreadyUsed} Coupon(s)","threshold_hint":"Orders exceeding { price }"},"footer":{"about_us":"About Us","shop_address":"Address: ","shop_email":"Email: ","shop_fax":"Customer Service Fax: ","shop_phone":"Customer Service Hotline: ","shop_time":"Customer service hour: ","tax_id":"Tax ID: "},"order_return":{"account_name":"Bank Account Name","address1":"Return Address","all_return":"Return all","apply_fail":"Application Failed","apply_return":"Return Application","apply_return_success":"Refund Request Sent","apply_success":"Successful Application","bank_account":"Bank Account","bank_branch_name":"Name of Branch","bonus_redemption":"Exchange Credit Point(s)","check_account_length":"Please check the length of the bank account number","check_order":"My Order(s)","choose_branch_bank":"Select Bank Branch","choose_return_reason":"Select Return Reason","city":"City","confirm_return":"Apply Refund","country_placeholder":"Select country","coupon_free_shipping":"Free Shipping Coupon","deliver_error":"Delivery Error","discount_detail":"Discount Details","enter_account_name":"Enter bank account name","enter_return_reason":"Please specify the return reason","estimated_refund_amount":"Estimated refund amount","free":"Free","gift_price":"Add-on Price","gift_purchase":"Gift with purchase","include_discount_and_shipping_fee":"Including discount and shipping fee","keep_shopping":"Keep Shopping","keyin_address1":"Please enter the address we should collect the returning goods","keyin_city":"Please enter city name","keyin_zip":"Please enter postal code","line_item_quantity":"Quantity: {lineItemQuantity}","literal_points":"point(s)","new_product_defect":"Defect on New Product","order_date":"Order Date","order_number":"Order Number","order_retrun_confirm":"Are you sure you want to request a refund?","others":"Others","please_choose_bank":"Select Bank","please_select_country":"Select Bank Country","price_includes_tax":"(includes consumption tax of {tax})","product_content_defect":"Wrong Product or Incomplete Product","product_defect":"Defective Product","refund":"Refund Amount","refund_account":"Refund Account","refund_info":"Refund Information","refund_instruction":"Excluding discounts and shipping fees, the actual refund will be as per the system amount.","refund_invoice_check":"I agree to the cancellation of the invoice or the \"Tax Payment Certificate\", and g
145ive consent to {envoiceCompanyName} to be handled at discretion in order to expedite the refund process.","related_item":"{ name } x{ quantity }","return_address":"Return Address","return_email_notification":"A copy of the refund details have been sent to your email","return_info":"Return Information","return_instruction":"Return Information","return_item_error":"Please select at least one item to return.","return_msg_Taiwan_shop":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter to \"My Account\", find your order and click \"My Order(s)\", then click on \"Apply Refund\" as soon as possible. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e 2. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 3. After receiving the refund application, we will contact you to retrieve the goods. If you have any return questions, you can click \"Message Shop\" on the \"My Order(s)\" page. Please do not send back the goods by yourself.\u003cbr\u003e 4. Please print this application form and send it with the goods.\u003cbr\u003e 5. Once your returned item is received and reviewed, a refund will be made to your original payment method; it would take up to 5 to 10 days until it shows on your bank statement.\u003cbr\u003e","return_msg_not_Taiwan_shop":"1. If you find any defects or breakages upon receiving the goods and wish to apply for an exchange or refund, please log in to \"My Account\", locate your order, and click on \"My Order(s)\". Then select \"Apply Refund\". For detailed information and guidance, refer to the shop's return policy.\u003cbr\u003e 2. When returning or exchanging goods, please ensure that the original packaging is intact, including the purchased items, accessories, gifts, etc.\u003cbr\u003e 3. After receiving your refund application, we will contact you to arrange the retrieval of the goods. If you have any questions about the return, click \"Message Shop\" on the \"My Order(s)\" page. Please do not return the goods on your own.\u003cbr\u003e 4. Print this application form and include it with the returned goods.\u003cbr\u003e Once your returned item is received and reviewed, a refund will be issued to your original payment method or bank account. It may take 7 to 14 days for the refund to appear on your bank statement.","return_product":"Return Product","return_quantity":"Return quantity","return_reason":"Return Reason","shipping_fee":"Shipping Fee","state_placeholder":"Select state / province","tax":"Tax","total_bonus_redemption":"Total Credit Point(s) Redemption","tw_city_placeholder":"County / City","tw_district_placeholder":"District","vip_shipping_free":"Free Shipping For Members","zip":"ZIP / Postcode"},"product_collection":{"check_product":"View"},"product_list":{"must_confirmed":"Please \u003ca href=\"/account\"\u003evalidate your account\u003c/a\u003e to checkout.","must_sign_up":"Please \u003ca href=\"/account/login?{ path }\"\u003elog in\u003c/a\u003e or \u003ca href=\"/account/signup?{ path }\"\u003esign up \u003c/a\u003e to checkout."},"search":{"articles_total":"Total of { totalArticleCounts } Articles","continue_reading":"Continue Reading","search_article_label":"Article results ({ totalArticleCounts })","search_no_result":"Sorry, no results found by searching: { queryString }. Please try a different word.","search_product_label":"Product results ({ totalProductCounts })","search_total":"Search: { queryString } / { totalSearchCount } item(s) found"},"special_collection":{"already_choose_and_buy_more":"Selected {quantity} items, buy {quantity_more} more","buy_more_promotion":"to save more!","buy_quatity":"Buy {quantity} ","need_diopter":"Fill out the lens prescription first","need_login":"Login first","not_choose_items_yet":"No Item Selected Yet","not_choose_yet":"No Item","origin_price":"Original Price:","over_cart_limit":"Quantity exceeds shopping cart limit; please remove some items and place the order again.","over_stock":"Quantity exceeds inventory stock; please decrease the quantity selected","over_stock_count":"Quantity exceeds inventory stock. Remaining { count }","sales_price":"Price","select":"Select","selected":"Selected","special_collection_discount_per":"get every item for {price} off","special_collection_discount_pirce":"get discount of {price}","special_collection_discount_quatity1":"for {price}","special_collection_divided_by_ten":"get {percentage} % off"}},"validation":{"auth_to_add_notification":"Please login or register to register for notifications","check_email_immediately":"Check your mailbox","click_to_resend_validate_email":"Didn't receive the email? Please check spam or","click_to_resend_validate_sms":"Didn't receive the text message? Please click to resend","go_to_member":"Go to Member Center","resend_too_frequently":"Sent too frequently, please try again in a minute.","resend_validation_email_success":"Account verification letter has been resent","resend_validation_msg_failed":"Failed to resend the account verification message, please try again later.","resend_validation_sms_success":"Account verification SMS has been resent","second":"s","select_variant":"Please select the product style","send_valid_email_again":"Resend","send_validation_email1":"We have sent an email to your mailbox { customerEmail }","send_validation_email2":"Please follow the instructions in the email to activate your account","send_validation_sms1":"We have sent a text message to your mobile phone { customerMobile }","send_validation_sms2":"Please follow the text message prompts to complete account activation","validate_your_account":"Just one more step, complete the verification to activate your account.","wait_to_send_valid_email":"Resend after ({ seconds }s)"}}}},
146            hasI18nInContextEditing: false,
147            shopMultipleCurrenciesCheckout: false,
148            hasLocalizedShopPriceFormat: true,
149          }
150        </script>
150
151
152        
153        
153<script
154          src="//cdn-general.cybassets.com/frontend/shop/tolgeeIntegration-4a1e7dfec7e41476.js">
155        </script>
155
156        
156<script defer>
157          /*
158          * Enable in-context translation for Liquid part on the page.
159          * This must be executed last to prevent conflicts with other Vue apps.
160          * So put it to `onload`, which will be executed after DOM ready's app mount
161          */
162          window.onload = function() {
163            if (
164              window.shopScriptHelper &&
165              window.shopScriptHelper.hasI18nInContextEditing
166            ) {
167              window.initTolgeeForLiquid()
168            }
169          }
170        </script>
170
171
172<script> var google_con_event_labels = [{"conversion_id":"18038378516","conversion_event":"order_created","conversion_label":"5dszCO_m144cEJSgr5lD","id":null},{"conversion_id":" 18038378516","conversion_event":"add_to_cart","conversion_label":" j5O5CJfDt90cEJSgr5lD","id":null},{"conversion_id":"18038378516","conversion_event":"checkout_page","conversion_label":" h9jWCKOWp90cEJSgr5lD","id":null}]</script>
vendor: 1 bytes, line 172
172
173<script src="//cdn-general.cybassets.com/frontend/shop/pageEventHandler-4a1e7dfec7e41476.js"></script>
vendor: 1 bytes, line 173
173
174<script src="//cdn-general.cybassets.com/frontend/shop/globalAnalysis-e4c650eb0b.js"></script>
174
175        
175<script>
176          window.c12t = {"customer_id":null,"impressions":[{"name":"原味巧酥-600g享福包","id":"69730530","price":"650.0","brand":"唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮","category":"All Items","list":"default","position":1},{"name":"【Ovaltine】Chocolate Malt Pearl Milk Candy 50 g","id":"46834","price":"99.0","brand":"唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮","category":"All Items","list":"default","position":2},{"name":"【Ovaltine】Chocolate Malt Nougat With Biscuit 50 g","id":"46830","price":"99.0","brand":"唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮","category":"All Items","list":"default","position":3},{"name":"Michelin Strawberry Flavor Nougat - 50 g","id":"46822","price":"99.0","brand":"唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮","category":"All Items","list":"default","position":4},{"name":"Fuyuan Peanut Snow Q Cake (150g)","id":"30675","price":"160.0","brand":"唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮","category":"All Items","list":"default","position":5},{"name":"Fuyuan Peanut Snow Q Cake (150g)-copy","id":"77761","price":"99.0","brand":"唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮","category":"All Items","list":"default","position":6},{"name":"Nougat With Biscuit-Pineapple 120g ","id":"12600","price":"150.0","brand":"唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮","category":"All Items","list":"default","position":7},{"name":"Taiwanese Tempura ( Fish Cake )","id":"47993","price":"150.0","brand":"唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮","category":"All Items","list":"default","position":8},{"name":"Almond Fudge (caramel flavor) 100g","id":"30676","price":"180.0","brand":"唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮","category":"All Items","list":"default","position":9},{"name":"Almond Fudge (original flavor) 100g","id":"30677","price":"180.0","brand":"唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮","category":"All Items","list":"default","position":10}]};
177        </script>
177
178
179        <meta name="request-id" content="1A7CB598CE5893AB70BED94305AB57B1"/>
180
181<link rel="canonical" href="https://www.tangshop.com.tw/en/collections/all-product">
182<link rel="alternate" hreflang="zh-TW" href="https://www.tangshop.com.tw/zh-TW/collections/all-product">
183<link rel="alternate" hreflang="en" href="https://www.tangshop.com.tw/en/collections/all-product">
184<link rel="alternate" hreflang="x-default" href="https://www.tangshop.com.tw/zh-TW/collections/all-product">
185<script src="//cdn-general.cybassets.com/frontend/shop/carousel-4a1e7dfec7e41476.js"></script>
185
186          
186<script>
187            window.parent.postMessage({ type: 'previewShopInit', currentUrl: window.location.href }, '*');
188          </script>
188
189
190<script src="//cdn-general.cybassets.com/frontend/appStoreSDK/main.2798231628aa7fab87a9.js"></script>
vendor: 1 bytes, line 190
190
191<script>window.CYBERBIZ_AppScriptSettings = {"shop_add_ons":"W3sidmVuZG9yX3R5cGUiOiJDWUJFUkJJWiBHb29nbGUgQW5hbHl0aWNzIDQi\nLCJhcHBfaWQiOiJRVWo1WnFvZUlPUjlaM2JaS2trMG44N3l5a0FpOWU0NURE\naDJ0YlFnaUJBIiwic2V0dGluZ3MiOnsiZ3RhZ19pZCI6IkctUDM2WUhQM0dW\nRiwgRy00QjdSSzdGSFdIIn19LHsidmVuZG9yX3R5cGUiOiJHb29nbGUgQW5h\nbHl0aWNzIDQiLCJhcHBfaWQiOiJSYkpWMTVFcVZWOHJ1Umo3NVlmV3Z1RUlD\nRm90Q0FPZm0xSDZtZ3hyNkZBIiwic2V0dGluZ3MiOnsiZ3RhZ19pZCI6Ikct\nMjNTUDkyOUpGQ++8jEctNEJIVEwzRUc0Tu+8jEctRTVYS0IxRUxDNCJ9fSx7\nInZlbmRvcl90eXBlIjoiQ2hhdCBCb3giLCJhcHBfaWQiOiJjOWQ4M2YwOTk2\nMTc0ZmJiYTg2ZWJhMDQxYWU4OThhMiIsInNldHRpbmdzIjp7IndpZGdldF9r\nZXkiOiJqdHl3aEdzbmcyZWFHNDFBIn19LHsidmVuZG9yX3R5cGUiOiJEaWdp\ndGFsIEludGVsbGlnZW5jZSBUcmFja2VyIiwiYXBwX2lkIjoiMWI1MGE4NmRj\nMmQxNDE4Mzg4ZmRlZGY3YTBkNDM5YWUiLCJzZXR0aW5ncyI6e319XQ==\n"}
192</script>
vendor: 1 bytes, line 192
192
193<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/9d6f4550aad572e9f70abb70ae5a6552482cf617ea5e4d5a32ed4ebbb5d60d54.js"></script>
vendor: 1 bytes, line 193
193
194<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/a810ec58aab67d16f8de1c4adf06fc7cc9f4477ec503b9cb1a998741bc692652.js"></script>
vendor: 1 bytes, line 194
194
195<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/8766542902afa60f4adda3c555c06025d2c27771ea85a6fc657a91cddbe5c59f.js"></script>
vendor: 1 bytes, line 195
195
196<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/35cd1f36a4a855bacbaa53900f8e17b376d4cab44c73812eef261aef6435163d.js"></script>
vendor: 1 bytes, line 196
196
197<script>window.CYBERBIZ.initializeSDK.initialize();</script>
vendor: 1 bytes, line 197
197
198<script src="//cdn-general.cybassets.com/frontend/shop/setAffliateCookie-4a1e7dfec7e41476.js"></script>
198
199
200
201
202
203
204
205<meta name="title" content="所有商品 | 唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮">
206<meta property="og:title" content="所有商品 | 唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮">
207<meta name="description" content="原味巧酥-600g享福包 阿華田巧克力麥芽風味珍珠牛奶糖-50g 阿華田巧克力麥芽巧酥-50g 米其林草莓牛軋糖-50g">
208<meta property="og:description" content="原味巧酥-600g享福包 阿華田巧克力麥芽風味珍珠牛奶糖-50g 阿華田巧克力麥芽巧酥-50g 米其林草莓牛軋糖-50g">
209<meta name="keywords" content="所有商品">
210<meta property="og:url" content="https://www.tangshop.com.tw/en/collections/all-product">
211<meta property="og:type" content="og:product">
212
213
214  
215    
215<script src='//cdn-general.cybassets.com/frontend/shop/collectionPage-4a1e7dfec7e41476.js' type='text/javascript'></script>
215
216  
217  
218
219
220    <style id="color_settings">
221  :root {
222    
223      --button: #7c6767;
224    
225
226    
227      --button_text: #FFFFFF;
228    
229
230    
231      --accent: #f86f69;
232    
233
234    
235      --heading: #000000;
236    
237
238    
239      --text: #9A9EA2;
240    
241
242    
243      --price: #f86f69;
244    
245
246    
247      --discount_price: #f86f69;
248    
249
250    
251      --theme_bg: #FFFFFF;
252    
253
254    
255      --nav_logo_bg: #FFFFFF;
256    
257
258    
259      --nav_menu_bg: #FFFFFF;
260    
261
262    
263      --nav_menu_text: #000000;
264    
265
266    
267      --nav_menu_icon: #7c6767;
268    
269
270    
271      --footer_bg: #ffffff;
272    
273
274    
275      --footer_text: #9a9ea2;
276    
277
278    
279      --checkout_button: #000000;
280    
281
282    
283      --checkout_accent: #f86f69;
284    
285
286    
287      --product_border: #E2E2E2;
288    
289
290    
291      --tips_text: #0C5460;
292    
293
294    
295
296    
297  }
298</style>
299
300
301
302
303  
304        <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 74 bytes, lines 304-305
304
305          <script async src="https://www.googletagmanager.com/gtag/js?id=
305G-P36YHP3GVF
vendor: 22 bytes, lines 305-306
305"></script>
306          
306<script>
307            
vendor: 183 bytes, lines 307-312
307window.dataLayer = window.dataLayer || [];
308            function gtag(){dataLayer.push(arguments);}
309            gtag('js', new Date());
310            
311            
312      gtag('config', '
312G-23SP929JFC
vendor: 27 bytes, line 312
312', {"groups":"ecommerce"});
312gtag('config', 'AW-9355679060', {"groups":"dynamic_remarketing"});gtag('config', 'AW-9355679060', {'allow_enhanced_conversions':true});</script>
312
313      
313<script>
314        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
315        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
316        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
317        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
318
319        ga('create', '', 'auto', {'name': 'cyberbiz'});
320        ga('cyberbiz.require', 'displayfeatures');
321        ga('cyberbiz.set', 'dimension1', '19123');
322        ga('cyberbiz.require', 'ec');
323        ga('cyberbiz.send', 'pageview');
324      </script>
324
325    
326      
326<script>
vendor: 426 bytes, lines 326-333
326
327      !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
328      n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
329      n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
330      t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
331      document,'script','//connect.facebook.net/en_US/fbevents.js');
332
333      fbq('init', '
333841571876731294
vendor: 38 bytes, lines 333-334
333', {}, {'agent':'plcyberbiz'});
334      
334fbq('track', "PageView", '', { eventID: "PageView_1A7CB598CE5893AB70BED94305AB57B1" });
335      var facebook_pixel_id = '841571876731294'</script>
335
336
337    </head>
338
339  <body style="display: flex; flex-direction: column;"><!-- Google Tag Manager (noscript) -->
vendor: 74 bytes, lines 339-340
339
340            <noscript><iframe src="//www.googletagmanager.com/ns.html?id=
340GTM-WDZNN7G
vendor: 179 bytes, lines 340-343
340"
341            height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
342          
343            <noscript><iframe src="//www.googletagmanager.com/ns.html?id=
343GTM-W4482X4
vendor: 118 bytes, lines 343-346
343"
344            height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
345          
346            
346<noscript><iframe src="//www.googletagmanager.com/ns.html?id=AW-18038378516"
347            height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
348          <!-- End Google Tag Manager (noscript) -->
vendor: 74 bytes, lines 348-350
348
349      <noscript><iframe
350      src="//www.googletagmanager.com/ns.html?id=
350GTM-TXD9LVJ
vendor: 186 bytes, lines 350-357
350"
351      height="0"
352      width="0"
353      style="display:none;visibility:hidden">
354      </iframe></noscript>
355    
356      <noscript><iframe
357      src="//www.googletagmanager.com/ns.html?id=
357GTM-P7528MQ
vendor: 117 bytes, lines 357-363
357"
358      height="0"
359      width="0"
360      style="display:none;visibility:hidden">
361      </iframe></noscript>
362    
363    
363<!-- Navigation -->
364    <!-- cyb_snippet liquid_helper start -->
365<script>
366	function getDiscountPriceName() {
367		return "false" === "true" ? "" : "";
368	}
369
370	function getDiscountPriceSuggestionName() {
371		return "false" === "true" ? "" : "";
372	}
373
374  document.addEventListener('DOMContentLoaded', function() {
375    const languageHandle = Cookies.get("language");
376    const defaultLanguage = {"handle":"zh-TW","title":"繁體中文","currency_code":"TWD"};
377    const languages = [{"handle":"zh-TW","title":"繁體中文","currency_code":"TWD"},{"handle":"en","title":"English","currency_code":"USD"}];
378    const currency = window.shopScriptHelper.defaultCurrency;
379    const currencies = window.shopScriptHelper.currenciesInfo;
380		window.liquidHelper = {
381			shopInternational: true,
382			defaultLanguage: defaultLanguage,
383			language: languages.find(function(l) {
384				return l.handle === languageHandle;
385			}) || defaultLanguage,
386      shopMultipleCurrenciesCheckout: false,
387			shopMultipleCurrencies: true,
388			defaultCurrencyFormat: "NT${{amount_no_decimals}}",
389			defaultCurrency: currency,
390			getCurrency: function() {
391        const currencyValue = Cookies.get("currencyValue") || currency;
392        return currencies.find(function(c) { return c.code === currencyValue; }
393      )},
394      getDefaultCurrency: function() { return currencies.find(function(c) {
395				return c.code === currency;
396			})},
397      getAvailableCurrencies: function() { return currencies.map(c => c.code) },
398      getCurrencyFormatInfo: function(currency) {
399        const currencyInfo = currencies.find(c => c.code === currency)
400        return _.pick(currencyInfo, [
401          'decimal_precision',
402          'symbol',
403          'money_format',
404          'unit',
405          'trailing_zeros',
406          'html_unit',
407          'code',
408        ]);
409      },
410			cartQuantityLimit: (function() {
411        const limit = Number("0" || undefined);
412        return limit <= 0 || isNaN(limit) ? Number.POSITIVE_INFINITY : limit;
413      })(),
414			isFirstVariantSelected:  false ,
415			isImageColorsUsed:  false ,
416			isEmptyClickable:  true ,
417			hasAddBuyProduct: '' !== "" ? true : false,
418			hasPriceWithDiscountPlugin: 'true' ? true : false,
419      conversionBonus: 1,
420      hasLocalizedShopPriceFormat: true,
421      hasCustomerCartPlugin: true,
422      isCartEnabled: true,
423      cdnHost: '//cdn-general.cybassets.com',
424      hasShopCustomPasswordRulePlugin: false,
425      hasDisableProductQuantityValidation: false,
426      hasBreadcrumbReferrerEnabled: false,
427		};
428	});
429</script>
429
430
431<!-- cyb_snippet liquid_helper end -->
432
433<script src='//cdn-general.cybassets.com/frontend/shop/navbarSection-4a1e7dfec7e41476.js' type='text/javascript'></script>
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450<style>
451  
452    #navbar {
453      --navbar-pc-title-scale: 1.0;
454      --navbar-pc-body-scale: 1.0;
455      --navbar-mobile-title-scale: 1.0;
456      --navbar-mobile-body-scale: 1.0;
457    }
458  
459
460  
461
462  
463</style>
464
465
466  <span id="navbar" class="drawer drawer--left font-size-setting-enabled">
467    <header id="header" class="qk-w--100vw qk-pos--fixed qk-t--0 qk-l--0">
468      
469
470      
471        <div id="announcement-bar"></div>
472      
473
474      
475      
476        
477
478        <div class="computer_nav row_nav qk-hidden--mobile ">
479          <div class="header_logo qk-bg--nav_logo_bg">
480            <div class="qk-pos--rel">
481              <div class="qk-text--center qk-display--flex">
482                <!-- logo start -->
483                
484                
485                  <nav class="logo qk-display--il_bk">
486                    <a href="/" class="qk-w--100">
487                      <img
488                        src="//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzI3MzIyNzAyX-e2suermeaWsExPR08t5ZSQ6IiW5a2QMTAwcHhf5bel5L2c5Y2A5Z-fIDEgKDEpLmpwZy5qcGVnIl1d.jpeg?sha=f2f010d7aa3eaf8b"
489                        class="qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--pc_logo qk-hidden--mobile"
490                        style="width: auto; height: 52px;"
491                        alt=""
492                        height="52"
493                        width="auto"
494                      >
495                    </a>
496                  </nav>
497                
498                <!-- logo end -->
499                
500                  <div class="header_nav qk-flex--1">
501                    <div class="qk-pos--relative center qk-pd_r--1 qk-w--100">
502                      <!-- main-nav start -->
503                      <nav class="main_nav qk-display--init">
504                        <!-- cyb_snippet _main_nav_skeleton start --><ul
505    class="main_nav_skeleton link_shelf_top qk-display--flex qk-flex--row qk-flex--wrap qk-justify--center qk-align--center qk-body"
506    style="justify-content: center; visibility: hidden;"
507    aria-hidden="true"
508  ><span>
509        <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/all-product" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">All Products</a></li>
510      </span><span>
511        <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/classic-nougat" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Almond Nougat Series</a></li>
512      </span><span>
513        <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/snowflake-nougat" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Nougat With Biscuits</a></li>
514      </span><span>
515        <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/milk-caramel" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Fudge / Caramel / Milk Candy</a></li>
516      </span><span>
517        <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/original-toffee-cashew-crisp" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Nutty Toffee</a></li>
518      </span><span>
519        <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/walnut-cake" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Black Date & Walnut Soft Candy</a></li>
520      </span><span>
521        <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/20240101" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Gift Box</a></li>
522      </span><span>
523        <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/ovaltine_fuyuan" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Collaboration Collection</a></li>
524      </span><span>
525        <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/其他商品" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Additional Products</a></li>
526      </span><span>
527        <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/pages/門市據點" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Our Stores</a></li>
528      </span></ul><!-- cyb_snippet _main_nav_skeleton end -->
529                      </nav>
530                      <!-- main-nav end -->
531                    </div>
532                  </div>
533                
534                <!-- tool-nav start -->
535                
536                  <div style="display: flex; align-items: center; position: relative; top: -12px;">
537                    <!-- cyb_snippet tool_nav start -->
538
539
540
541
542
543
544<nav class="tool-nav qk-pos--rel qk-float--r qk-display--flex">
545  <ul class="link_shelf_top qk-display--flex qk-flex--row qk-justify--end qk-align--center qk-pos--abs qk-r--0">
546    
547    
548      
549      <li class="i18n-selector qk-fs--body qk-text--nav_menu_icon qk-bd--nav_menu_icon qk-btn"></li>
550    
551    <!-- member -->
552    
553      <li class="customer_account qk-pos--rel qk-pd--05">
554        <div class="dropdown qk-pos--static">
555          <div class="qk-cursor--pointer" data-toggle="dropdown">
556            <div data-icon-type="custom_icon_type_account"></div>
557            <span class="text"></span>
558          </div>
559          <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">
560            <ul id="customer-logined-menu" style="display: none">
561              <li>
562                <div class="qk-fs--body qk-text--heading">
563                  <p class="customer-name qk-whitespace-break-spaces"></p>
564                  <p>Welcome!</p>
565                </div>
566              </li>
567            </ul>
568            <ul id="customer-not-login-menu">
569              <li class="button qk-text--center">
570                <a href="/en/account/login" class="btn-login qk-btn qk-btn--lg qk-btn--primary qk-w--100">Log in</a>
571              </li>
572              <li class="button qk-text--center">
573                <a href="/en/account/signup" class="btn-orders qk-btn qk-btn--lg qk-btn--secondary qk-w--100 qk-bg--transparent">Sign up</a>
574              </li>
575            </ul>
576            <span class="menu-bd qk-bd_t--default qk-bd--product_border"></span>
577            <ul class="member-menu qk-bd_t--default qk-bd--product_border">
578              <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg">
579                <a href="/en/account/index" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">My Account</a>
580              </li>
581              <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg">
582                <a href="/en/account/orders" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">My Order(s)</a>
583              </li>
584              <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg">
585                <a href="/en/account/coupons" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">My Coupon(s)</a>
586              </li>
587              <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg">
588                <a href="/en/account/tracking_items" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">My Wishlist</a>
589              </li>
590              <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">
591                <a href="/en/account/logout" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">Logout</a>
592              </li>
593            </ul>
594          </div>
595        </div>
596      </li>
597    
598    <!-- for money symbol -->
599    <div id="money-symbol" data-money-symbol="NT${{amount_no_decimals}}" hidden></div>
600    <!-- cart -->
601    
602      <li class="cart qk-pos--rel qk-pd--05">
603        <!--電腦版的購物車選單-->
604        <div class="dropdown qk-pos--static">
605          <div data-toggle="dropdown" class="shopcart qk-cursor--pointer" >
606            <div data-icon-type="custom_icon_type_cart"></div>
607            <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>
608            <span class="global-cart-loading"></span>
609          </div>
610          <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">
611            <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>
612            <p class="cart_empty qk-fs--body qk-text--heading qk-text--center">There are no items in your cart.</p>
613            <ul>
614              <li class="button qk-text--center">
615                <a class="btn-checkout qk-btn qk-btn--lg qk-btn--primary qk-w--100" href="/en/cart" style="display: none">BUY NOW</a>
616                <a class="btn-tracking qk-btn qk-btn--lg qk-btn--secondary qk-w--100 qk-bg--trans
616parent" href="/en/account/tracking_items">Go to Wishlist</a>
617              </li>
618            </ul>
619          </div>
620        </div>
621      </li>
622    
623    <!-- search -->
624    
625      <li class="search qk-pos--rel qk-pd--05" id="search-icon">
626        <div class="dropdown qk-pos--static">
627          <div class="qk-cursor--pointer" data-toggle="dropdown">
628            <div data-icon-type="custom_icon_type_search"></div>
629          </div>
630          <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">
631            <div class="search-area qk-display--flex qk-flex--row qk-justify--start qk-align--center qk-vert--mid">
632              <form action="/search" class="form-inline qk-search_form qk-display--flex qk-justfify--between qk-align--center qk-flex--1">
633                <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="Search" aria-label="Search" name="q" value="" />
634                <button class="search-btn qk-btn qk-btn--lg qk-btn--primary qk-pd--0" type="submit">Search</button>
635              </form>
636            </div>
637          </div>
638        </div>
639      </li>
640    
641    <!-- express delivery -->
642    
643  </ul>
644</nav>
645
646<!-- cyb_snippet tool_nav end -->
647                  </div>
648                
649                
650                <!-- tool-nav end -->
651              </div>
652            </div>
653          </div>
654        </div>
655      
656      <div class="qk-hidden--pc  ">
657        <!-- mobile-nav start -->
658        <nav class="mobile-nav qk-bg--nav_logo_bg">
659          <ul class="qk-display--flex qk-flex--row qk-justify--between qk-align--center qk-pd_x--05 qk-pd_y--0">
660            <!-- menu -->
661            
662              <li class="sidebar-menu-icon drawer-toggle qk-text--center qk-pd_x--05 qk-pd_y--0 qk-display--flex qk-align--center">
663                <div data-icon-type="custom_icon_type_menu"></div>
664              </li>
665            
666            <!-- logo -->
667            
668              <li class="logo qk-pos--abs qk-center--x qk-pd_y--0">
669                
670                  <a href="/" class="qk-display--il_flex qk-align--center qk-h--100 qk-hidden--phone">
671                    <img
672                      src="//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzI3MzIyNzAyX-e2suermeaWsExPR08t5ZSQ6IiW5a2QMTAwcHhf5bel5L2c5Y2A5Z-fIDEgKDEpLmpwZy5qcGVnIl1d.jpeg?sha=f2f010d7aa3eaf8b"
673                      height="25"
674                      width="auto"
675                      alt=""
676                    >
677                  </a>
678                
679                
680                  <a href="/" class="qk-display--il_flex qk-align--center qk-h--100 qk-hidden--tablet">
681                    <img
682                      src="//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzI3MzIyNzAyX-e2suermeaWsExPR08t5ZSQ6IiW5a2QMTAwcHhf5bel5L2c5Y2A5Z-fIDEgKDEpLmpwZy5qcGVnIl1d.jpeg?sha=f2f010d7aa3eaf8b"
683                      height="25"
684                      width="auto"
685                      alt=""
686                    >
687                  </a>
688                
689              </li>
690            
691            
692              <!-- search -->
693              
694                <li class="search qk-text--center qk-pd_x--05 qk-pd_y--0 qk-display--flex qk-align--center qk-mg_l--auto">
695                  <div class="dropdown qk-pos--static qk-text--center">
696                    <div class="qk-cursor--pointer" data-toggle="dropdown">
697                      <div data-icon-type="custom_icon_type_search"></div>
698                    </div>
699                    <div
700                      class="qk-dropdown_menu dropdown-menu qk-w--100vw qk-bg--theme_bg qk-bd--default qk-bd--product_border qk-mg--0"
701                      role="menu"
702                    >
703                      <div class="search-area qk-display--flex qk-flex--row qk-justify--start qk-align--center qk-sp_bt--5 qk-w--100">
704                        <form action="/search" class="form-inline qk-display--flex qk-justfify--center qk-flex--1">
705                          <div class="form-inline qk-search_form qk-display--flex qk-justfify--center qk-align--center qk-flex--1">
706                            <input
707                              class="form-control qk-flex--1 qk-inputbox qk-inputbox--lg qk-bg--trans
707parent qk-text--heading"
708                              type="search"
709                              placeholder="Search"
710                              aria-label="Search"
711                              name="q"
712                              value=""
713                            >
714                            <button class="search-btn qk-btn qk-btn--lg qk-btn--primary qk-pd--0" type="submit">
715                              Search
716                            </button>
717                          </div>
718                        </form>
719                      </div>
720                    </div>
721                  </div>
722                </li>
723              
724              <!-- express delivery -->
725              
726            
727          </ul>
728        </nav>
729        <!-- mobile-nav end -->
730      </div>
731      
732    </header>
732<script>
733      (function () {
734        var isNavbarTransparent = false;
735
736        function measureHeaderOffset() {
737          var header = document.getElementById('header');
738          if (!header) return null;
739
740          var headerHeight = header.getBoundingClientRect().height;
741
742          if (isNavbarTransparent && window.matchMedia('(min-width: 992px)').matches) {
743            var computerNav = document.querySelector('.computer_nav');
744            if (computerNav) {
745              headerHeight -= computerNav.getBoundingClientRect().height;
746            }
747          }
748
749          var floatFilter = document.getElementById('float-filter');
750          var floatFilterHeight = floatFilter
751            ? floatFilter.getBoundingClientRect().height
752            : 0;
753
754          return headerHeight - floatFilterHeight;
755        }
756
757        window.measureHeaderOffset = measureHeaderOffset;
758
759        var offset = measureHeaderOffset();
760        if (offset !== null) {
761          document.body.style.paddingTop = offset + 'px';
762        }
763      })();
764    </script>
764
765    
766      <!-- Sidebar -->
767      <nav class="drawer-nav drawer-nav_width qk-bg--nav_menu_bg " role="navigation">
768        <div class="drawer-menu">
769          <!-- cyb_snippet side_menu start -->
770
771
772<ul id="index_sidebar_shelf_top" class="sidebar qk-pd_b--1">
773  
774    <li class="logo qk-pos--rel qk-bg--nav_logo_bg qk-pd_x--1 qk-pd_y--05">
775      <a href="/" class="qk-pd--0">
776        <img src="//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzI3MzIyNzAyX-e2suermeaWsExPR08t5ZSQ6IiW5a2QMTAwcHhf5bel5L2c5Y2A5Z-fIDEgKDEpLmpwZy5qcGVnIl1d.jpeg?sha=f2f010d7aa3eaf8b" height="32" width="auto" alt="logo">
777      </a>
778      <button class="drawer-toggle qk-pos--abs qk-bg--transparent qk-pd--0"></button>
779    </li>
780  
781  
782    
783
784    
785      <!-- cyb_snippet components/side_menu/menu start -->
786
787  <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>
788
789
790  
791  
792  
793    <li class="qk-pos--rel qk-pd--0">
794      
795        <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/all-product">All Products</a>
796      
797    </li>
798  
799
800  
801  
802  
803    <li class="qk-pos--rel qk-pd--0">
804      <button class="linklist bt-toggle qk-fw--bold  collapsed  qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-text--nav_menu_text qk-bg--nav_menu_bg qk-pos--rel" data-toggle="collapse" data-target=".collapse_index_sidebar_2" aria-expanded=" false ">
805        
806          <a class="qk-text--nav_menu_text" href="/collections/classic-nougat"> Almond Nougat Series </a>
807        
808      </button>
809      <ul id="index_sidebar_shelf_second_2" class="collapse_index_sidebar_2 collapse shelf_second  qk-pd--0">
810        
811          
812          
813          
814            <li class="qk-pos--rel qk-pd--0">
815              
816                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/originalnougat">
817                  Original Flavor Nougat
818                </a>
819              
820            </li>
821          
822        
823          
824          
825          
826            <li class="qk-pos--rel qk-pd--0">
827              
828                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/strawberry-nougat">
829                  Strawberry Flavor Nougat
830                </a>
831              
832            </li>
833          
834        
835          
836          
837          
838            <li class="qk-pos--rel qk-pd--0">
839              
840                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/pineapple-nougat">
841                  Pineapple Flavor Nougat
842                </a>
843              
844            </li>
845          
846        
847          
848          
849          
850            <li class="qk-pos--rel qk-pd--0">
851              
852                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/sesamenougat">
853                  Black Sesame Flavor Nougat
854                </a>
855              
856            </li>
857          
858        
859          
860          
861          
862            <li class="qk-pos--rel qk-pd--0">
863              
864                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/salted-egg-yolk-nougat">
865                  Salted Yolk Nougat
866                </a>
867              
868            </li>
869          
870        
871      </ul>
872    </li>
873  
874
875  
876  
877  
878    <li class="qk-pos--rel qk-pd--0">
879      
880        <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/snowflake-nougat">Nougat With Biscuits</a>
881      
882    </li>
883  
884
885  
886  
887  
888    <li class="qk-pos--rel qk-pd--0">
889      
890        <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/milk-caramel">Fudge / Caramel / Milk Candy</a>
891      
892    </li>
893  
894
895  
896  
897  
898    <li class="qk-pos--rel qk-pd--0">
899      <button class="linklist bt-toggle qk-fw--bold  collapsed  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_5" aria-expanded=" false ">
900        
901          <a class="qk-text--nav_menu_text" href="/collections/original-toffee-cashew-crisp"> Nutty Toffee </a>
902        
903      </button>
904      <ul id="index_sidebar_shelf_second_5" class="collapse_index_sidebar_5 collapse shelf_second  qk-pd--0">
905        
906          
907          
908          
909            <li class="qk-pos--rel qk-pd--0">
910              
911                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/腰果">
912                  Nutty Toffee ( Bag Size)
913                </a>
914              
915            </li>
916          
917        
918          
919          
920          
921            <li class="qk-pos--rel qk-pd--0">
922              
923                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/歸me酥">
924                  Nutty Toffee (Box Size)
925                </a>
926              
927            </li>
928          
929        
930      </ul>
931    </li>
932  
933
934  
935  
936  
937    <li class="qk-pos--rel qk-pd--0">
938      
939        <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/walnut-cake">Black Date & Walnut Soft Candy</a>
940      
941    </li>
942  
943
944  
945  
946  
947    <li class="qk-pos--rel qk-pd--0">
948      
949        <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/20240101">Gift Box</a>
950      
951    </li>
952  
953
954  
955  
956  
957    <li class="qk-pos--rel qk-pd--0">
958      <button class="linklist bt-toggle qk-fw--bold  collapsed  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_8" aria-expanded=" false ">
959        
960          <a class="qk-text--nav_menu_text" href="/collections/ovaltine_fuyuan"> Collaboration Collection </a>
961        
962      </button>
963      <ul id="index_sidebar_shelf_second_8" class="collapse_index_sidebar_8 collapse shelf_second  qk-pd--0">
964        
965          
966          
967          
968            <li class="qk-pos--rel qk-pd--0">
969              
970                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/ovaltine_co-branded-series">
971                  Ovaltine Series
972                </a>
973              
974            </li>
975          
976        
977          
978          
979          
980            <li class="qk-pos--rel qk-pd--0">
981              
982                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/fuyuan-peanut-butter_co-branded-series">
983                  Fuyuan Peanut Butter Series
984                </a>
985              
986            </li>
987          
988        
989      </ul>
990    </li>
991  
992
993  
994  
995  
996    <li class="qk-pos--rel qk-pd--0">
997      <button class="linklist bt-toggle qk-fw--bold  collapsed  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_9" aria-expanded=" false ">
998        
999          <a class="qk-text--nav_menu_text" href="/collections/其他商品"> Additional Products </a>
1000        
1001      </button>
1002      <ul id="index_sidebar_shelf_second_9" class="collapse_index_sidebar_9 collapse shelf_second  qk-pd--0">
1003        
1004          
1005          
1006          
1007            <li class="qk-pos--rel qk-pd--0">
1008              
1009                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/appetizers_sauce">
1010                  Appetizer Sauce
1011                </a>
1012              
1013            </li>
1014          
1015        
1016          
1017          
1018          
1019            <li class="qk-pos--rel qk-pd--0">
1020              
1021                <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="/products/ts2001">
1022                  Sesame Crisps
1023                </a>
1024              
1025            </li>
1026          
1027        
1028          
1029          
1030          
1031            <li class="qk-pos--rel qk-pd--0">
1032              
1033                <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="/products/ts3402">
1034                  Taiwanese Tempura ( Fish Cake )
1035                </a>
1036              
1037            </li>
1038          
1039        
1040          
1041          
1042          
1043            <li class="qk-pos--rel qk-pd--0">
1044              
1045                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/brown-sugar">
1046                  黑糖塊
1047                </a>
1048              
1049            </li>
1050          
1051        
1052      </ul>
1053    </li>
1054  
1055
1056  
1057  
1058  
1059    <li class="qk-pos--rel qk-pd--0">
1060      
1061        <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/門市據點">Our Stores</a>
1062      
1063    </li>
1064  
1065
1066
1067<script>
1068  $('button a').on('click', function(e) {e.stopPropagation()});
1069</script>
1069
1070
1071<!-- cyb_snippet components/side_menu/menu end -->
1072    
1073  
1074  
1075    
1076      <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">Account</li>
1077      <li class="qk-pos--rel qk-pd--0">
1078        <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none">
1079          <a href="/en/account/index" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">My Account</a>
1080        </div>
1081      </li>
1082      <li class="qk-pos--rel qk-pd--0">
1083        <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none">
1084          <a href="/en/account/orders" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">My Order(s)</a>
1085        </div>
1086      </li>
1087      <li class="qk-pos--rel qk-pd--0">
1088        <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none">
1089          <a href="/en/account/logout" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">Logout</a>
1090        </div>
1091      </li>
1092      <li class="qk-pos--rel qk-pd--0">
1093        <a href="/en/account/login">
1094          <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 ">
1095            <span class="qk-text--nav_menu_bg qk-fw--500 qk-fs--body">
1096              Log in
1097            </span>
1098          </div>
1099        </a>
1100      </li>
1101      <li class="qk-pos--rel qk-pd--0">
1102        <a href="/en/account/signup">
1103          <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">
1104            <span class="qk-text--nav_menu_text qk-fs--body qk-fw--500">
1105              Sign up
1106            </span>
1107          </div>
1108        </a>
1109      </li>
1110    
1111    
1112    
1113    
1114      <li class="category_title qk-bd--nav_menu_text qk-fs--breadcrumb qk-text--nav_menu_text qk-bd_y--default qk-fw--500">
1115        
1116          Language
1117        
1118        
1119          |
1120        
1121        
1122          Currency
1123        
1124      </li>
1125      <li id="side-menu-modal__button" class="qk-text--nav_menu_text qk-fw--bold language_button qk-fs--body qk-text--nav_menu_text">
1126      </li>
1127    
1128  
1129</ul>
1130
1131<link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/sidebar-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' />
1132
1133<script>
1134  $(document).ready(function(){
1135    // 側邊選單
1136    if ($('.drawer').length){
1137      $('.drawer').drawer();
1138      $('.bt-toggle').click(function(){
1139        setTimeout(function(){
1140          $('.drawer')[0].iScroll.refresh()
1141        },500)
1142      })
1143    }
1144  });
1145</script>
1145
1146
1147<script>
1148  $(document).ready(function(){
1149    const languageSize = 2
1150    const currencySize = 1
1151
1152    const initLanguageAndCurrency = ({language,code})=> {
1153      const contentSelector = $("#side-menu-modal__button");
1154      let content = ''
1155      const isMutipleCurrencies = true
1156      const isMultiLanguages = true
1157      if ( isMultiLanguages && languageSize > 1 ) content = language || (liquidHelper.language && liquidHelper.language.title)
1158      if ( isMutipleCurrencies && (code && content === '')) content = code
1159      else if (isMutipleCurrencies && (code && content !=='')) content = `${content}|${code}`
1160      contentSelector.text(content)
1161    }
1162
1163    let code = ''
1164    let language = ''
1165    if (liquidHelper.language) language  = liquidHelper.language
1166    if (liquidHelper.getCurrency()) code = liquidHelper.getCurrency().code
1167
1168    initLanguageAndCurrency({ language:language.title, code })
1169
1170    $("#side-menu-modal__button").click(function() {
1171      const clickable = languageSize > 1 || currencySize > 1
1172      if (clickable) {
1173        $('.drawer').drawer('close');
1174        const event = new CustomEvent("i18n_selector_clicked");
1175        document.dispatchEvent(event);
1176      }
1177    });
1178
1179    document.addEventListener('i18n_modal_confirmed', (e) => {
1180      const { languageTitle, currency } = e.detail;
1181      initLanguageAndCurrency({ language: languageTitle, code: currency });
1182    });
1183  });
1184
1185</script>
1185
1186
1187
1188<!-- cyb_snippet side_menu end -->
1189
1190        </div>
1191      </nav>
1192      <!-- Bottombar -->
1193      
1194        <div
1195          id="mobile-bottom-bar"
1196          class="qk-display--flex qk-justify--around qk-bg--nav_logo_bg qk-w--100vw qk-pos--fixed qk-b--0 qk-hidden--pc"
1197        >
1198          <!-- home -->
1199          <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1">
1200            <a id="home-nav-icon" href="/">
1201              <div data-icon-type="custom_icon_type_home"></div>
1202            </a>
1203          </div>
1204          <!-- tracking items -->
1205          <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1">
1206            <a href="/en/account/tracking_items">
1207              <div data-icon-type="custom_icon_type_tracking_items" c></div>
1208            </a>
1209          </div>
1210          <!-- cart -->
1211          
1212            <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1">
1213              <a
1214                href="/en/cart"
1215                class="qk-display--il_flex qk-flex--row qk-justify--center qk-align--center qk-vert--mid qk-pos--rel"
1216              >
1217                <div data-icon-type="custom_icon_type_cart"></div>
1218                <span
1219                  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"
1220                  style="display: none;"
1221                  >0</span
1222                >
1223              </a>
1224            </div>
1225          
1226          <!-- member -->
1227          
1228            <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1">
1229              <a id="customer-phone-nav-icon" href="/en/account/login">
1230                <div data-icon-type="custom_icon_type_account"></div>
1231              </a>
1232            </div>
1233          
1234        </div>
1235      
1236    
1237  </span>
1238
1239<div id="index-popular-tags"></div>
1240
1241<style id="timer_color">
1242  :root {
1243    
1244      --timer_text: #c39d6f;
1245    
1246
1247    
1248      --timer_bg: #2b2b6e;
1249    
1250  }
1251</style>
1252
1253<script>
1254  window.language = {"account_name":"Bank Account Name","add_cart_error_try_again":"Network error, please try again.","add_to_cart":"ADD TO CART","addcart_rate_limit_desc":"seconds until you can try again. We recommend staying on this page.","address1":"Return Address","all_filters":"All Filters","apply_fail":"Application Failed","apply_return":"Return Application","apply_return_success":"Refund Request Sent","apply_success":"Successful Application","arrive_soon":"Arriving Soon","articles_total":"Total of {{ totalArticleCounts }} Articles","bank_account":"Bank Account","bank_branch_name":"Name of Branch","bonus_redemption":"Exchange Credit Point(s)","cancel":"Cancel","cart_price_total":"Total","check_order":"My Order(s)","choose_branch_bank":"Select Bank Branch","choose_return_reason":"Select Return Reason","city":"City","common_price":"Retail Price","comply_group_number":"Comply {{comply_group_number}} group(s) of discount, ","confirm":"Confirm","confirm_return":"Apply Refund","confirm_submit":"Submit","congratulations_for_verify_mobile_success":"Congratulations, you've successfully verified your phone!","contact_form":"Contact Form","continue_reading":"Continue Reading","country_placeholder":"Select country","coupon_free_shipping":"Free Shipping Coupon","coupon_items":"Coupon Discount Item","date_error":"Date error","default_sort":"Store Recommendations","deliver_error":"Delivery Error","discount_detail":"Discount Details","email":"Email Address","email_placeholder":"Enter your email, e.g.: [email protected]","enter_account_name":"Enter bank account name","enter_bank_account":"Enter bank account number","enter_return_reason":"Please specify the return reason","error_message":"An error has occurred when sending a verification message; please try again later.","fail_operation":"Something went wrong; please try again later!","filter_button":"Filter","filter_no_result":"Sorry, no results","free":"Free","gift_price":"Add-on Price","gift_purchase":"Gift with purchase","go_check_email":"Please check your mailbox; we've just sent you an email.","group_percent_discount":"{{percent_discount}} % off item(s) in the group.","has_stock":"In Stock","include_discount_and_shipping_fee":"Including discount and shipping fee","invalid_email":"Invalid Email","invalid_name":"Name required","invalid_phone_number":"Phone Number Required","invalid_question_content":"Please enter your message","keep_shopping":"Keep Shopping","keyin_address1":"Please enter the address we should collect the returning goods","keyin_city":"Please enter city name","keyin_zip":"Please enter postal code","less_then_one":"Quantity must be greater than 0; please select the amount to purchase.","line_item_quantity":"Quantity: {{ lineItemQuantity }}","literal_points":"point(s)","login_btn":"Log in","mail_send_fail":"Failed to send mail.","message_confirmation_token_error":"Error in verification code.","messenger_error_please_try_again":"An error has occurred when sending the message; please try again later.","mobile_number_error":"Mobile phone number in error.","name":"Name","name_placeholder":"Enter your name","new_password_is_sent":"New password is sent.","new_product_defect":"Defect on New Product","nn_collection_save_more_money_title":"for {{price}}","no_stock":"Out of Stock","notification_enabled":"Notification Enabled","notify_me_when_stock_arrives":"Sold out! Notify me when the product is available.","onsale":"On Sale","order_date":"Order Date","order_number":"Order Number","order_retrun_confirm":"Are you sure you want to request a refund?","ori_price":"Original Price","others":"Others","over_cart_limit":"Quantity exceeds shopping cart limit; please remove some items and place the order again.","over_product_quantity":"Quantity exceeds the purchase limit; please reduce the quantity selected.","over_stock_count":"Quantity exceeds inventory stock. Remaining {{ count }}","over_stock_quantity":"The quantity entered exceeds the stock quantity. Please decrease your order.","phone_number":"Phone Number","phone_number_placeholder":"Enter your phone number","piece":"{{quantity}} item(s)","please_choose_bank":"Select Bank","please_choose_product":"Please select specifications.","please_choose_variant":"Please select specifications","please_enter_number":"Please enter a number.","please_reselect":"Try removing some filters to 
1254see more items","please_send_and_confirm_verify_code":"Please send and confirm the verification code.","pre_order":"Pre-order Goods","price_asc":"Price Low To High","price_desc":"Price High To Low","price_filter":"Price","price_includes_tax":"(includes consumption tax of {{ tax }})","product_content_defect":"Wrong Product or Incomplete Product","product_defect":"Defective Product","product_limit_buy":"Limited purchase of this product {{ count }} items","product_rate_limit_btn":"Re-enter product page","product_rate_limit_desc":"seconds until you can re-enter the product page. We recommend staying on this page.","product_rate_limit_title":"High demand right now, please wait","product_rate_limit_warn":"Leaving this page may increase your wait time.","product_sold":"Sold {{ productSold }} products","products_total":"Total of {{ totalProductCounts }} Products","quantity":"Quantity","quantity_over_product_stock":"The quantity entered exceeds available product stock. Please decrease your order.","question_content":"Message","question_content_placeholder":"Please enter your message","question_submit_fail":"Something went wrong; please try again later!","question_submit_success":"The question has been sent successfully. We will contact you as soon as possible!","question_type":"Question Type","reached_favorable":"Promotion Reached","recent_days_sold_desc":"Best Seller","reenter_password_still_error":"Error: Password does not match.","refund":"Refund Amount","refund_account":"Refund Account","refund_info":"Refund Information","refund_invoice_check":"I agree to the cancellation of the invoice or the \"Tax Payment Certificate\", and give consent to {{ envoiceCompanyName }} to be handled at discretion in order to expedite the refund process.","resend_verify_code":"Resend verification code.","reset_all_filters":"Reset All Filters","reset_filter_button":"Reset Filter","return":"Return","return_address":"Return Address","return_email_notification":"A copy of the refund details have been sent to your email","return_info":"Return Information","return_instruction":"Return Information","return_msg_Australia":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter \"My Account\", find your order and click \"View Status\", then click on \"Apply Refund\" as soon as possible.\u003cbr\u003e 2. After receiving the refund application, we will contact you to retrieve the goods. If you have any return questions, you can leave a message to the shop on the \"Order(s)\" page. Please do not send back the goods before confirming with the shop.\u003cbr\u003e 3. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 4. Once your returned item is received and inspected, an exchange or a refund will be made according to the shop's return policy.\u003cbr\u003e 5. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e","return_msg_Japan":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter \"My Account\", find your order and click \"View Status\", then click on \"Apply Refund\" as soon as possible. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e 2. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 3. After receiving the refund application, we will contact you to retrieve the goods. \u003cbr\u003e 4. If you have any return questions, you can leave a message to the shop on the \"Order(s)\" page. Please do not send back the goods before confirming with the shop.\u003cbr\u003e 5. Once your returned item is received and inspected, an exchange or a refund will be made according to the shop's return policy.\u003cbr\u003e","return_msg_Japan_to_Taiwan":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter \"My Account\", find your order and click \"View Status\", then click on \"Apply Refund\" as soon as possible. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e 2. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 3. After receiving the refund application, we will c
1254ontact you to retrieve the goods. \u003cbr\u003e 4. If you have any return questions, you can leave a message to the shop on the \"Order(s)\" page. Please do not send back the goods before confirming with the shop.\u003cbr\u003e 5. Once your returned item is received and inspected, an exchange or a refund will be made according to the shop's return policy.\u003cbr\u003e","return_msg_SEA":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter \"My Account\", find your order and click \"View Status\", then click on \"Apply Refund\" as soon as possible. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e 2. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 3. After receiving the refund application, we will contact you to retrieve the goods. \u003cbr\u003e 4. If you have any return questions, you can leave a message to the shop on the \"Order(s)\" page. Please do not send back the goods before confirming with the shop.\u003cbr\u003e 5. Once your returned item is received and inspected, an exchange or a refund will be made according to the shop's return policy.\u003cbr\u003e","return_msg_Taiwan":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter to \" My Account\", find your order and click \"My Order(s)\", then click on \"Apply Refund\" as soon as possible. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e 2. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 3. After receiving the refund application, we will contact you to retrieve the goods. If you have any return questions, you can click \"Message Shop\" on the \"My Order(s)\" page. Please do not send back the goods by yourself.\u003cbr\u003e 4. Please print this application form and send it with the goods.\u003cbr\u003e 5. Once your returned item is received and reviewed, a refund will be made to your original payment method; it would take up to 5 to 10 days until it shows on your bank statement.\u003cbr\u003e","return_msg_USA":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter \"My Account\", find your order and click \"View Status\", then click on \"Apply Refund\" as soon as possible. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e 2. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 3. After receiving the refund application, we will contact you to retrieve the goods. \u003cbr\u003e 4. If you have any return questions, you can leave a message to the shop on the \"Order(s)\" page. Please do not send back the goods before confirming with the shop.\u003cbr\u003e 5. Once your returned item is received and inspected, an exchange or a refund will be made according to the shop's return policy.\u003cbr\u003e","return_product":"Product Return Request","return_reason":"Return Reason","save_more_money_discount":"to enjoy {{percent_discount}}% off.","save_more_money_dollar":"Get {{dollar}} discount","search_article_label":"Article results ({{ totalArticleCounts }})","search_no_result":"Sorry, no results found by searching: {{ queryString }}. Please try a different word.","search_product_label":"Product results ({{ totalProductCounts }})","search_total":"Search: {{ queryString }} / {{ totalSearchCount }} item(s) found","select_sort_by":"Sort By","sell_from_asc":"Listing date, old to new","sell_from_desc":"Listing date, new to old","send_too_many_times_try_again_later":"Sent too many times, please try again later.","sending_msg_few_minutes_get":"SMS sending… You'll receive a verification code in a few minutes.","shipping_fee":"Shipping Fee","sold_out":"Sold Out","state_placeholder":"Select state / province","submit":"Submit","subtotal":"Subtotal","success_operation":"Message Sent!","successfully_copy_tracking_number":"Tracking number copied successfully","system_busy_try_again":"System busy; please try again later.","tax":"Tax","thanks_for_advise":"Thanks for your feedback.","thanks_you_have_signed_up":"Thanks for registering!","total_bonus_redemption":"Total Credit Point(s) Redemption","tw_city_placeholder":"County / City","tw_district_placeholder":"District","unreach_favorable":"Promotion Unreached","verification_error_please_correct":"Error during verification, please try again.","verify_success":"Verification code confirmed.","view_product":"View Product","vip_shipping_free":"Free Shipping For Members","zip":"ZIP / Postcode"}
1255  $(document).ready(function(){
1256    if(window.location.pathname != '' && window.location.pathname != '/' ){
1257      document.getElementById('index-popular-tags').style.display = 'none'
1258    }
1259    // 倒數計時
1260    
1261
1262    function adjustContentTop() {
1263      const offset = window.measureHeaderOffset();
1264      if (offset === null) return;
1265      $("body").css({ "padding-top": offset + "px" });
1266    }
1267
1268    window.adjustContentTop = adjustContentTop;
1269
1270    // navbar設定透明
1271    
1272
1273    // Call it first once DOM is ready to prevent CLS
1274    adjustContentTop();
1275
1276    // 延遲初始化,等待 app banner 初始化完成
1277    $(window).on("resize", adjustContentTop);
1278
1279    // 使用 setTimeout 確保 banner 狀態已經確定
1280    $(window).on("load", function() {
1281      setTimeout(function() {
1282        adjustContentTop();
1283      }, 200); // 給 banner 足夠時間初始化
1284    });
1285
1286    $('img.header_banner').on('load', adjustContentTop);
1287
1288    window.renderNavbarSection('.main_nav', {
1289        navbarCollections: null,
1290        navbarItems: [{"id":1834432,"title":"All Products","url":"/collections/all-product","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1831261,"title":"Almond Nougat Series","url":"/collections/classic-nougat","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":[{"id":1832459,"title":"Original Flavor Nougat","url":"/collections/originalnougat","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1832460,"title":"Strawberry Flavor Nougat","url":"/collections/strawberry-nougat","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1832461,"title":"Pineapple Flavor Nougat","url":"/collections/pineapple-nougat","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1832462,"title":"Black Sesame Flavor Nougat","url":"/collections/sesamenougat","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1832463,"title":"Salted Yolk Nougat","url":"/collections/salted-egg-yolk-nougat","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null}]},{"id":1831263,"title":"Nougat With Biscuits","url":"/collections/snowflake-nougat","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1831262,"title":"Fudge / Caramel / Milk Candy","url":"/collections/milk-caramel","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1831468,"title":"Nutty Toffee","url":"/collections/original-toffee-cashew-crisp","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":[{"id":1836036,"title":"Nutty Toffee ( Bag Size)","url":"/collections/腰果","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1836037,"title":"Nutty Toffee (Box Size)","url":"/collections/歸me酥","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null}]},{"id":1831465,"title":"Black Date \u0026 Walnut Soft Candy","url":"/collections/walnut-cake","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1831469,"title":"Gift Box","url":"/collections/20240101","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1831467,"title":"Collaboration Collection","url":"/collections/ovaltine_fuyuan","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":[{"id":1831470,"title":"Ovaltine Series","url":"/collections/ovaltine_co-branded-series","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1831471,"title":"Fuyuan Peanut Butter Series","url":"/collections/fuyuan-peanut-butter_co-branded-series","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null}]},{"id":1849636,"title":"Additional Products","url":"/collections/其他商品","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":[{"id":1849638,"title":"Appetizer Sauce","url":"/collections/appetizers_sauce","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1849639,"title":"Sesame Crisps","url":"/products/ts2001","item_type":"product","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1849650,"title":"Taiwanese Tempura ( Fish Cake )","url":"/products/ts3402","item_type":"product","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1879149,"title":"黑糖塊","url":"/collections/brown-sugar","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null}]},{"id":1837452,"title":"Our Stores","url":"/pages/門市據點","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":null}],
1291        settings: {
1292          menuDisplayStyle: "three_dimension_menu",
1293          pcLogoImgUrl: "//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzI3MzIyNzAyX-e2suermeaWsExPR08t5ZSQ6IiW5a2QMTAwcHhf5bel5L2c5Y2A5Z-fIDEgKDEpLmpwZy5qcGVnIl1d.jpeg?sha=f2f010d7aa3eaf8b",
1294          mobileLogoImgUrl: "//cdn-general.cybassets.com/media/W1siZiIsIjE5MTIzL2F0dGFjaGVkX3Bob3Rvcy8xNzI3MzIyNzAyX-e2suermeaWsExPR08t5ZSQ6IiW5a2QMTAwcHhf5bel5L2c5Y2A5Z-fIDEgKDEpLmpwZy5qcGVnIl1d.jpeg?sha=f2f010d7aa3eaf8b",
1295          navbarDisplayStyle: "rowCenterNav",
1296        }
1297      }
1298    );
1299
1300
1301    // for link menu
1302    const linkMenuElement = document.querySelector('.link-nav');
1303    const data = []
1304    data.forEach((item) => {
1305      const wrapper = document.createElement('a');
1306      const link = document.createElement('ul');
1307
1308      wrapper.href = item.url;
1309      link.textContent = item.title;
1310      link.classList.add('link-item');
1311
1312      wrapper.appendChild(link);
1313      linkMenuElement.appendChild(wrapper);
1314    });
1315
1316    // for safe-area space on iOS devices
1317    const userAgent = navigator.userAgent;
1318    const isIOS = /iPad|iPhone|iPod/.test(userAgent) && !window.MSStream;
1319    const isLiff = /Line\/[\d.]+/i.test(userAgent);
1320    const $mobileBottomBar = $('#mobile-bottom-bar');
1321
1322    if ($mobileBottomBar.length && isIOS && isLiff) {
1323      $mobileBottomBar.addClass('is-ios-liff');
1324    }
1325  });
1326  document.addEventListener('DOMContentLoaded', function() {
1327    window.getCartAmount = function() {
1328      return parseInt($('.global-cart-count').html());
1329    };
1330  });
1331</script>
1331
1332
1333<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/navbar-4a1e7dfec7e41476.js' type='text/javascript'></script>
vendor: 1 bytes, line 1333
1333
1334<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/currencies-4a1e7dfec7e41476.js' type='text/javascript'></script>
1334
1335<!-- cyb_snippet i18n_modal start -->
1336
1337  
1337<script src='//cdn-general.cybassets.com/frontend/shop/i18nSetting-4a1e7dfec7e41476.js' type='text/javascript'></script>
1337
1338  
1338<script type="text/javascript">
1339    $(document).ready(function() {
1340      const props = {
1341        isMultiLanguages: true,
1342        isMultiCurrencies: true,
1343      }
1344      
1345        props.languageOptions = [{"handle":"zh-TW","title":"繁體中文","currency_code":"TWD"},{"handle":"en","title":"English","currency_code":"USD"}]
1346      
1347      
1348        props.currencyOptions = [{"html_unit":"NT${{amount_no_decimals}}","name":"新台幣 (TWD)","html":"NT${{amount_no_decimals}}","unit":"","trailing_zeros":false,"decimal_precision":0,"money_format":"%u%n","format":"NT${{amount_no_decimals}}","email_unit":"NT${{amount_no_decimals}}","code":"TWD","symbol":"NT$","email":"NT${{amount_no_decimals}}"}]
1349      
1350      window.renderI18nSetting('.i18n-selector', props)
1351    })
1352  </script>
1352
1353
1354
1355<!-- cyb_snippet i18n_modal end -->
1356<!-- cyb_snippet _load_fonts start -->
1357<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/load_fonts-4a1e7dfec7e41476.js' type='text/javascript'></script>
vendor: 1 bytes, line 1357
1357
1358<script>
1359  document.addEventListener('DOMContentLoaded', function() {
1360    window.loadFontSetting("{'ja':{'value':'Noto Sans JP'},'zh-TW':{'value':'Noto Sans TC'},'en':{'value':'Noto Sans TC'},'zh-CN':{'value':'Noto Sans TC'}}")
1361  })
1362</script>
1362
1363
1364<!-- cyb_snippet _load_fonts end -->
1365<!-- cyb_snippet _custom_icon start -->
1366<script src='//cdn-general.cybassets.com/frontend/shop/navIcon-4a1e7dfec7e41476.js' type='text/javascript'></script>
1366
1367
1368<script>
1369  (function() {
1370    const iconUrlMap = new Map([
1371      ['custom_icon_type_home', null],
1372      ['custom_icon_type_tracking_items', null],
1373      ['custom_icon_type_account', null],
1374      ['custom_icon_type_cart', null],
1375      ['custom_icon_type_search', null],
1376      ['custom_icon_type_menu', null]
1377    ]);
1378    const elements = document.querySelectorAll('[data-icon-type]');
1379    elements.forEach((element, index) => {
1380      const iconAttributes = element.getAttribute('data-icon-type');
1381
1382      const uniqueId = `icon_${iconAttributes}_${index}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
1383      element.id = uniqueId;
1384      window.renderNavCustomIcon(`#${uniqueId}`, {
1385        navIconStyle: "icon_type_default",
1386        customIconUrl: iconUrlMap.get(iconAttributes) || '',
1387        iconAttributes: iconAttributes,
1388        currentTemplate: "collection",
1389      });
1390    });
1391  })();
1392</script>
1392
1393
1394<!-- cyb_snippet _custom_icon end -->
1395
1396
1397
1398    
1399  
1400    
1400<script src='//cdn-general.cybassets.com/frontend/shop/announcementBar-4a1e7dfec7e41476.js' type='text/javascript'></script>
1400
1401
1402    
1403
1404    
1405
1406    
1406<script>
1407      $(document).ready(function() {
1408        window.renderAnnouncementBar('#announcement-bar', {
1409          sectionId: "announcement_bar",
1410          isIndex: false,
1411        });
1412      });
1413    </script>
1413
1414  
1415
1416
1417
1418
1419
1420    <!-- template -->
1421    <div id="template" style="flex:1 0 auto; background-color: var(--theme_bg);">
1422      
1423
1424
1425<!-- cyb_snippet breadcrumb start -->
1426
1427<link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/breadcrumb-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' />
1428
1429
1430<div id="site_path" class="qk-bd_b--default qk-bd--product_border">
1431  <!-- mobile: toggle button (hidden on PC) -->
1432  <div class="qk-container qk-hidden--pc">
1433    <div class="breadcrumb qk-bg--theme_bg qk-pd_x--0 qk-mg--0 qk-fs--breadcrumb">
1434      <button
1435        class="bt-toggle qk-bg--theme_bg qk-pd_x--0 qk-w--100 qk-text--left qk-bd--none qk-pos--rel collapsed"
1436        data-toggle="collapse"
1437        data-target=".breadcrumb-content"
1438      >
1439        <a href="/" class="qk-text--text">
1440          <i class="fas fa-home"></i>
1441        </a>
1442      </button>
1443    </div>
1444  </div>
1445  <!-- breadcrumb nav: single DOM, PC always visible, mobile as collapse dropdown -->
1446  <div class="breadcrumb-content qk-bg--theme_bg collapse">
1447    <div class="qk-container">
1448      <!-- cyb_snippet breadcrumb_nav start -->
1449<!-- 主題版型麵包屑 -->
1450<nav aria-label="breadcrumb">
1451  <ol
1452    class="breadcrumb qk-bg--theme_bg qk-pd_x--0 qk-mg--0 qk-fs--breadcrumb"
1453    itemscope
1454    itemtype="http://schema.org/BreadcrumbList"
1455  >
1456    
1457      <li
1458        class="breadcrumb-item
1459        
1460        "
1461        itemprop="itemListElement"
1462        itemscope itemtype="http://schema.org/ListItem">
1463        <!-- home -->
1464        
1465          <a href="/" class="qk-text--text" itemprop="item">
1466            <i class="fas fa-home"></i>
1467            <span class="qk-display--none" itemprop="name">Home</span>
1468          </a>
1469        <!-- account -->
1470        
1471        <meta itemprop="position" content="1"/>
1472      </li>
1473    
1474      <li
1475        class="breadcrumb-item
1476        
1477         active "
1478        itemprop="itemListElement"
1479        itemscope itemtype="http://schema.org/ListItem">
1480        <!-- home -->
1481        
1482          <a href="/collections/all-product" class="qk-text--text" itemprop="item">
1483            <span itemprop="name">All Items</span>
1484          </a>
1485        <!-- bundle discount -->
1486        
1487        <meta itemprop="position" content="2"/>
1488      </li>
1489    
1490  </ol>
1491</nav>
1492<script>
1493  $(document).ready(function () {
1494    if (!window.liquidHelper || !window.liquidHelper.hasBreadcrumbReferrerEnabled) return;
1495
1496    var $collections = $('[data-breadcrumb-links]');
1497    if (!$collections.length) return;
1498
1499    var refMatch = document.referrer.match(/\/collections\/([^/?#]+)/);
1500    if (!refMatch || refMatch[1] === 'all') return;
1501
1502    var referrerHandle = decodeURIComponent(refMatch[1]);
1503
1504    function getCollectionHandle(url) {
1505      if (!url) return null;
1506      try {
1507        var pathname = new URL(url, location.origin).pathname;
1508        var parts = pathname.split('/');
1509        var idx = parts.indexOf('collections');
1510        if (idx === -1 || !parts[idx + 1]) return null;
1511        return decodeURIComponent(parts[idx + 1]);
1512      } catch (e) {
1513        return null;
1514      }
1515    }
1516
1517    var $link = $collections.find('a').filter(function () {
1518      return getCollectionHandle(this.href) === referrerHandle;
1519    });
1520
1521    if ($link.length) {
1522      $collections.siblings('a.qk-text--accent[href="#"]').remove();
1523      $collections.empty().append($link);
1524    }
1525  });
1526</script>
1526
1527
1528<!-- cyb_snippet breadcrumb_nav end -->
1529    </div>
1530  </div>
1531</div>
1532
1533
1534<!-- cyb_snippet breadcrumb end -->
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544<div id="collection" class="qk-mg_t--3">
1545  <div class="qk-container">
1546    <div  class="row qk-mg_x--0" >
1547      
1548        <!-- 一般群組頁 -->
1549        <!-- 群組簡述 start -->
1550          
1551        <!-- 群組簡述 end -->
1552        <!-- 側邊列表 start -->
1553        
1554          <div class="col-md-3 qk-hidden--mobile">
1555            
1556              <!-- cyb_snippet side_menu start -->
1557
1558
1559<ul id="collection_menu_shelf_top" class="sidebar qk-pd_b--1">
1560  
1561  
1562    
1563
1564    
1565      <!-- cyb_snippet components/side_menu/menu start -->
1566
1567
1568  
1569  
1570  
1571    <li class="qk-pos--rel qk-pd--0">
1572      
1573        <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--accent" href="/collections/all-product">All Products</a>
1574      
1575    </li>
1576  
1577
1578  
1579  
1580  
1581    <li class="qk-pos--rel qk-pd--0">
1582      <button class="linklist bt-toggle qk-fw--bold  collapsed  qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-text--heading qk-bg--theme_bg qk-pos--rel" data-toggle="collapse" data-target=".collapse_collection_menu_2" aria-expanded=" false ">
1583        
1584          <a class="qk-text--heading" href="/collections/classic-nougat"> Almond Nougat Series </a>
1585        
1586      </button>
1587      <ul id="collection_menu_shelf_second_2" class="collapse_collection_menu_2 collapse shelf_second  qk-pd--0">
1588        
1589          
1590          
1591          
1592            <li class="qk-pos--rel qk-pd--0">
1593              
1594                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/strawberry-nougat">
1595                  Strawberry Flavor Nougat
1596                </a>
1597              
1598            </li>
1599          
1600        
1601          
1602          
1603          
1604            <li class="qk-pos--rel qk-pd--0">
1605              
1606                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/originalnougat">
1607                  Original Flavor Nougat
1608                </a>
1609              
1610            </li>
1611          
1612        
1613          
1614          
1615          
1616            <li class="qk-pos--rel qk-pd--0">
1617              
1618                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/pineapple-nougat">
1619                  Pineapple Flavor Nougat
1620                </a>
1621              
1622            </li>
1623          
1624        
1625          
1626          
1627          
1628            <li class="qk-pos--rel qk-pd--0">
1629              
1630                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/sesamenougat">
1631                  Black Sesame Flavor Nougat
1632                </a>
1633              
1634            </li>
1635          
1636        
1637          
1638          
1639          
1640            <li class="qk-pos--rel qk-pd--0">
1641              
1642                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/salted-egg-yolk-nougat">
1643                  Salted Yolk Nougat
1644                </a>
1645              
1646            </li>
1647          
1648        
1649      </ul>
1650    </li>
1651  
1652
1653  
1654  
1655  
1656    <li class="qk-pos--rel qk-pd--0">
1657      
1658        <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/snowflake-nougat">Nougat With Biscuits</a>
1659      
1660    </li>
1661  
1662
1663  
1664  
1665  
1666    <li class="qk-pos--rel qk-pd--0">
1667      
1668        <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/milk-caramel">Fudge / Caramel / Milk Candy</a>
1669      
1670    </li>
1671  
1672
1673  
1674  
1675  
1676    <li class="qk-pos--rel qk-pd--0">
1677      <button class="linklist bt-toggle qk-fw--bold  collapsed  qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-text--heading qk-bg--theme_bg qk-pos--rel" data-toggle="collapse" data-target=".collapse_collection_menu_5" aria-expanded=" false ">
1678        
1679          <a class="qk-text--heading" href="/collections/original-toffee-cashew-crisp"> Nutty Toffee </a>
1680        
1681      </button>
1682      <ul id="collection_menu_shelf_second_5" class="collapse_collection_menu_5 collapse shelf_second  qk-pd--0">
1683        
1684          
1685          
1686          
1687            <li class="qk-pos--rel qk-pd--0">
1688              
1689                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/腰果">
1690                  Nutty Toffee ( Bag Size)
1691                </a>
1692              
1693            </li>
1694          
1695        
1696          
1697          
1698          
1699            <li class="qk-pos--rel qk-pd--0">
1700              
1701                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/歸me酥">
1702                  Nutty Toffee (Box Size)
1703                </a>
1704              
1705            </li>
1706          
1707        
1708      </ul>
1709    </li>
1710  
1711
1712  
1713  
1714  
1715    <li class="qk-pos--rel qk-pd--0">
1716      
1717        <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/walnut-cake">Black Date & Walnut Soft Candy</a>
1718      
1719    </li>
1720  
1721
1722  
1723  
1724  
1725    <li class="qk-pos--rel qk-pd--0">
1726      
1727        <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/20240101">Gift Box</a>
1728      
1729    </li>
1730  
1731
1732  
1733  
1734  
1735    <li class="qk-pos--rel qk-pd--0">
1736      <button class="linklist bt-toggle qk-fw--bold  collapsed  qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-text--heading qk-bg--theme_bg qk-pos--rel" data-toggle="collapse" data-target=".collapse_collection_menu_8" aria-expanded=" false ">
1737        
1738          <a class="qk-text--heading" href="/collections/ovaltine_fuyuan"> Collaboration Collection </a>
1739        
1740      </button>
1741      <ul id="collection_menu_shelf_second_8" class="collapse_collection_menu_8 collapse shelf_second  qk-pd--0">
1742        
1743          
1744          
1745          
1746            <li class="qk-pos--rel qk-pd--0">
1747              
1748                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/ovaltine_co-branded-series">
1749                  Ovaltine Series
1750                </a>
1751              
1752            </li>
1753          
1754        
1755          
1756          
1757          
1758            <li class="qk-pos--rel qk-pd--0">
1759              
1760                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/fuyuan-peanut-butter_co-branded-series">
1761                  Fuyuan Peanut Butter Series
1762                </a>
1763              
1764            </li>
1765          
1766        
1767      </ul>
1768    </li>
1769  
1770
1771  
1772  
1773  
1774    <li class="qk-pos--rel qk-pd--0">
1775      <button class="linklist bt-toggle qk-fw--bold  collapsed  qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-text--heading qk-bg--theme_bg qk-pos--rel" data-toggle="collapse" data-target=".collapse_collection_menu_9" aria-expanded=" false ">
1776        
1777          <a class="qk-text--heading" href="/collections/其他商品"> Additional Products </a>
1778        
1779      </button>
1780      <ul id="collection_menu_shelf_second_9" class="collapse_collection_menu_9 collapse shelf_second  qk-pd--0">
1781        
1782          
1783          
1784          
1785            <li class="qk-pos--rel qk-pd--0">
1786              
1787                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/appetizers_sauce">
1788                  Appetizer Sauce
1789                </a>
1790              
1791            </li>
1792          
1793        
1794          
1795          
1796          
1797            <li class="qk-pos--rel qk-pd--0">
1798              
1799                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/products/ts3402">
1800                  Taiwanese Tempura ( Fish Cake )
1801                </a>
1802              
1803            </li>
1804          
1805        
1806          
1807          
1808          
1809            <li class="qk-pos--rel qk-pd--0">
1810              
1811                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/brown-sugar">
1812                  黑糖塊
1813                </a>
1814              
1815            </li>
1816          
1817        
1818          
1819          
1820          
1821            <li class="qk-pos--rel qk-pd--0">
1822              
1823                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/products/ts2001">
1824                  芝麻薄餅
1825                </a>
1826              
1827            </li>
1828          
1829        
1830      </ul>
1831    </li>
1832  
1833
1834
1835<script>
1836  $('button a').on('click', function(e) {e.stopPropagation()});
1837</script>
1837
1838
1839<!-- cyb_snippet components/side_menu/menu end -->
1840    
1841  
1842  
1843</ul>
1844
1845<link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/sidebar-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' />
1846
1847<script>
1848  $(document).ready(function(){
1849    // 側邊選單
1850    if ($('.drawer').length){
1851      $('.drawer').drawer();
1852      $('.bt-toggle').click(function(){
1853        setTimeout(function(){
1854          $('.drawer')[0].iScroll.refresh()
1855        },500)
1856      })
1857    }
1858  });
1859</script>
1859
1860
1861<script>
1862  $(document).ready(function(){
1863    const languageSize = 2
1864    const currencySize = 1
1865
1866    const initLanguageAndCurrency = ({language,code})=> {
1867      const contentSelector = $("#side-menu-modal__button");
1868      let content = ''
1869      const isMutipleCurrencies = true
1870      const isMultiLanguages = true
1871      if ( isMultiLanguages && languageSize > 1 ) content = language || (liquidHelper.language && liquidHelper.language.title)
1872      if ( isMutipleCurrencies && (code && content === '')) content = code
1873      else if (isMutipleCurrencies && (code && content !=='')) content = `${content}|${code}`
1874      contentSelector.text(content)
1875    }
1876
1877    let code = ''
1878    let language = ''
1879    if (liquidHelper.language) language  = liquidHelper.language
1880    if (liquidHelper.getCurrency()) code = liquidHelper.getCurrency().code
1881
1882    initLanguageAndCurrency({ language:language.title, code })
1883
1884    $("#side-menu-modal__button").click(function() {
1885      const clickable = languageSize > 1 || currencySize > 1
1886      if (clickable) {
1887        $('.drawer').drawer('close');
1888        const event = new CustomEvent("i18n_selector_clicked");
1889        document.dispatchEvent(event);
1890      }
1891    });
1892
1893    document.addEventListener('i18n_modal_confirmed', (e) => {
1894      const { languageTitle, currency } = e.detail;
1895      initLanguageAndCurrency({ language: languageTitle, code: currency });
1896    });
1897  });
1898
1899</script>
1899
1900
1901
1902<!-- cyb_snippet side_menu end -->
1903
1904            
1905          </div>
1906        
1907        <!-- 側邊列表 end -->
1908        <!-- 群組商品 start -->
1909        <div id="collection-content" class="col-lg-9">
1910          <!-- for SEO:CLS, will be replaced by Vue component -->
1911          <div style="height: 100vh"></div>
1912        </div>
1913        <!-- 群組商品 end -->
1914      
1915    </div>
1916  </div>
1917</div>
1918
1919
1920
1921
1922  <!-- cyb_snippet _combo_product_related_items_modal start -->
1922<script src='//cdn-general.cybassets.com/frontend/shop/standaloneRelatedItemsSelectModal-4a1e7dfec7e41476.js' type='text/javascript'></script>
1922
1923  
1923<script>
1924    if (!$('#related-items-select-modal').length) {
1925      $('body').append('<div id="related-items-select-modal"></div>');
1926      document.addEventListener('DOMContentLoaded', function() {
1927        window.renderRelatedItemsSelectModal('#related-items-select-modal', {
1928          hasStockNotificationPlugin: true,
1929          displayProductDiscountsList: true,
1930        });
1931      });
1932    }
1933  </script>
1933<!-- cyb_snippet _combo_product_related_items_modal end -->
1934  <!-- cyb_snippet new_addcart_modal start -->
1935<link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/vue_product_modal-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' />
1936
1937<div id="new-addcart-modal" class="container">
1938  <transition name="modal">
1939    <product-modal
1940      v-if="showProductModal"
1941      :only-description="onlyDescription"
1942      :product-url="popProductUrl"
1943      :color="color"
1944      :is-collection="isCollection"
1945      :is-show-description="isShowDescription"
1946      :is-quick-buy="isQuickBuy"
1947      :selected-variant-id="selectedVariantId"
1948      :categories="categories"
1949      :call-back="checkoutAddToCartCallback"
1950      ref="productModal"
1951    >
1952    </product-modal>
1953  </transition>
1954</div>
1955
1956<!-- cyb_snippet components/product_modal/product_modal start -->
1957<script type="text/x-template" id="product-modal">
1958  <div class="modal-mask qk-h--100 qk-w--100 qk-l--0 qk-t--0 qk-pos--fixed" @click="closeModal">
1959    <div class="modal-content qk-bd--none qk-center qk-bg--theme_bg" :class="{'only-description': onlyDescription}" @click.stop>
1960      <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>
1961      <div class="modal-body custom-scrollbar qk-w--100">
1962        <div v-if="!isLoading">
1963          <div id="checkout-product" class="row">
1964            <div class="col-sm-6 col-xs-4">
1965              <photo-swiper
1966                :mediaItems="swiperItems"
1967                :current-image-index="currentImageIndex"
1968                :current-variant="currentVariant"
1969                :video-after-image="videoAfterImage"
1970              ></photo-swiper>
1971            </div>
1972            <div class="col-sm-6 col-xs-8">
1973              <h4 class="qk-fs--hd2 qk-fw--bold qk-text--heading qk-mg--0" v-html="product.title"></h4>
1974              <p class="product_brief qk-text--text qk-fs--body" v-html="product.brief"></p>
1975              <p class="product_slogan qk-text--heading qk-fs--body" v-html="product.slogan"></p>
1976              <div class="swiper_thumbnails" style="margin-bottom: 10px;">
1977                <swiper-thumbnails
1978                  :mediaItems="swiperItems"
1979                  :current-image-index="currentImageIndex"
1980                  :title="product.title"
1981                  @update-current-image-index="(thumbnailIndex) => { currentImageIndex = thumbnailIndex }"
1982                ></swiper-thumbnails>
1983              </div>
1984              
1985              <div v-if="!hidePrice" style="margin-bottom: 10px;">
1986                
1987                <span class="price-title qk-fs--body qk-fw--500 qk-text--heading">${ priceTitleTag }</span>
1988                
1989                <div>
1990                  <span v-html="variantPrice" class="variant-price qk-fs--hd1 qk-fw--bold" :class="[isDiscountPrice ? 'qk-text--discount_price' : 'qk-text--price']"></span>
1991                  <del v-html="marketPrice" class="variant-del-price qk-fs--body qk-fw--500 qk-text--text"></del>
1992                </div>
1993              </div>
1994              <div v-if="!onlyDescription" class="controls">
1995                <div class="variant-quantity qk-display--flex qk-flex--column">
1996                  <div v-if="hasVariant" class="product-variant-options">
1997                    <div v-for="(option, index) in optionInfo" class="product-variant-option" :class="{'product-variant-option--hidden': shouldHideSingleVariantOptions}">
1998                      <div class="advance variant-select-option" v-if="styledShopMenu==='dropDownType'">
1999                      
2000                        <label>${option.name}</label>
2001                        <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>
2002                        <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}`)">
2003                          <option value="null" class="select_option-hidden">Please select ${option.name}</option>
2004                          <option :style="{ visibility : isMobileSize ? 'hidden' : 'visible' }" v-for="(types) in option.types" :disabled="!types.isValid" :value="types.name">${types.name}</option>
2005                        </select>
2006                        <span class="select_placeholder-color" v-if="currentOption[`option${index + 1}`] === null" v-show="isMobileSize" @click="onClickSelectModal(option,`option${index + 1}`)">Please select ${option.name}</span>
2007                        <span v-else :value="currentOption[`option${index + 1}`]" v-show="isMobileSize" @click="onClickSelectModal(option,`option${index + 1}`)" v-html="currentOption[`option${index + 1}`]"></span>
2008                      </div>
2009                      <advance-option v-else :option-key="'option' + (index + 1)" :option="option" :current-option="currentOption" :toggle-current-option="toggleCurrentOption"/>
2010                    </div>
2011                  </div>
2012                  <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)">
2013                    <div class="list_block custom-scrollbar qk-of_x--hidden">
2014                      <h4 class="qk-text--heading qk-fs--body">Applicable Promotions
2015                      </h4>
2016                      <template v-if="displayPeriodicSalesPages">
2017                        <div v-for="salesPage in product.showableSalesPages" class="discount-list">
2018                          <span class="discount-label qk-fs--breadcrumb qk-bd--default qk-bd--accent qk-bg--white qk-display--il_bk qk-text--accent">Subscription
2019                          </span>
2020                          <a class="discount-title qk-text--accent qk-fs--body" :href="salesPage.path">${ salesPage.title }</a>
2021                        </div>
2022                      </template>
2023                      <template v-for="discounts in discountsList">
2024                        <div v-for="discount in discounts" class="discount-list">
2025                          <a v-if="discount.url" :href="discount.url" class="discount-title qk-text--accent qk-fs--body">
2026                            ${ discount.title }
2027                          </a>
2028                          <span v-else class="discount-title qk-text--accent qk-fs--body">${ discount.title }</span>
2029                        </div>
2030                      </template>
2031                    </div>
2032                  </div>
2033                  <div v-if="showPurchaseControls" class="product-quantity qk-bd--product_border" v-show="!isMobileSize">
2034                    <div class="btn-group qk-w--100" role="group" aria-label="First group">
2035                      <button class="btn add-down qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityDecrease">-</button>
2036                      <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">
2037                      <button class="btn add-up qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityIncrease">+</button>
2038                    </div>
2039                  </div>
2040                </div>
2041                <div v-if="showPurchaseControls" class="add-button-wrapper">
2042                  <!-- cyb_snippet _product_modal_button start -->
2043<button
2044  class="btn btn-default add-button qk-cursor--pointer qk-w--100 qk-btn--primary"
2045  :class="{selected: isChoose, adding: adding || isHideAddCartBtn, secondary: isSecondaryBtn, 'qk-btn--disabled': isHideAddCartBtn && isNewNnCollection, 'qk-bd--none': isHideAddCartBtn && isNewNnCollection}"
2046  type="button"
2047  :disabled="isHideAddCartBtn"
2048  @click="addProduct"
2049>
2050  ${ addCartText }
2051</button>
2052
2053<!-- cyb_snippet _product_modal_button end -->
2054                </div>
2055                <div class="product-others qk-fs--body">
2056                  <span class="product-love">
2057                    <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">
2058                      <svg
2059                        width="15"
2060                        height="15"
2061                        viewBox="0 0 24 24"
2062                        fill="none"
2063                        xmlns="http://www.w3.org/2000/svg">
2064                        <path
2065                          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"
2066                          stroke="currentColor"
2067                          stroke-width="2"
2068                          stroke-linecap="round"
2069                          stroke-linejoin="round" />
2070                      </svg>
2071                      Add to Wishlist
2072                    </a>
2073                  </span>
2074                  <span class="product_sold qk-text--text" v-if="false">
2075                    <span>Sold : 
2076                      ${ product.totalSold }
2077                      Item(s)
2078                    </span>
2079                  </span>
2080                  <span class="product_bonus qk-text--text" v-if="true">
2081                    Redeemable credit(s) per item
2082                    <span class="val qk-fw--600 qk-fs--hd2" v-if="currentVariant">${currentVariant.maxUsableBonus}</span>
2083                    <span class="val qk-fw--600 qk-fs--hd2" v-else>${maxUsableBonus}</span>
2084                    credit(s)
2085                    <span v-html="bonusToPrice"/>
2086                  </span>
2087                </div>
2088                <div class='product_limit_buy qk-fs--body' v-show="product.minBuy > 0 || product.limitBuy > 0">
2089                  ${limitBuyText}
2090                </div>
2091              </div>
2092            </div>
2093          </div>
2094          <div v-if="isShowDescription" class="row">
2095            <div class="col-sm-12">
2096              
2097                <div v-if="product.bodyHtml">
2098                  <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading">
2099                    Product Description
2100                  </h5>
2101                  <div class="ckeditor">
2102                    <div v-html="product.bodyHtml"></div>
2103                  </div>
2104                </div>
2105              
2106              
2107                <div v-if="otherDescriptions['product_description_section_spec']">
2108                  <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading">
2109                    Specifications
2110                  </h5>
2111                  <div class="ckeditor">
2112                    <div v-html="otherDescriptions['product_description_section_spec']"></div>
2113                  </div>
2114                </div>
2115              
2116              
2117                <div v-if="otherDescriptions['product_description_section_shipping']">
2118                  <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading">
2119                    Shipping Method
2120                  </h5>
2121                  <div class="ckeditor">
2122                    <div v-html="otherDescriptions['product_description_section_shipping']"></div>
2123                  </div>
2124                </div>
2125              
2126            </div>
2127          </div>
2128        </div>
2129        <div v-show="isLoading" style="text-align: center; padding-bottom: 20px;">
2130          <i class="fas fa-spinner fa-spin fa-fw fa-2x"></i>
2131        </div>
2132      </div>
2133        <!-- cyb_snippet _product_modal_button_mobile start -->
2134 <div
2135  v-if="showPurchaseControls"
2136  v-show="isMobileSize"
2137  class="mobile_footer"
2138  :class="{'mobile_footer-z': variantSize > 1 }">
2139        <div class="product-quantity">
2140          <div class="btn-group qk-w--100" role="group" aria-label="First group">
2141            <button class="btn add-down qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityDecrease">-</button>
2142            <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">
2143            <button class="btn add-up qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityIncrease">+</button>
2144          </div>
2145        </div>
2146        <button
2147          v-if="!isLoading && !onlyDescription"
2148          class="btn btn-mobile add-button qk-btn qk-btn--primary qk-btn--lg"
2149          :class="{selected: isChoose, adding: adding || isHideAddCartBtn, 'qk-btn--disabled': isHideAddCartBtn && isNewNnCollection, 'qk-bd--none': isHideAddCartBtn && isNewNnCollection}"
2150          type="button"
2151          :disabled="isHideAddCartBtn"
2152          @click="addProduct">
2153            ${ addCartText }
2154        </button>
2155</div>
2156<div
2157  class="mobile-modal"
2158  :class="{ 'modal-open': isModalSelectShow && isMobileSize }">
2159        <div class="mobile_modal-content">
2160          <div class="modal_close-button">
2161            <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>
2162          </div>
2163          
2164          <p>Please select ${modalOption.name}</p>
2165          <div class="modal_select-templete qk-display--flex qk-of_y--auto qk-w--100">
2166            <div class="options-container">
2167              <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>
2168            </div>
2169          </div>
2170          <div v-if="variantSize > 1" class="modal_select_footer qk-display--flex">
2171            <button type="button" class="modal_cancel qk-bd--default qk-btn--secondary qk-bd--button qk-text--button" @click="onChangeModalSelect(false,false)">Cancel</button>
2172            <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)">Finish</button>
2173          </div>
2174        </div>
2175</div>
2176
2177<!-- cyb_snippet _product_modal_button_mobile end -->
2178    </div>
2179  </div>
2180</script>
2180
2181
2182<!-- cyb_snippet components/product_modal/color_image_option start -->
2183<script id="color-image-option" type="text/x-template">
2184  <div class="color-image qk-display--flex qk-flex--wrap qk-align--center">
2185    <div class="title">Color</div>
2186    <div
2187      v-for="(imageColor, index) in imageColors"
2188      :class="{
2189        'focus': !currentOption[optionKey] === option.types[index].name && currentImageIndex === index,
2190        'selected': currentOption[optionKey] === option.types[index].name,
2191        'disabled': !option.types[index].isValid
2192      }"
2193      class="image-option img-flex qk-bd--default qk-bd--transparent qk-display--block qk-pos--rel"
2194      @mouseleave="setCurrentImageIndex(index)"
2195      @mouseover="getOptionImageIndex(index)"
2196      @click="setOption(optionKey, index)"
2197    >
2198      <img v-if="imageColor !== 'noColorImage'" :src="imageColor.large" alt="image">
2199      <img v-else src="/assets/no-image-large.png" alt="image">
2200    </div>
2201  </div>
2202</script>
2202
2203
2204<script type="text/javascript">
2205  $(document).ready(function() {
2206    window.themeHelper.productModalComponents['color-image-option'] = {
2207      template: '#color-image-option',
2208      delimiters: ['${', '}'],
2209      props: {
2210        optionKey: String,
2211        option: Object,
2212        product: Object,
2213        imageColors: Array,
2214        isChoose: Boolean,
2215        currentImageIndex: Number,
2216        setCurrentImageIndex: Function,
2217        getOptionImageIndex: Function,
2218        currentOption: Object,
2219        toggleCurrentOption: Function,
2220      },
2221      methods: {
2222        setOption: function(optionKey, index) {
2223          const type = this.option.types[index];
2224          if(type.isValid){
2225            this.toggleCurrentOption(optionKey, type.name);
2226          }
2227        }
2228      }
2229    };
2230  });
2231</script>
2231
2232
2233<!-- cyb_snippet components/product_modal/color_image_option end -->
2234<!-- cyb_snippet components/product_modal/advance_option start -->
2235<script id="advance-option" type="text/x-template">
2236  <div class="advance">
2237    <div class="title qk-text--heading qk-fs--body">${option.name}</div>
2238    <div
2239      v-for="type in option.types"
2240      :class="{
2241        'selected': currentOption[optionKey] === type.name,
2242        'disabled': !type.isValid
2243      }"
2244      @click="setOption(optionKey, type)"
2245      class="option qk-btn  qk-bd--button qk-text--button qk-pd_x--1"
2246    >
2247      ${type.name}
2248    </div>
2249  </div>
2250</script>
2250
2251
2252<script type="text/javascript">
2253  $(document).ready(function() {
2254    window.themeHelper.productModalComponents['advance-option'] = {
2255      template: '#advance-option',
2256      delimiters: ['${', '}'],
2257      props: {
2258        optionKey: String,
2259        option: Object,
2260        product: Object,
2261        currentOption: Object,
2262        toggleCurrentOption: Function,
2263      },
2264      methods: {
2265        setOption: function(optionKey, type) {
2266          if(type.isValid){
2267            this.toggleCurrentOption(optionKey, type.name);
2268          }
2269        }
2270      }
2271    };
2272  });
2273</script>
2273
2274
2275<!-- cyb_snippet components/product_modal/advance_option end -->
2276
2277<!-- cyb_snippet components/product_modal/photo_swiper start -->
2278
2279
2280<script id="photo-swiper" type="text/x-template">
2281  <div ref="photoSwiper" id="photo_swiper" class="photos swiper swiper-container">
2282    <div class="swiper-wrapper">
2283      <template v-if="hasImage">
2284        <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">
2285          <video-player v-if="item.url" :video="item"
2286            :video-poster=" !!mediaItems[firstImageIndex] ? mediaItems[firstImageIndex].large : '//cdn-general.cybassets.com/img_loading.svg' "
2287          >
2288          </video-player>
2289          <img v-else class="qk-center" :src="item.large" alt="image"/>
2290        </div>
2291      </template>
2292      <div v-else class="photo swiper-slide qk-align--center qk-display--flex qk-justify--center qk-vert--text_top default_scale">
2293        <img src="//cdn-general.cybassets.com/assets/no-image-large-2b95ea56c455be9ce081d81c14eded925df68bf8fa38809e46f6af8fcdd5f9bc.png" alt="image" />
2294      </div>
2295    </div>
2296    <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>
2297    <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>
2298
2299    <div class="photo-pagination qk-bd--default qk-bd--body qk-text--center qk-text--body qk-fs--breadcrumb qk-visible-sm">
2300        <span class="current-index qk-text--default_dark">${currentImageIndex +1 }</span><span class="pagination-slash">/</span>
2301        <span>${mediaItems.length}</span>
2302      </div>
2303  </div>
2304</script>
2304
2305
2306<script>
2307  $(document).ready(function () {
2308    window.themeHelper.productModalComponents['photo-swiper'] = {
2309      template: '#photo-swiper',
2310      delimiters: ['${', '}'],
2311      props: {
2312        mediaItems: Array,
2313        currentImageIndex: Number,
2314        currentVariant: Object,
2315        videoAfterImage: Boolean,
2316      },
2317      data: function () {
2318        return {
2319          swiper: {},
2320          swiperOption: {
2321            preventInteractionOnTransition: true,
2322            rewind: true,
2323            spaceBetween: 5,
2324            slidesPerView: 1,
2325            navigation: {
2326              nextEl: '.photo-next',
2327              prevEl: '.photo-prev'
2328            }
2329          },
2330          showBtn: true,
2331          isVariantReposition: false,
2332        }
2333      },
2334      mounted: function() {
2335        this.swiper = new Swiper('#photo_swiper', this.swiperOption);
2336        this.swiper.on('slideChange', this.slideOnChange);
2337      },
2338      watch: {
2339        currentImageIndex: function() {
2340          this.slideToIndex();
2341        },
2342        currentVariant: {
2343          immediate: true,
2344          handler: function() {
2345            this.showBtn = this.mediaItems.length > 1;
2346            this.isVariantReposition = true;
2347            this.$nextTick(() => {
2348              if (this.swiper) {
2349                this.swiper.update();
2350                this.swiper.slideToLoop(this.initialItemIndex)
2351                this.slideOnChange();
2352                this.isVariantReposition = false;
2353              }
2354            });
2355          },
2356        },
2357      },
2358      computed: {
2359        hasImage: function() {
2360          return this.mediaItems.length > 0;
2361        },
2362        hasVideo: function() {
2363          return this.mediaItems.findIndex(item => !!item.url) !== -1;
2364        },
2365        variantPhotos: function() {
2366          if (this.currentVariant?.photos?.length) {
2367            return this.currentVariant.photos;
2368          } else  {
2369            return null;
2370          }
2371        },
2372        initialItemIndex: function() {
2373          if (this.hasVideo && !this.videoAfterImage) {
2374            // Focus on photo if "variant with photos" selected, video otherwise
2375            return this.variantPhotos?.length ? 1 : 0;
2376          } else {
2377            // Focus on first photo
2378            return 0;
2379          }
2380        },
2381      },
2382      methods: {
2383        slideOnChange: function() {
2384          themeHelper.EventBus.$emit('photoOnChange', this.swiper.realIndex, this.isVariantReposition);
2385        },
2386        slideToIndex: function() {
2387          if(this.swiper.realIndex != this.currentImageIndex) {
2388            this.swiper.slideToLoop(this.currentImageIndex);
2389            this.swiper.update();
2390          }
2391        },
2392      }
2393    };
2394  });
2395</script>
2395
2396
2397
2398<!-- cyb_snippet components/product_modal/video_player start -->
2399<script id="video-player" type="text/x-template">
2400  <div class="videoPlayer__wrapper" @click="handleVideoClick">
2401    <video 
2402      id='modal-video'
2403      class="videoPlayer__video qk-cursor--pointer qk-center" 
2404      :poster="videoPoster"
2405      loop defaultMuted muted playsinline webkit-playsinline autoplay
2406    >
2407      <source :src="videoUrl" type="video/mp4">
2408      <p>Your browser does not support HTML 5 video.</p>
2409    </video>
2410    <button id="modal-video-button" class="videoPlayer__pauseButton"></button>
2411  </div>
2412</script>
2412
2413
2414<script>
2415  $(document).ready(function () {
2416    window.themeHelper.productModalComponents['video-player'] = {
2417      template: '#video-player',
2418      delimiters: ['${', '}'],
2419      props: {
2420        video: Object,
2421        videoPoster: String,
2422      },
2423      data: function() {
2424        return {
2425          videoElement: null,
2426          buttonElement: null,
2427        };
2428      },
2429      mounted: function() {
2430        this.videoElement = $('#modal-video')[0];
2431        this.buttonElement = $('#modal-video-button');
2432        this.setVideoVolumeZero();
2433        this.videoElement.addEventListener('canplay', (event) => {
2434          this.sendGtag('play');
2435        }, { once: true });
2436      },
2437      computed: {
2438        videoUrl: function() {
2439          return this.video.url;
2440        }
2441      },
2442      methods: {
2443        sendGtag: function(action) {
2444          window.productVideoView && productVideoView(action);
2445        },
2446        setVideoVolumeZero: function() {
2447          this.videoElement.volume = 0;
2448        },
2449        handleVideoClick: function() {
2450          if (this.videoElement.paused){
2451            this.videoElement.play();
2452            this.sendGtag('play');
2453          } else {
2454            this.videoElement.pause();
2455            this.sendGtag('paused');
2456          }
2457          this.handleVideoButtonDisplay(this.buttonElement, this.videoElement);
2458        },
2459        handleVideoButtonDisplay: function(button, video) {
2460          button.toggleClass('videoPlayer__playButton', video.paused);
2461          button.toggleClass('videoPlayer__pauseButton', !video.paused);
2462        },
2463      }
2464    };
2465  });
2466</script>
2466
2467
2468<!-- cyb_snippet components/product_modal/video_player end -->
2469
2470<!-- cyb_snippet components/product_modal/photo_swiper end -->
2471<!-- cyb_snippet components/product_modal/swiper_thumbnails start -->
2472<script id="swiper-thumbnails" type="text/x-template">
2473  <div
2474    v-for="(thumbnail, index) in allThumbnails"
2475    :key="index"
2476    class="product-thumbnail img-flex qk-of--hidden qk-display--il_bk qk-cursor--pointer qk-bd--default qk-bd--transparent default_scale"
2477    :class="{ focus: index === currentImageIndex }"
2478    @mouseover="updateCurrentImageIndex(index)"
2479  >
2480    <template v-if="thumbnail.isVideo">
2481      <video class="qk-w--100 qk-h--100" :src="thumbnail.url" defaultMuted playsinline></video>
2482      <button class="videoPlayer__playButton"></button>
2483    </template>
2484    <img v-else :src="thumbnail.url" :alt="title" class="qk-w--100 qk-h--100">
2485  </div>
2486</script>
2486
2487
2488<script type="text/javascript">
2489  $(document).ready(function () {
2490    window.themeHelper.productModalComponents['swiper-thumbnails'] = {
2491      template: '#swiper-thumbnails',
2492      delimiters: ['${', '}'],
2493      props: {
2494        title: String,
2495        mediaItems: Array,
2496        currentImageIndex: Number,
2497      },
2498      emits: ['updateCurrentImageIndex'],
2499      methods: {
2500        updateCurrentImageIndex: function(thumbnailIndex) {
2501          if (thumbnailIndex !== this.currentImageIndex ) {
2502            this.$emit('updateCurrentImageIndex', thumbnailIndex);
2503          }
2504        },
2505      },
2506      mounted() {
2507        // can be removed after replacing video thumbnail with img
2508        const thumbnailVideo = $('.product-thumbnail video')[0];
2509        if (!!thumbnailVideo) {
2510          thumbnailVideo.volume = 0;
2511          const promise = thumbnailVideo.play();
2512          promise.then(() => {
2513            thumbnailVideo.pause();
2514          })
2515        }
2516      },
2517      computed: {
2518        allThumbnails: function() {
2519          return this.mediaItems.map(item => ({
2520            isVideo: !!item.url,
2521            url: item.url || item.medium
2522          }));
2523        },
2524      },
2525      watch: {
2526        allThumbnails: {
2527          handler(){
2528            this.updateCurrentImageIndex(this.currentImageIndex);
2529          }
2530        }
2531      }
2532    };
2533  });
2534</script>
2534
2535
2536<!-- cyb_snippet components/product_modal/swiper_thumbnails end -->
2537
2538
2539<!-- cyb_snippet _product_modal_js start -->
2540<script type="text/javascript">
2541  $(document).ready(function() {
2542    var categoryLevels = [];
2543    var productCategoryLevels = null;
2544    var pageMainProductId = null;
2545    window.themeHelper.productModalComponents['product-modal'] = {
2546      template: '#product-modal',
2547      delimiters: [
2548        '${', '}'
2549      ],
2550      props: {
2551        onlyDescription: Boolean,
2552        cartItems: Array,
2553        groupId: Number,
2554        productUrl: String,
2555        color: String, // unused
2556        collectionId: Number,
2557        categories: Array,
2558        // 判斷是否有色票展開
2559        isCollection: {
2560          type: Boolean,
2561          required: false,
2562          default: false,
2563        },
2564        // 判斷加入購物車的方法
2565        isNnCollection: Boolean,
2566        isNewNnCollection: Boolean,
2567        isBundleDiscount: Boolean,
2568
2569        // 判斷是否顯示商品描述
2570        isShowDescription: {
2571          type: Boolean,
2572          default: true
2573        },
2574
2575        // 判斷是否為立即購買
2576        isQuickBuy: {
2577          type: Boolean,
2578          default: false
2579        },
2580        selectedVariantId: Number,
2581        callBack: Function
2582      },
2583      data: function() {
2584        return {
2585          styledShopMenu: "buttonType",
2586          selectOption: '',
2587          selectCurrentStr:'',
2588          isModalSelectShow: false,
2589          modalOption: {},
2590          adding: false,
2591          currentImageIndex: 0,
2592          _navState: { variantId: null, photoIndex: 0 },
2593          currentOption: {
2594            option1: null,
2595            option2: null,
2596            option3: null
2597          },
2598          currentVariant: null,
2599          variantNotifications: null,
2600          currentVariantIndex: null,
2601          product: {},
2602          isChoose: false,
2603          isLoading: true,
2604          isEmptyClickable: liquidHelper.isEmptyClickable,
2605          quantity: 1,
2606          maxUsableBonus: 0,
2607          isDiscountPrice: false,
2608          displayProductDiscountsList: true,
2609          displayPeriodicSalesPages:true,
2610          discountsList: null,
2611          hasVideoPlugin: true,
2612          videoDisplayLocation: "before",
2613          hasStockNotificationPlugin: true,
2614          isDisplayPriceRange: null,
2615          hasVariantPriceRangePlugin: true,
2616          hasHideSingleVariantOptionsPlugin: false,
2617        }
2618      },
2619      mounted: function() {
2620        this.getProductDetail();
2621        $('.custom-scrollbar').addCustomScrollbar();
2622        themeHelper.EventBus.$on('photoOnChange', this.photoOnChange);
2623      },
2624      beforeUnmount: function() {
2625        themeHelper.EventBus.$off('photoOnChange', this.photoOnChange);
2626      },
2627      computed: {
2628        photoUrls: function() {
2629          return this.product.photoUrls.length > 0
2630            ? this.product.photoUrls
2631            : [this.featuredImage];
2632        },
2633        photoUrlsMap: function() {
2634          var map = {};
2635          var urls = this.product.photoUrls;
2636          this.product.photos.forEach(function(photo, index) {
2637            map[photo.photo.id] = urls[index];
2638          });
2639
2640          return map;
2641        },
2642        featuredImage: function() {
2643          return this.product.featuredImage;
2644        },
2645        swiperPhotos: function() {
2646          if (!this.photoUrls.length) {
2647            return [this.featuredImage];
2648          }
2649
2650          if (this.currentVariant && this.currentVariant.photos.length) {
2651            var map = this.photoUrlsMap;
2652            return this.currentVariant.photos.map(function(p) {
2653              return map[p.id];
2654            });
2655          }
2656
2657          return this.photoUrls;
2658        },
2659        productVideo: function() {
2660          return this.product.video;
2661        },
2662        videoAfterImage: function() {
2663          return this.videoDisplayLocation === 'after';
2664        },
2665        swiperItems: function() {
2666          const media = [...this.swiperPhotos];
2667          if (
2668            this.hasVideoPlugin && this.productVideo.url
2669          ) {
2670            this.videoAfterImage
2671              ? media.push(this.productVideo)
2672              : media.unshift(this.productVideo);
2673          }
2674          return media;
2675        },
2676        firstImageIndex: function() {
2677          return this.hasVideoPlugin && this.productVideo.url && !this.videoAfterImage
2678            ? 1
2679            : 0
2680        },
2681        otherDescriptions: function() {
2682          var descriptions = {};
2683          this.product.otherDescriptions.forEach(function(od) {
2684            descriptions[od.settingName] = od.bodyHtml;
2685          })
2686          return descriptions
2687        },
2688        variantOptions: function() {
2689          return themeHelper.variantOptions(this.product);
2690        },
2691        firstValidVariant: function() {
2692          var self = this;
2693          var result = this.product.variants.find(function(variant) {
2694            // 增加 product modal 聯絡店家 property
2695            variant.imgUrl = "";
2696            variant.productTitle = "";
2697
2698            return variant.available;
2699          });
2700
2701          return result
2702            ? result
2703            : null;
2704        },
2705        selectedValidVariant: function() {
2706          var self = this;
2707          var result = this.variantOptions.find(function(variant) {
2708            return variant.id === self.selectedVariantId;
2709          });
2710
2711          return result
2712            ? result
2713            : null;
2714        },
2715        totalInventoryQuantity: function(product) {
2716          return themeHelper.totalInventoryQuantity(this.product)
2717        },
2718        addCartText: function() {
2719          var variants = parseInt("");
2720          let isRegisteredNotification = this.currentVariant && this.variantNotifications && this.variantNotifications[this.currentVariant.id]
2721          if (this.isNnCollection || this.isBundleDiscount) {
2722            if (this.currentVariant && !themeHelper.variantIsAvailable(this.currentVariant)) {
2723              if (this.currentVariant.inventoryPolicy === 'continue') {
2724                if (this.isNnCollection) {
2725                  return this.isChoose && !this.isNewNnCollection
2726                    ? 'Ordered'
2727                    : 'Pre-order';
2728                }
2729              } else {
2730                return 'Sold out';
2731              }
2732            }
2733            if (this.totalInventoryQuantity === 0) {
2734              return 'Sold out';
2735            }
2736            return this.isChoose && !this.isNewNnCollection
2737              ? 'Selected'
2738              : 'Select';
2739          } else {
2740            if (this.isQuickBuy) {
2741              if (this.currentVariant && !themeHelper.variantIsAvailable(this.currentVariant)) {
2742                if (this.currentVariant.inventoryPolicy === 'continue'){
2743                  return 'Order Now'
2744                }
2745                return this.hasStockNotificationPlugin
2746                  ? (isRegisteredNotification
2747                    ? 'Notification Enabled'
2748                    : 'Sold out! Notify me when the product is available.')
2749                  : 'Contact Shop'
2750              }
2751              return 'BUY NOW';
2752            } else {
2753              if (this.currentVariant) {
2754                if (!themeHelper.variantIsAvailable(this.currentVariant)) {
2755                  if (this.currentVariant.inventoryPolicy === 'continue'){
2756                    return 'Pre-order'
2757                  }
2758                  return this.hasStockNotificationPlugin
2759                    ? (isRegisteredNotification
2760                      ? 'Notification Enabled'
2761                      : 'Sold out! Notify me when the product is available.')
2762                    : 'Contact Shop'
2763                }
2764              } else {
2765                if (this.totalInventoryQuantity === 0) {
2766                  return 'Sold out';
2767                }
2768              }
2769              return 'ADD TO CART';
2770            }
2771          }
2772        },
2773        cartItem: function() {
2774          if (!this.currentVariant) {
2775            return null
2776          }
2777          return {
2778            id: this.currentVariant.id,
2779            groupId: this.groupId,
2780            productId: this.product.id,
2781            title: this.product.title,
2782            photo: this.currentVariant.imgUrl || this.featuredImage.large,
2783            quantity: this.quantity,
2784            price: this.currentVariant.price,
2785            variant: this.currentVariant,
2786            product: this.product
2787          }
2788        },
2789        options: function() {
2790          return this.product.options;
2791        },
2792        optionTypes: function() {
2793
2794          // 先根據設定的variants來排序
2795          var self = this;
2796
2797          var option1 = [];
2798          var option2 = [];
2799          var option3 = [];
2800          this.product.variants.forEach(function(item) {
2801            if (item.option1 !== null) {
2802              option1.push(item.option1);
2803            }
2804            if (item.option2 !== null) {
2805              option2.push(item.option2);
2806            }
2807            if (item.option3 !== null) {
2808              option3.push(item.option3);
2809            }
2810          })
2811          var filteredOptionTypes = [];
2812          this.product.optionTypes.forEach(function(item, index) {
2813            filteredOptionTypes.push(self.getUniqueVariant(eval('option' + (
2814              index + 1
2815            ))).join(','));
2816          });
2817          return filteredOptionTypes;
2818        },
2819        optionInfo: function() {
2820          var self = this;
2821
2822          return self.options.map(function(option, index) {
2823            return {
2824              name: option,
2825              types: self.getOptions('option' + (
2826                index + 1
2827              ), self.optionTypes[index].split(','))
2828            }
2829          });
2830        },
2831        hasVariant: function() {
2832          return this.product.options.length > 0;
2833        },
2834        shouldHideSingleVariantOptions: function() {
2835          return this.hasHideSingleVariantOptionsPlugin &&
2836                 this.product.variants &&
2837                 this.product.variants.length <= 1;
2838        },
2839        variantSize: function() {
2840          if(this.product.options){
2841          return this.product.options.length;
2842          }
2843        },
2844        firstVariant: function() {
2845          return this.product.variants[0];
2846        },
2847        firstCheapestVariant: function() {
2848          return this.product.variants.find((v)=> (v.price === this.priceStats.minPrice));
2849        },
2850        priceStats: function() {
2851          return this.product.variants.reduce(function(acc, variant) {
2852            return {
2853              minPrice: variant.price < acc.minPrice ? variant.price : acc.minPrice,
2854              maxPrice: variant.price > acc.maxPrice ? variant.price : acc.maxPrice,
2855            };
2856          }, {
2857            minPrice: this.firstVariant.price,
2858            maxPrice: this.firstVariant.price,
2859          });
2860        },
2861        hidePrice: function() {
2862          return this.product && this.product.hidePrice === true;
2863        },
2864        salesModePurchasable: function() {
2865          return !(this.product && this.product.salesModePurchasable === false);
2866        },
2867         // - 任選折扣/紅配綠:「選擇」只是加進試算清單,不會直接下單,故只擋藏價商品
2868        // - 其他情境(商品頁、群組頁、多層級分類、搜尋、首頁商品區塊):不可購買(含藏價)就整組收掉
2869        showPurchaseControls: function() {
2870          if (this.isNnCollection || this.isBundleDiscount) {
2871            return !this.hidePrice;
2872          }
2873          return this.salesModePurchasable;
2874        },
2875        variantPrice: function() {
2876          if (this.hidePrice) {
2877            return '';
2878          }
2879          var from = liquidHelper.defaultCurrency;
2880          if (this.currentVariant) {
2881            return moneySymbol(this.currentVariant.price, from);
2882          }
2883          if (this.product.variants.length === 1) {
2884            return moneySymbol(this.firstVariant.price, from);
2885          }
2886
2887          var minPrice = this.priceStats.minPrice;
2888          var maxPrice = this.priceStats.maxPrice;
2889
2890          if (minPrice !== maxPrice && (!this.hasVariantPriceRangePlugin || this.isDisplayPriceRange)) {
2891            this.isDiscountPrice = false;
2892            return moneySymbol(minPrice, from) + '~' + moneySymbol(maxPrice, from);
2893          } else {
2894            return moneySymbol(minPrice, from);
2895          }
2896        },
2897        marketPrice: function() {
2898          if (this.hidePrice) {
2899            this.isDiscountPrice = false;
2900            return;
2901          }
2902          var from = liquidHelper.defaultCurrency;
2903          if (this.currentVariant) {
2904            this.isDiscountPrice = false;
2905            if (this.currentVariant.compareAtPrice && this.currentVariant.compareAtPrice > this.currentVariant.price) {
2906              this.isDiscountPrice = true;
2907              return moneySymbol(this.currentVariant.compareAtPrice, from);
2908            }
2909          } else {
2910            if (!_.includes(this.variantPrice, '~')) {
2911              const price =  Number(this.variantPrice.replace(/[^0-9.
2911-]/g, ""))
2912              // 未選擇款式也不顯示區間時,顯示第一個最便宜的款式的定價
2913              if (this.firstCheapestVariant.compareAtPrice && this.firstCheapestVariant.compareAtPrice > price){
2914                this.isDiscountPrice = true;
2915                return moneySymbol(this.firstCheapestVariant.compareAtPrice, from);
2916              }
2917              // 未選擇款式時要改回一般價格顏色
2918              this.isDiscountPrice = false;
2919            }
2920          }
2921        },
2922        isShowDropdownList: function() {
2923          if (this.product.options.length > 0) {
2924            return true;
2925          }
2926          return this.product.variants.length > 1
2927        },
2928        priceTitleTag: function() {
2929          return this.marketPrice
2930            ? getDiscountPriceName()
2931            : getDiscountPriceSuggestionName();
2932        },
2933        isHideAddCartBtn: function() {
2934          if (this.addCartText === 'Sold out') {
2935            return true;
2936          }
2937          return false;
2938        },
2939        isSecondaryBtn: function() {
2940          if (this.addCartText === 'Contact Shop') {
2941            return true;
2942          }
2943          return false;
2944        },
2945        variantsMaxUsableBonus: function() {
2946          var variants = this.product.variants;
2947          var maxUsableBonusArray = variants.map(function(item) {
2948            return item.maxUsableBonus
2949          });
2950          return Math.max.apply(null, maxUsableBonusArray);
2951        },
2952        bonusToPrice: function() {
2953          const bonus = this.currentVariant
2954            ? this.currentVariant.maxUsableBonus
2955            : this.maxUsableBonus;
2956          const price = Math.floor(bonus / window.liquidHelper.conversionBonus);
2957          const priceWithMoney = window.themeHelper.productDisplayCurrencyBlock(price);
2958          return "equivalent to value".replace('value', priceWithMoney);
2959        },
2960        isMobileSize: function() {
2961          return window.innerWidth <= 580
2962        },
2963        limitBuyText: function () {
2964          const minCount = this.product.minBuy;
2965          const maxCount = this.product.limitBuy;
2966          if (minCount > 0 && maxCount > 0) {
2967            return 'For this product, each order requires a minimum purchase of minCount units and allows a maximum purchase of maxCount units.'.replace('minCount', minCount).replace('maxCount', maxCount);
2968          }
2969          if (minCount > 0) {
2970            return 'This product requires a minimum order of minCount pieces per order'.replace('minCount', minCount);
2971          }
2972          if (maxCount > 0) {
2973            return 'For this product, each order allows a maximum purchase of maxCount units.'.replace('maxCount', maxCount);
2974          }
2975          return '';
2976        }
2977      },
2978      methods: {
2979        onClickSelectModal: function(objData, selectOptionStr) {
2980          this.isModalSelectShow = true;
2981          this.modalOption = objData;
2982          this.selectOption = selectOptionStr
2983          this.selectCurrentStr = this.currentOption && (String(this.currentOption[selectOptionStr]) || null)
2984        },
2985        onChangeModalSelect: function(flag, isSelect) {
2986          if(!isSelect){
2987            this.setOption(this.selectOption,this.selectCurrentStr,this.modalOption.types)
2988          }
2989          this.isModalSelectShow = flag;
2990        },
2991        setOption: function(optionKey, type, dataArr) {
2992          let flag = true
2993          dataArr.forEach(item => {
2994            if (item.name === type) {
2995              flag = item.isValid
2996            }
2997          })
2998          if (flag) {
2999            this.toggleCurrentOption(optionKey, type)
3000          }
3001        },
3002        addToWishListEvent: function() {
3003          try {
3004            if (appMarketAddToWishListEvent) {
3005              var product = this.product;
3006              var currentVariant = this.currentVariant
3007              var element = $(`.btn[data-id=${product.id}]`);
3008              var index;
3009              var listName;
3010              if (element) {
3011                index = element.data('position')
3012                listName = element.data('list')
3013              }
3014              // sku_properties:選中款式的 option pairs(當前語系),類型名 zip 值
3015              var optionValues = [currentVariant.option1, currentVariant.option2, currentVariant.option3];
3016              var properties = [];
3017              (product.options || []).forEach(function(optionName, i) {
3018                if (optionName && optionValues[i]) {
3019                  properties.push({ name: optionName, value: optionValues[i] });
3020                }
3021              });
3022              var dataSet = {
3023                name: product.title,
3024                category: product.productType,
3025                categories: (this.categories && this.categories.length) ? this.categories : (categoryLevels.length ? categoryLevels : (product.id === pageMainProductId ? productCategoryLevels : undefined)),
3026                sku: currentVariant.sku,
3027                price: currentVariant.price,
3028                compare_at_price: currentVariant.compareAtPrice,
3029                properties: properties,
3030                quantity: currentVariant.inventoryQuantity,
3031                variant: currentVariant.title,
3032                listName: listName || null,
3033                productId: product.id,
3034                variantId: currentVariant.id,
3035                index: Number(index) || 0,
3036              }
3037              appMarketAddToWishListEvent(dataSet)
3038            }
3039          } catch (e) {
3040            console.error(e)
3041          }
3042        },
3043        addWishList: function() {
3044          if (this.currentVariant === null) {
3045            window.msg('Please select product specifications', 'warning').show();
3046            return;
3047          }
3048          var productVariantId = this.currentVariant.id;
3049          var addToWishListEvent = this.addToWishListEvent
3050          $.ajax({
3051            method: 'POST',
3052            url: '/tracking_items',
3053            dataType: 'json',
3054            data: {
3055              product_variant_id: productVariantId
3056            },
3057            success: function(response) {
3058              if (response.message) {
3059                window.msg(response.message, 'success').show();
3060                addToWishListEvent()
3061              }
3062
3063              if (response.error) {
3064                window.msg(response.error, 'error').show();
3065
3066              }
3067              if (response.info) {
3068                window.msg(response.info, 'info').show();
3069              }
3070              if (response.success === false) {
3071                if (window.liquidHelper && window.liquidHelper.language && window.liquidHelper.language.handle) {
3072                  window.location = "/" + window.liquidHelper.language.handle + "/account/login";
3073                } else {
3074                  window.location = "/account/login";
3075                }
3076              }
3077            }
3078          });
3079        },
3080        setChoose: function(currentVariant) {
3081          this.maxUsableBonus = 0;
3082          var quantity = 1;
3083          var cartItem = null;
3084          if (!this.isNnCollection && this.cartItems) {
3085            cartItem = this.normalGetChoosenItem(currentVariant);
3086          }
3087          if (this.isNnCollection) {
3088            cartItem = this.nnCollectionGetChoosenItem(currentVariant);
3089          }
3090          this.isChoose = !! cartItem;
3091          if (this.isNewNnCollection) {
3092            return
3093          }
3094          this.quantity = cartItem
3095            ? cartItem.quantity
3096            : this.quantity;
3097
3098          // product modal 聯絡店家情境
3099          if (currentVariant) {
3100            var photoIndex = 0;
3101            if (! currentVariant.imgUrl) {
3102              currentVariant.imgUrl = this.swiperPhotos.length > 0
3103                ? (this.swiperPhotos[photoIndex] && this.swiperPhotos[photoIndex].large)
3104                : this.featuredImage.large;
3105            }
3106            currentVariant.productTitle = this.product.title + ' - ' + this.currentVariant.title;
3107          }
3108        },
3109        normalGetChoosenItem: function(currentVariant) {
3110          return this.cartItems.find(function(cartItem) {
3111            return currentVariant && cartItem.id === currentVariant.id;
3112          });
3113        },
3114        nnCollectionGetChoosenItem: function(currentVariant) {
3115          var isSelected = null;
3116          if (! currentVariant) {
3117            return isSelected;
3118          }
3119          if (this.isNewNnCollection) {
3120            var cart = store.get(`SpecialCollectionCart_${this.collectionId}`);
3121            isSelected = cart && cart.find((item) => item.variant_id == currentVariant.id) || null;
3122          } else {
3123            store.each(function(value, key) {
3124              var productId = _.includes(key, 'Pro' + currentVariant.productId);
3125              var variantID = _.includes(key, 'Var' + currentVariant.id);
3126              if (productId && variantID) {
3127                isSelected = store.get(key);
3128              }
3129            });
3130          }
3131
3132          return isSelected;
3133        },
3134        // get product detail
3135        getProductDetail: function() {
3136          var self = this;
3137
3138          $.ajax({
3139            url: self.productUrl + '.json',
3140            type: 'GET',
3141            timeout: 30000,
3142            beforeSend: function() {
3143              self.isLoading = true;
3144            },
3145            error: function(xhr) {
3146              self.closeModal();
3147              if (xhr.status === 429) {
3148                window.showAddCartRateLimitModal(5);
3149                return;
3150              }
3151              window.msg('Network error, please try again later', 'error').show();
3152            }
3153          }).done(function(data) {
3154            if (data.id) {
3155              var productData = [themeHelper.toCamelCase(data)];
3156              self.product = themeHelper.priceWithDiscount(productData, liquidHelper.hasPriceWithDiscountPlugin)[0];
3157              self.maxUsableBonus = self.variantsMaxUsableBonus;
3158              if (self.product.variants.length === 1 || liquidHelper.isFirstVariantSelected || self.selectedVariantId) {
3159                self.currentVariant = self.firstValidVariant;
3160                // 如果已經自選商品,則商品頁下滑加入購物車顯示自選商品
3161                if (self.selectedVariantId) {
3162                  self.currentVariant = self.selectedValidVariant;
3163                }
3164                if (self.currentVariant) {
3165                  self.setChoose(self.currentVariant);
3166                  self.setDefaultOption();
3167                }
3168              }
3169              if (self.displayProductDiscountsList) {
3170                self.setUpDiscountsTag(data);
3171              }
3172              self.isLoading = false;
3173              if (self.product && self.product.variants) {
3174                self.product.variants.forEach(function(discountedVariant) {
3175                  var rawVariant = data.variants.find(function(v) { return v.id === discountedVariant.id; });
3176                  if (rawVariant) { rawVariant.price = discountedVariant.price; }
3177                });
3178              }
3179              viewItem && viewItem(data, { collectionId: '187926', collectionName: "All Items", categories: (self.categories && self.categories.length) ? self.categories : (categoryLevels.length ? categoryLevels : (data.id === pageMainProductId ? productCategoryLevels : undefined)) });
3180
3181              (function() {
3182                // Read login status from cacheable, skip GET /pv_notification if not login.
3183                if (window.store && window.store.get('customer')) {
3184                  var cacheableCustomer = window.store.get('customer');
3185                  if (cacheableCustomer.notLogin) {
3186                    return;
3187                  }
3188                }
3189                $.ajax({
3190                  url: '/pv_notification',
3191                  method: 'GET',
3192                  dataType: 'json',
3193                  data: {
3194                    product_id: parseInt(data.id)
3195                  },
3196                  success: function(response) {
3197                    self.variantNotifications = response.variants;
3198                  }
3199                })
3200              })();
3201            } else {
3202              window.msg('Network error, please try again later', 'error').show();
3203              self.closeModal()
3204            }
3205          })
3206        },
3207        // product image btn
3208        photoOnChange: function(photoIndex, isVariantReposition) {
3209          var visiblePhotos = (this.currentVariant && this.currentVariant.photos.length)
3210            ? this.currentVariant.photos
3211            : this.product.photos.map(function(p) { return p.photo; });
3212          var result = themeHelper.buildNavigateItemImagePayload(this._navState, {
3213            product: this.product,
3214            currentVariant: this.currentVariant,
3215            visiblePhotos: visiblePhotos,
3216            slideIndex: photoIndex,
3217            videoOffset: this.firstImageIndex,
3218          });
3219          this._navState = result.nextState;
3220          if (result.payload && !isVariantReposition) {
3221            window.navigateItemImage(result.payload);
3222          }
3223          this.currentImageIndex = photoIndex;
3224        },
3225        toggleCurrentOption: function(key, value) {
3226          this.currentOption[key] =
3227            (this.currentOption[key] === value || value === 'null') ? null : value;
3228          var variantIndex = this.getVariantIndex();
3229          if (variantIndex !== -1) {
3230            this.currentVariant = this.product.variants[variantIndex];
3231          } else {
3232            this.currentVariant = null;
3233          }
3234          this.setChoose(this.product.variants[variantIndex]);
3235          if (this.currentOption[key] !== null) {
3236            var optionIndex = parseInt(key.replace('option', '')) - 1;
3237            appStoreSelectItemEvent(this.product, this.product.options[optionIndex], this.currentOption[key], this.currentVariant);
3238          }
3239        },
3240        toggleNotification: function() {
3241          var self = this;
3242          var variantId = this.currentVariant.id;
3243
3244          $.ajax({
3245            url: '/toggle_pv_notification',
3246            method: 'POST',
3247            dataType: 'json',
3248            data: {
3249              product_variant_id: variantId
3250            },
3251            success: function(response) {
3252              self.variantNotifications[variantId] = response.notice;
3253              window.msg(response.message, "success").show();
3254            },
3255            error: function(xhr) {
3256              var response = xhr.responseJSON;
3257              var msg = response && response.error || "Network error, please try again later";
3258              window.msg(msg, "error").show();
3259            }
3260          })
3261        },
3262        getOptionImageIndex: function(index) {
3263          this.currentImageIndex = index;
3264        },
3265        quantityDecrease: function() {
3266          if (this.cartItem) {
3267            themeHelper.EventBus.$emit('quantityDecrease', this.cartItem, false);
3268            this.quantity = this.cartItem.quantity
3269          } else {
3270            window.msg("Please select product specifications", 'warning').show();
3271          }
3272        },
3273        quantityIncrease: function() {
3274          if (this.cartItem) {
3275            themeHelper.EventBus.$emit('quantityIncrease', this.cartItem, false);
3276            this.quantity = this.cartItem.quantity
3277          } else {
3278            window.msg("Please select product specifications", 'warning').show();
3279          }
3280        },
3281        quantityChange: function(el) {
3282          if (this.cartItem) {
3283            themeHelper.EventBus.$emit('quantityChange', parseInt(el.target.value), this.cartItem, false);
3284            this.quantity = this.cartItem.quantity;
3285            el.target.value = this.cartItem.quantity;
3286          } else {
3287            window.msg("Please select product specifications", 'warning').show();
3288          }
3289        },
3290        addProduct: function() {
3291          if (this.addCartText === 'Contact Shop') {
3292            $('#messagebuy-Modal').data('variant', this.currentVariant);
3293            $('#messagebuy-Modal').modal('show');
3294            $('#messagebuy-Modal').css("background-color", "rgba(0, 0, 0, .6)");
3295          } else if (
3296            this.addCartText === 'Notification Enabled' ||
3297            this.addCartText === 'Sold out! Notify me when the product is available.'
3298          ) {
3299              this.toggleNotification();
3300          } else {
3301            if (this.cartItem) {
3302              try {
3303                if (this.isChoose) {
3304                  themeHelper.EventBus.$emit('updateStore', 'update', this.cartItem, this.callBack)
3305                } else {
3306                  themeHelper.EventBus.$emit('updateStore', 'add', this.cartItem, this.callBack)
3307                }
3308
3309                this.adding = true;
3310                this.closeModal();
3311              } catch (e) {
3312                window.msg("Unusual product specification; please select again.", 'error').show();
3313              }
3314            } else {
3315              window.msg("Please select product specifications", 'warning').show();
3316            }
3317          }
3318        },
3319        closeModal: function() {
3320          themeHelper.EventBus.$emit('closeProductModal');
3321        },
3322        setDefaultOption: function() {
3323          var self = this;
3324          Object.keys(self.currentOption).map(function(optionKey) {
3325            self.currentOption[optionKey] = self.currentVariant[optionKey];
3326          });
3327        },
3328        getVariantIndex: function() {
3329          var self = this;
3330          return self.product.variants.findIndex(function(variant, index) {
3331            var isVariant = true;
3332            Object.keys(self.currentOption).forEach(function(option) {
3333              if (variant[option] !== self.currentOption[option]) {
3334                isVariant = false;
3335              }
3336            });
3337            return isVariant;
3338          });
3339        },
3340
3341        // 篩選重複品項
3342        getUniqueVariant: function(variants) {
3343          return variants.filter(function(value, index, self) {
3344            return self.indexOf(value) === index;
3345          });
3346        },
3347        groupBy(xs, key) {
3348          return xs.reduce(function(rv, x) {
3349            (rv[x[key]] = rv[x[key]] || []).push(x);
3350            return rv;
3351          }, {});
3352        },
3353        setUpDiscountsTag(data) {
3354          var self = this;
3355          var languagePrefix = '/' + ((window.shopScriptHelper && window.shopScriptHelper.i18nLocale) || 'zh-TW');
3356          $.ajax({
3357            url: languagePrefix + self.productUrl + '/discounts_list',
3358            method: 'GET',
3359            success: function(result) {
3360              if (result.length > 0) {
3361                var discounts_list = self.groupBy(result, 'campaign_type');
3362                self.discountsList = discounts_list;
3363              } else {
3364                self.discountsList = null;
3365              }
3366            }
3367          });
3368        },
3369        getOptions: function(optionKey, optionTypes) {
3370          var self = this;
3371          return optionTypes.map(function(optionType, index) {
3372            var isValid = true;
3373
3374            // 選出包含目前type的variant
3375            var matchVariants = self.product.variants.filter(function(variant) {
3376              return variant[optionKey] === optionType;
3377            });
3378
3379            // 篩選已勾選type
3380            Object.keys(self.currentOption).forEach(function(currentOptionKey) {
3381              if (currentOptionKey !== optionKey) {
3382                matchVariants = matchVariants.filter(function(variant) {
3383                  if (self.currentOption[currentOptionKey]) {
3384                    return variant[currentOptionKey] === self.currentOption[currentOptionKey]
3385                  } else {
3386                    return true;
3387                  }
3388                });
3389              }
3390            });
3391            if (matchVariants.length === 0) {
3392              isValid = false;
3393            }
3394            if (! self.isEmptyClickable) {
3395              isValid = false;
3396              matchVariants.find(function(item) {
3397                if (item.inventoryQuantity === null || item.inventoryQuantity > 0 || item.inventoryPolicy === 'continue') {
3398                  isValid = true;
3399                }
3400              });
3401            }
3402            return {name: optionType, isValid: isValid}
3403          });
3404        }
3405      }
3406    };
3407  });
3408</script>
3408
3409
3410<!-- cyb_snippet _product_modal_js end -->
3411
3412<!-- cyb_snippet components/product_modal/product_modal end -->
3413
3414<!-- cyb_snippet messagebuy_modal start -->
3415
3416
3417<!-- cyb_snippet messagebuy_modal end -->
3418<!-- cyb_snippet components/rate_limit_modal start -->
3419<link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/rate_limit_modal-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' />
3420
3421<div class="modal fade" id="rate-limit-modal" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="static" data-keyboard="false">
3422  <div class="modal-dialog modal-dialog-centered" role="document">
3423    <div class="modal-content">
3424      <div class="modal-body">
3425        <div class="qk-text--default_dark rate-limit-text">
3426          <p id="rate-limit-title">High demand right now, please wait</p>
3427          <p class="qk-fs--body qk-fw--500 rate-limit-message">
3428            <span class="qk-text--error" id="rate-limit-countdown"></span>
3429            <span id="rate-limit-desc"></span>
3430          </p>
3431          <p class="qk-fs--body qk-fw--500 rate-limit-message" id="rate-limit-warn">Leaving this page may increase your wait time.</p>
3432        </div>
3433        <button id="rate-limit-btn" class="btn qk-btn qk-btn--primary" disabled>Re-enter product page</button>
3434      </div>
3435    </div>
3436  </div>
3437</div>
3438
3439<script>
3440  window.showRateLimitModal = function(countdownSec) {
3441    var countdown = countdownSec || 5;
3442    var $modal = $('#rate-limit-modal');
3443    var $btn = $modal.find('#rate-limit-btn');
3444    var $countdownEl = $modal.find('#rate-limit-countdown');
3445
3446    $btn.show();
3447    $modal.find('#rate-limit-desc').text(language["product_rate_limit_desc"]);
3448    $countdownEl.text(countdown);
3449    $btn.prop('disabled', true);
3450    $modal.modal('show');
3451
3452    var timer = setInterval(function() {
3453      countdown--;
3454      $countdownEl.text(countdown);
3455      if (countdown <= 0) {
3456        clearInterval(timer);
3457        $btn.prop('disabled', false);
3458      }
3459    }, 1000);
3460
3461    $btn.off('click').on('click', function() {
3462      location.reload();
3463    });
3464  }
3465
3466  window.showAddCartRateLimitModal = function(countdownSec) {
3467    var countdown = countdownSec || 5;
3468    var $modal = $('#rate-limit-modal');
3469    var $countdownEl = $modal.find('#rate-limit-countdown');
3470
3471    $modal.find('#rate-limit-btn').hide();
3472    $modal.find('#rate-limit-desc').text(language["addcart_rate_limit_desc"]);
3473    $countdownEl.text(countdown);
3474    $modal.modal('show');
3475
3476    var timer = setInterval(function() {
3477      countdown--;
3478      $countdownEl.text(countdown);
3479      if (countdown <= 0) {
3480        clearInterval(timer);
3481        $modal.modal('hide');
3482      }
3483    }, 1000);
3484  }
3485</script>
3485
3486
3487<!-- cyb_snippet components/rate_limit_modal end -->
3488
3489<script>
3490  $(document).ready(function() {
3491    const shouldSkipQuantityCheck = false;
3492    const newAddCartModalApp = new window.themeHelper.LiquidVueHandler({
3493      componentNames: Object.keys(window.themeHelper.productModalComponents),
3494      mountSelector: '#new-addcart-modal',
3495      autoMount: false,
3496    });
3497
3498    newAddCartModalApp.createApp({
3499      el: '#new-addcart-modal',
3500      delimiters: ['${', '}'],
3501      data() {
3502        return {
3503          collectionId: 0,
3504          categories: [],
3505          color: '', // unused
3506          isCollection: true,
3507          productQuantity: 0,
3508          onlyDescription: false,
3509          showProductModal: false,
3510          popProductUrl: '',
3511          loading: false,
3512        };
3513      },
3514      mounted: function() {
3515        themeHelper.EventBus.$on('closeProductModal',this.closeProductModal);
3516        themeHelper.EventBus.$on('updateStore', this.addProduct);
3517        themeHelper.EventBus.$on('quantityDecrease', this.quantityDecrease);
3518        themeHelper.EventBus.$on('quantityIncrease', this.quantityIncrease);
3519        themeHelper.EventBus.$on('quantityChange', this.quantityChange);
3520      },
3521      methods: {
3522        addProduct: function(actionType, productData, checkoutAddToCartCallback){
3523          var self = this;
3524          var pageViewId = window.CYBERBIZ && window.CYBERBIZ.dis && window.CYBERBIZ.dis.pageViewId;
3525          $.ajax({
3526            method: 'POST',
3527            url: '/cart/add',
3528            headers: pageViewId ? { 'X-Cyb-Page-View-Id': pageViewId } : {},
3529            data: {
3530              id: productData.id,
3531              quantity: productData.quantity,
3532            },
3533            dataType: 'json',
3534            beforeSend: function() {
3535              self.loading = true;
3536              themeHelper.ajaxLoadingMsg('loading');
3537              $('.shopcart').dropdown('hide')
3538              $('.global-cart-count').hide();
3539              $('.global-cart-loading').show();
3540              $('.global-cart-loading').html('<i class="fa fa-spinner fa-pulse" style="vertical-align: middle;"></i>');
3541            },
3542            error: function(xhr) {
3543              $('.global-cart-loading').hide();
3544              $('.global-cart-count').show();
3545              self.loading = false;
3546              if (xhr.status === 429) {
3547                themeHelper.ajaxLoadingMsg('hide', 0);
3548                self.closeProductModal();
3549                window.showAddCartRateLimitModal(5);
3550                return;
3551              }
3552              themeHelper.ajaxLoadingMsg('fail', 2000);
3553            }
3554          }).done(function(data, status, request){
3555            // product modal 立即購買按鈕
3556            window.sendAddToCartEvent && sendAddToCartEvent({
3557              price: productData.price,
3558              quantity: productData.quantity,
3559              id: productData.product.id,
3560              name: productData.product.title,
3561              category: productData.product.productType,
3562              brand: productData.product.vendor,
3563              qc: productData.variant.qc,
3564              variant: {
3565                id: productData.variant.id,
3566                title: productData.variant.title,
3567                sku: productData.variant.sku,
3568                price: productData.variant.price,
3569                qc: productData.variant.qc,
3570              },
3571              position: "商品彈出視窗",
3572              request,
3573            })
3574            if (self.isQuickBuy) {
3575              if (window.liquidHelper && window.liquidHelper.language && window.liquidHelper.language.handle) {
3576                window.location = "/" + window.liquidHelper.language.handle + "/cart";
3577              } else {
3578                window.location = "/cart";
3579              }
3580            } else {
3581              themeHelper.ajaxLoadingMsg('success');
3582              pullNavCart();
3583              $('.shopcart').dropdown('show')
3584              $('.global-cart-loading').hide();
3585              self.loading = false;
3586            }
3587            if(typeof checkoutAddToCartCallback === 'function'){
3588              var callbackData = {
3589                id: productData.id,
3590                quantity: productData.quantity,
3591                title: productData.product ? productData.product.title : productData.title || ''
3592              };
3593              checkoutAddToCartCallback(callbackData)
3594            }
3595            peh.emit('product:add_to_cart', [{
3596              variantId: productData.id,
3597              quantity: productData.quantity
3598            }], self.collectionId);
3599          }).fail(function(e){
3600            if (e.status === 429) {
3601              return;
3602            }
3603            let err_msg = e.responseJSON.err_msg;
3604            err_msg && err_msg.length > 0 ?
3605              window.msg(e.responseJSON.err_msg, 'warning').show():
3606              window.msg("Network error, please try again.", 'warning').show();
3607          })
3608        },
3609        quantityDecrease: function(cartItem, isAdded){
3610          if (cartItem.quantity > 1) {
3611            cartItem.quantity -= 1;
3612          } else {
3613            window.msg("Quantity must be greater than 0;
3613 please select the amount to purchase.", 'warning').show();
3614          }
3615        },
3616        quantityIncrease: function(cartItem, isAdded){
3617          const limitQuantity = cartItem.variant.inventoryQuantity;
3618          const limitBuy = cartItem.product.limitBuy
3619          if (limitBuy && cartItem.quantity >= limitBuy) {
3620            product_limit_buy = "Limited purchase of this product limitBuy items".replace('limitBuy', limitBuy)
3621            window.msg(product_limit_buy, 'warning').show();
3622            return;
3623          } else if (cartItem.quantity >= liquidHelper.cartQuantityLimit) {
3624            window.msg("Quantity exceeds shopping cart limit; please remove some items and place the order again.", 'warning').show();
3625          } else if ( cartItem.quantity < limitQuantity || limitQuantity === null ||
3626            cartItem.variant.inventoryPolicy == "continue" || shouldSkipQuantityCheck) {
3627            cartItem.quantity += 1;
3628          } else {
3629            this.showInventoryMessage(limitQuantity);
3630          }
3631        },
3632        quantityChange: function(quantity, cartItem, isAdded){
3633          const limitBuy = cartItem.product.limitBuy
3634          var limitQuantity = cartItem.variant.inventoryQuantity;
3635          var inventoryPolicy = cartItem.variant.inventoryPolicy;
3636          if (Number.isInteger(quantity)) {
3637            if (quantity >= 1) {
3638              if (limitBuy && quantity >= limitBuy) {
3639                product_limit_buy = "Limited purchase of this product limitBuy items".replace('limitBuy', limitBuy)
3640                window.msg(product_limit_buy, 'warning').show();
3641              } else if (quantity > liquidHelper.cartQuantityLimit) {
3642                window.msg("Quantity exceeds shopping cart limit; please remove some items and place the order again.", 'warning').show();
3643              } else if (quantity <= limitQuantity || limitQuantity === null || inventoryPolicy == "continue" || shouldSkipQuantityCheck) {
3644                cartItem.quantity = quantity;
3645              } else {
3646                cartItem.quantity = limitQuantity;
3647                this.showInventoryMessage(limitQuantity);
3648              }
3649            } else {
3650              window.msg("Quantity must be greater than 0; please select the amount to purchase.", 'warning').show();
3651            }
3652          } else {
3653            window.msg("Quantity input error", 'warning').show();
3654          }
3655        },
3656        popModal: function(productUrl, collectionId, color, isCollection, isShowDescription, isQuickBuy, variantId, checkoutAddToCartCallback, categories){
3657          this.showProductModal = true;
3658          this.collectionId = collectionId;
3659          this.categories = categories || [];
3660          this.popProductUrl = productUrl;
3661          this.color = color || ''; // unused
3662          this.isCollection = isCollection || false;
3663          this.isShowDescription = isShowDescription != false;
3664          this.isQuickBuy = isQuickBuy || false;
3665          this.selectedVariantId = parseInt(variantId) || undefined;
3666          this.checkoutAddToCartCallback = checkoutAddToCartCallback;
3667          document.body.style.overflow = "hidden";
3668        },
3669        closeProductModal: function() {
3670          this.showProductModal = false;
3671          document.body.style.overflow = "";
3672        },
3673        showInventoryMessage: function(inventoryQuantity) {
3674          const stockMessage = "Quantity exceeds inventory stock. Remaining count".replace('count', inventoryQuantity || 0);
3675          window.msg(stockMessage, 'warning').show();
3676        },
3677      }
3678    });
3679
3680    for (const componentName in window.themeHelper.productModalComponents) {
3681      newAddCartModalApp.component(
3682        componentName,
3683        window.themeHelper.productModalComponents[componentName],
3684      );
3685    }
3686
3687    window.new_addcart_modal = newAddCartModalApp.mount();
3688  });
3689</script>
3689
3690
3691<!-- cyb_snippet new_addcart_modal end -->
3692
3693  
3694
3695  
3696
3697  
3698
3699  
3700
3701  
3702
3703  
3703<script>
3704    document.addEventListener('DOMContentLoaded', function() {
3705      window.renderCollectionPage('#collection-content', {
3706        collection: {
3707          id: Number('187926') || undefined,
3708          title: "All Items",
3709          className: 'CustomCollection',
3710          handle: "all-product"
3711        },
3712        currentTags: null || '',
3713        containerClass: 'col-lg-9',
3714        cartEnabled: true,
3715        showPeriodicLabel: false,
3716        trackingVariantIds: null,
3717        useVanillaFilter: true,
3718        filterNotASearch: null,
3719        settingsData: {
3720          displayProductTotalSold: false,
3721          productScale: "default_scale",
3722          displayPeriodicOrderLabel: false,
3723          discountPriceSloganUrl: '/theme_src/beta_theme/default_img/onsale_icon.png',
3724          productSloganDisplay: false,
3725          collectionPaginationLimit: Number(24) || 24,
3726          isInfiniteScroll: false,
3727          isUpcomingProductsEnabled: false,
3728          productTextAlign: "start",
3729          displayProductVariantThumbnail: null,
3730          hasIntegratedProductLabelsPlugin: true,
3731          productColumnForPc: "4",
3732          isDisplayPriceRange: null,
3733          productCardHoverEffect: "button",
3734          productImageBorderRadius:0
3735        }
3736      });
3737    });
3738  </script>
3738
3739
3740  
3740<script>
3741    $('#collection .collection_products').on('click', ".btn-cart", function(event) {
3742      event.preventDefault();
3743      var comboProductInfo = $(this).data('comboProductInfo');
3744      if (comboProductInfo) {
3745        window.themeHelper.EventBus.$emit('showRelatedItemsSelectModal', comboProductInfo);
3746      } else {
3747        var productHandle = '/products/' + $(this).data('handle');
3748        var collectionId = $(this).data('collection');
3749        var color = $(this).data('color');
3750        var isCollection = true;
3751        new_addcart_modal.popModal(productHandle, collectionId, color, isCollection);
3752      }
3753    });
3754
3755    // 無限下拉轉換率追蹤
3756    window.gtIds = dataLayer.reduce(function(acc, curr) {
3757      if (curr[2] && curr[2].custom_map && curr[2].custom_map.dimension3 === 'infinite_scroll') {
3758        acc.push(curr[1]);
3759      }
3760      return acc;
3761    }, []);
3762    gtag('set', 'dimension3', 'behavior_test_normal');
3763    window.gtIds.forEach(function(g) {
3764      gtag('event', 'normal_collection_page_load', {send_to: g})
3765    });
3766  </script>
3766
3767
3768
3769
3770
3771
3772
3773
3774    </div>
3775
3776    <!-- Footer -->
3777    
3778
3779
3780
3781
3782
3783
3784<style>
3785  
3786  
3787  @media(min-width: 991px) {
3788    .display_x .left-content > div {
3789      max-width: calc(100% / 3);
3790    }
3791  }
3792</style>
3793
3794<div id="index-recommendation"></div>
3795
3796<footer id="footer" class="qk-fs--body qk-bg--footer_bg">
3797  
3798    
3799    <div class="qk-container display_x">
3800      <div class="footer_content qk-mg--0 qk-display--flex qk-justify--between">
3801        <div class="left-content qk-flex--1">
3802          
3803            
3804              <div class="item contact qk-text--left">
3805                
3806                  <p class="footer_title qk-fs--title qk-text--footer_text">Contact Info</p>
3807                
3808                <ul>
3809                  
3810                    <li class="phone qk-bd_r--default qk-bd--footer_text qk-display--il_bk">
3811                      <span class="qk-text--footer_text">Customer Service Hotline: 0912345678</span>
3812                    </li>
3813                  
3814                  
3815                  
3816                    <li class="time qk-bd_r--default qk-bd--footer_text qk-display--il_bk">
3817                      <span class="qk-text--footer_text">Customer service hour: 10:00-17:00</span>
3818                    </li>
3819                  
3820                  
3821                    <br>
3822                    <li class="mail qk-bd_r--default qk-bd--footer_text qk-cursor--pointer qk-display--il_bk">
3823                      <a class="qk-text--footer_text" href="mailto:[email protected]">Email: [email protected]</a>
3824                    </li>
3825                  
3826                  
3827                  
3828                </ul>
3829              </div>
3830              
3831          
3832            
3833              <div class="link-list-container">
3834                
3835                  <p class="footer_title qk-fs--title qk-text--footer_text">About Us</p>
3836                
3837                <div class="item horizontal qk-text--left">
3838                  <ul class="qk-display--flex qk-flex--wrap">
3839                    
3840                      
3841                        <li class="qk-display--il_bk">
3842                          
3843                            <a
3844                              class="qk-text--footer_text"
3845                              href="/pages/about-us"
3846                              rel="noopener noreferrer"
3847                              target="_blank">About Us</a>
3848                          
3849                        </li>
3850                      
3851                        <li class="qk-display--il_bk">
3852                          
3853                            <a
3854                              class="qk-text--footer_text"
3855                              href="/account/index"
3856                              rel="noopener noreferrer"
3857                              target="_blank">My Account</a>
3858                          
3859                        </li>
3860                      
3861                        <li class="qk-display--il_bk">
3862                          
3863                            <a
3864                              class="qk-text--footer_text"
3865                              href="/pages/退款政策"
3866                              rel="noopener noreferrer"
3867                              target="_blank">退款政策</a>
3868                          
3869                        </li>
3870                      
3871                        <li class="qk-display--il_bk">
3872                          
3873                            <a
3874                              class="qk-text--footer_text"
3875                              href="/pages/privacy"
3876                              rel="noopener noreferrer"
3877                              target="_blank">Privacy</a>
3878                          
3879                        </li>
3880                      
3881                        <li class="qk-display--il_bk">
3882                          
3883                            <a
3884                              class="qk-text--footer_text"
3885                              href="/pages/terms"
3886                              rel="noopener noreferrer"
3887                              target="_blank">Terms of Service</a>
3888                          
3889                        </li>
3890                      
3891                        <li class="qk-display--il_bk">
3892                          
3893                            <a
3894                              class="qk-text--footer_text"
3895                              href="/pages/紅利與優惠券"
3896                              rel="noopener noreferrer"
3897                              target="_blank">會員紅利與優惠</a>
3898                          
3899                        </li>
3900                      
3901                        <li class="qk-display--il_bk">
3902                          
3903                            <a
3904                              class="qk-text--footer_text"
3905                              href="https://www.tangshop.com.tw/pages/%E9%98%B2%E8%A9%90%E9%A8%99%E5%AE%A3%E5%B0%8E%E8%B3%87%E8%A8%8A"
3906                              rel="noopener noreferrer"
3907                              target="_blank">Scam Prevention Information</a>
3908                          
3909                        </li>
3910                      
3911                    
3912                  </ul>
3913                </div>
3914              </div>
3915              
3916          
3917            
3918              <div class="link-list-container">
3919                
3920                  <p class="footer_title qk-fs--title qk-text--footer_text">Help</p>
3921                
3922                <div class="item horizontal qk-text--left">
3923                  <ul class="qk-display--flex qk-flex--wrap">
3924                    
3925                      
3926                        <li class="qk-display--il_bk">
3927                          
3928                            <a
3929                              class="qk-text--footer_text"
3930                              href="/"
3931                              rel="noopener noreferrer"
3932                              target="_blank">Home</a>
3933                          
3934                        </li>
3935                      
3936                        <li class="qk-display--il_bk">
3937                          
3938                            <a
3939                              class="qk-text--footer_text"
3940                              href="/collections/all"
3941                              rel="noopener noreferrer"
3942                              target="_blank">Product List</a>
3943                          
3944                        </li>
3945                      
3946                        <li class="qk-display--il_bk">
3947                          
3948                            <a
3949                              class="qk-text--footer_text"
3950                              href="/pages/about-us"
3951                              rel="noopener noreferrer"
3952                              target="_blank">About Us</a>
3953                          
3954                        </li>
3955                      
3956                        <li class="qk-display--il_bk">
3957                          
3958                            <a
3959                              class="qk-text--footer_text"
3960                              href="/contact"
3961                              rel="noopener noreferrer"
3962                              target="_blank">Customer Service Center</a>
3963                          
3964                        </li>
3965                      
3966                        <li class="qk-display--il_bk">
3967                          
3968                            <a
3969                              class="qk-text--footer_text"
3970                              href="/blogs/唐舖子愛分享"
3971                              rel="noopener noreferrer"
3972                              target="_blank">唐唐๑秘密基地🍭</a>
3973                          
3974                        </li>
3975                      
3976                        <li class="qk-display--il_bk">
3977                          
3978                            <a
3979                              class="qk-text--footer_text"
3980                              href="https://www.facebook.com/%E5%94%90%E8%88%96%E5%AD%90-Tangshop-100291115638938"
3981                              rel="noopener noreferrer"
3982                              target="_blank">Fan Page</a>
3983                          
3984                        </li>
3985                      
3986                    
3987                  </ul>
3988                </div>
3989              </div>
3990              
3991          
3992        </div>
3993        <div class="right-content qk-display--flex qk-flex--column">
3994          
3995            <div class="fb_fanpage qk-hidden--mobile">
3996              <div class="fb_fans_page_area">
3997                <div
3998                  class="fb-page"
3999                  data-href="https://www.facebook.com/100291115638938"
4000                  data-width="500"
4001                  data-adapt-container-width="true"
4002                  data-hide-cover="false"
4003                  data-show-facepile="true">
4004                  <blockquote cite="https://www.facebook.com/100291115638938" class="fb-xfbml-parse-ignore">
4005                    <a target="_blank" rel="noopener noreferrer" href="https://www.facebook.com/100291115638938"></a>
4006                  </blockquote>
4007                </div>
4008              </div>
4009            </div>
4010          
4011          <div class="media qk-display--il">
4012            <div class="item social_media qk-h--auto qk-float--l">
4013              <ul>
4014                
4015                  <li class="qk-display--il_bk">
4016                    <a target="_blank" rel="noopener noreferrer" href="https://www.facebook.com/">
4017                      <svg
4018                        class="facebook-svg"
4019                        xmlns="http://www.w3.org/2000/svg"
4020                        width="40"
4021                        height="40"
4022                        viewBox="0 0 40 40">
4023                        <path class="qk-svg--footer_text" d="M40 20.1208C40 30.1027 32.6767 38.3778 23.1167 39.8795V25.9409H27.765L28.65 20.1742H23.1167V16.4324C23.1167 14.8541 23.89 13.3174 26.3667 13.3174H28.8817V8.4073C28.8817 8.4073 26.5983 8.01729 24.4167 8.01729C19.86 8.01729 16.8833 10.779 16.8833 15.7774V20.1725H11.8183V25.9393H16.8833V39.8779C7.325 38.3745 0 30.101 0 20.1208C0 9.07564 8.955 0.120483 20 0.120483C31.045 0.120483 40 9.07398 40 20.1208Z" />
4024                      </svg>
4025                    </a>
4026                  </li>
4027                
4028                
4029                  <li class="qk-display--il_bk">
4030                    <a target="_blank" rel="noopener noreferrer" href="https://www.instagram.com/?hl=zh-tw">
4031                      <svg
4032                        class="instagram-svg"
4033                        xmlns="http://www.w3.org/2000/svg"
4034                        width="40"
4035                        height="40"
4036                        viewBox="0 0 40 40">
4037                        <rect class="qk-svg--footer_text" width="40" height="40" rx="20" />
4038                        <path class="qk-svg--footer_bg" d="M15.0302 8.08393C13.7534 8.14417 12.8814 8.34793 12.1192 8.64745C11.3303 8.95489 10.6616 9.36745 9.99636 10.0351C9.33107 10.7028 8.92139 11.3719 8.61611 12.162C8.32066 12.9259 8.1205 13.7986 8.0641 15.0761C8.0077 16.3536 7.99522 16.7643 8.00146 20.023C8.0077 23.2817 8.0221 23.6902 8.08402 24.9704C8.14498 26.2469 8.34802 27.1186 8.64755 27.8811C8.95547 28.67 9.36755 29.3384 10.0355 30.0039C10.7034 30.6694 
403811.3721 31.0782 12.1641 31.3839C12.9273 31.6789 13.8002 31.88 15.0775 31.9359C16.3547 31.9918 16.7659 32.0048 20.0237 31.9986C23.2815 31.9923 23.6916 31.9779 24.9716 31.9172C26.2515 31.8565 27.1186 31.652 27.8813 31.3539C28.6702 31.0453 29.3391 30.6339 30.0042 29.9658C30.6692 29.2976 31.0787 28.628 31.3837 27.8374C31.6794 27.0742 31.8803 26.2013 31.9357 24.925C31.9916 23.6441 32.0048 23.2352 31.9986 19.9769C31.9923 16.7187 31.9777 16.3102 31.917 15.0305C31.8563 13.7508 31.653 12.8818 31.3537 12.1188C31.0453 11.3299 30.6337 10.662 29.966 9.99601C29.2983 9.33001 28.6282 8.92081 27.8379 8.61649C27.0742 8.32105 26.2018 8.11969 24.9245 8.06449C23.6472 8.00929 23.2361 7.99513 19.9771 8.00137C16.7181 8.00761 16.3101 8.02153 15.0302 8.08393ZM15.1703 29.7771C14.0003 29.7262 13.365 29.5318 12.9417 29.3691C12.381 29.1531 11.9817 28.892 11.5597 28.4742C11.1378 28.0563 10.8786 27.6555 10.6597 27.0961C10.4953 26.6727 10.2973 26.0381 10.2426 24.8681C10.1831 23.6036 10.1706 23.2239 10.1636 20.0201C10.1567 16.8164 10.1689 16.4372 10.2244 15.1721C10.2743 14.0031 10.4699 13.3671 10.6324 12.9439C10.8484 12.3826 11.1085 11.9839 11.5273 11.5623C11.9461 11.1406 12.3457 10.8809 12.9057 10.662C13.3286 10.4969 13.9631 10.3006 15.1327 10.2449C16.3982 10.1849 16.7774 10.1729 19.9807 10.1659C23.184 10.159 23.5642 10.171 24.8302 10.2267C25.9992 10.2775 26.6355 10.4712 27.0581 10.6347C27.619 10.8507 28.0181 11.1101 28.4398 11.5296C28.8615 11.9491 29.1214 12.3473 29.3403 12.9084C29.5057 13.3301 29.702 13.9644 29.7572 15.1347C29.8174 16.4002 29.8311 16.7796 29.8369 19.9827C29.8426 23.1857 29.8314 23.5661 29.7759 24.8307C29.7248 26.0007 29.5309 26.6362 29.3679 27.0601C29.1519 27.6205 28.8915 28.0201 28.4725 28.4415C28.0534 28.863 27.6543 29.1226 27.0941 29.3415C26.6717 29.5064 26.0364 29.7032 24.8679 29.7589C23.6023 29.8184 23.2231 29.8309 20.0186 29.8378C16.8141 29.8448 16.4361 29.8318 15.1706 29.7771M24.9531 13.5864C24.9535 13.8713 25.0385 14.1495 25.1971 14.3861C25.3558 14.6226 25.581 14.8068 25.8443 14.9154C26.1077 15.0239 26.3973 15.0519 26.6765 14.9959C26.9558 14.9398 27.2122 14.8022 27.4132 14.6004C27.6142 14.3986 27.7509 14.1418 27.806 13.8623C27.861 13.5828 27.8319 13.2933 27.7224 13.0304C27.6129 12.7675 27.4279 12.5429 27.1908 12.3851C26.9536 12.2274 26.675 12.1435 26.3902 12.144C26.0084 12.1448 25.6425 12.2972 25.373 12.5677C25.1035 12.8381 24.9524 13.2046 24.9531 13.5864ZM13.8386 20.012C13.8453 23.4152 16.6091 26.1677 20.0117 26.1613C23.4142 26.1548 26.1687 23.3912 26.1622 19.988C26.1557 16.5848 23.3911 13.8315 19.9881 13.8382C16.5851 13.8449 13.8321 16.6092 13.8386 20.012ZM16 20.0076C15.9985 19.2165 16.2315 18.4427 16.6698 17.784C17.108 17.1253 17.7317 16.6114 18.462 16.3072C19.1924 16.003 19.9965 15.9222 20.7727 16.075C21.549 16.2278 22.2625 16.6073 22.823 17.1656C23.3836 17.724 23.766 18.436 23.9218 19.2116C24.0777 19.9872 24.0001 20.7917 23.6988 21.5232C23.3975 22.2547 22.886 22.8804 22.2291 23.3213C21.5721 23.7621 20.7992 23.9983 20.0081 23.9998C19.4827 24.0009 18.9623 23.8985 18.4766 23.6985C17.9909 23.4985 17.5493 23.2047 17.1771 22.834C16.8049 22.4632 16.5094 22.0228 16.3074 21.5379C16.1054 21.0529 16.001 20.533 16 20.0076Z" />
4039                      </svg>
4040                    </a>
4041                  </li>
4042                
4043                
4044                  <li class="qk-display--il_bk">
4045                    <a target="_blank" rel="noopener noreferrer" href="https://line.me/zh-hant/">
4046                      <svg
4047                        class="line-svg"
4048                        xmlns="http://www.w3.org/2000/svg"
4049                        width="40"
4050                        height="40"
4051                        viewBox="0 0 40 40">
4052                        <rect class="qk-svg--footer_text" width="40" height="40" rx="20" />
4053                        <path class="qk-svg--footer_bg" d="M32.5946 18.2214C32.5946 12.5857 26.9449 8 20.0002 8C13.0555 8 7.40576 12.5857 7.40576 18.2214C7.40576 23.2743 11.8873 27.5053 17.9396 28.3048C18.3506 28.392 18.908 28.575 19.0487 28.9269C19.1754 29.245 19.1303 29.7433 19.0881 30.0642C19.0881 30.0642 18.9417 30.9537 18.908 31.1423C18.8517 31.4604 18.6546 32.3866 20.0002 31.8207C21.343 31.2549 27.2545 27.5503 29.895 24.5101C31.7191 22.5058 32.5946 20.4762 32.5946 18.2214Z" />
4054                        <path class="qk-svg--footer_text" d="M17.4413 15.4965H16.5574C16.4223 15.4965 16.3125 15.6062 16.3125 15.7414V21.2279C16.3125 21.363 16.4223 21.4728 16.5574 21.4728H17.4413C17.5764 21.4728 17.6862 21.363 17.6862 21.2279V15.7414C17.6862 15.6062 17.5764 15.4965 17.4413 15.4965Z" />
4055                        <path class="qk-svg--footer_text" d="M23.5219 15.4965H22.638C22.5028 15.4965 22.3931 15.6063 22.3931 15.7414V19.0012L19.8792 15.6063C19.8736 15.5978 19.868 15.5894 19.8595 15.5809C19.8595 15.5809 19.8595 15.5809 19.8595 15.5781C19.8539 15.5725 19.8483 15.5668 19.8455 15.564C19.8426 15.564 19.8426 15.5612 19.8398 15.5584C19.8342 15.5556 19.8314 15.55 19.8258 15.5471C19.8229 15.5443 19.8229 15.5443 19.8201 15.5415C19.8173 15.5387 19.8117 15.5359 19.8089 15.5331C19.8061 15.5303 19.8032 15.5303 19.8004 15.5274C19.7948 15.5246 19.792 15.5218 19.7863 15.519C19.7835 15.519 19.7807 15.5162 19.7779 15.5162C19.7723 15.5134 19.7695 15.5105 19.7638 15.5105C19.761 15.5105 19.7582 15.5077 19.7554 15.5077C19.7498 15.5049 19.7469 15.5049 19.7413 15.5021C19.7385 15.5021 19.7357 15.5021 19.7329 15.4993C19.7272 15.4993 19.7244 15.4965 19.7188 15.4965C19.716 15.4965 19.7132 15.4965 19.7075 15.4937C19.7019 15.4937 19.6991 15.4937 19.6935 15.4908C19.6878 15.4908 19.685 15.4908 19.6822 15.4908C19.6794 15.4908 19.6766 15.4908 19.6737 15.4908H18.7898C18.6547 15.4908 18.5449 15.6006 18.5449 15.7358V21.2222C18.5449 21.3574 18.6547 21.4671 18.7898 21.4671H19.6737C19.8089 21.4671 19.9187 21.3574 19.9187 21.2222V17.9709L22.4353 21.3714C22.4522 21.3968 22.4747 21.4165 22.4972 21.4305C22.4972 21.4305 22.5 21.4305 22.5 21.4334C22.5057 21.4362 22.5113 21.439 22.5141 21.4418C22.5169 21.4418 22.5197 21.4446 22.5226 21.4446C22.5254 21.4474 22.531 21.4474 22.5338 21.4503C22.5366 21.4531 22.5423 21.4531 22.5451 21.4559C22.5479 21.4559 22.5507 21.4587 22.5535 21.4587C22.5591 21.4615 22.5648 21.4615 22.5704 21.4643H22.5732C22.5929 21.47 22.6154 21.4728 22.6352 21.4728H23.5191C23.6542 21.4728 23.764 21.363 23.764 21.2279V15.7414C23.7668 15.6063 23.657 15.4965 23.5219 15.4965Z" />
4056                        <path class="qk-svg--footer_text" d="M15.313 20.099H12.9118V15.7414C12.9118 15.6062 12.802 15.4965 12.6669 15.4965H11.783C11.6479 15.4965 11.5381 15.6062 11.5381 15.7414V21.2279C11.5381 21.2926 11.5634 21.3545 11.6056 21.3968L11.6085 21.3996L11.6113 21.4024C11.6563 21.4446 11.7154 21.4699 11.7802 21.4699H15.3102C15.4453 21.4699 15.5551 21.3602 15.5551 21.225V20.3411C15.5579 20.2116 15.4482 20.099 15.313 20.099Z" />
4057                        <path class="qk-svg--footer_text" d="M28.4001 16.8702C28.5352 16.8702 28.645 16.7604 28.645 16.6253V15.7414C28.645 15.6062 28.5352 15.4965 28.4001 15.4965H24.87C24.8053 15.4965 24.7433 15.5218 24.7011 15.5668L24.6983 15.5697C24.6983 15.5725 24.6955 15.5725 24.6955 15.5753C24.6533 15.6203 24.6279 15.6794 24.6279 15.7442V21.2307C24.6279 21.2954 24.6533 21.3573 24.6955 21.3996L24.6983 21.4024L24.7011 21.4052C24.7462 21.4474 24.8053 21.4756 24.87 21.4756H28.4001C28.5352 21.4756 28.645 21.3658 28.645 21.2307V20.3467C28.645 20.2116 28.5352 20.1018 28.4001 20.1018H25.9988V19.1757H28.4001C28.5352 19.1757 28.645 19.0659 28.645 18.9308V18.0469C28.645 17.9118 28.5352 17.802 28.4001 17.802H25.9988V16.8758H28.4001V16.8702Z" />
4058                      </svg>
4059                    </a>
4060                  </li>
4061                
4062                
4063                  <li class="qk-display--il_bk">
4064                    <a target="_blank" rel="noopener noreferrer" href="https://www.youtube.com/">
4065                      <svg
4066                        class="youtube-svg"
4067                        xmlns="http://www.w3.org/2000/svg"
4068                        width="40"
4069                        height="40"
4070                        viewBox="0 0 40 40">
4071                        <rect class="qk-svg--footer_text" width="40" height="40" rx="20" />
4072                        <path class="qk-svg--footer_bg" d="M27.3078 11H12.6922C9.82462 11 7.5 13.3653 7.5 16.283V23.717C7.5 26.6347 9.82462 29 12.6922 29H27.3078C30.1754 29 32.5 26.6347 32.5 23.717V16.283C32.5 13.3653 30.1754 11 27.3078 11ZM23.7964 20.3617L16.9602 23.6792C16.778 23.7676 16.5676 23.6324 16.5676 23.4271V16.5848C16.5676 16.3766 16.7835 16.2416 16.9661 16.3357L23.8023 19.8606C24.0055 19.9653 24.002 20.2619 23.7964 20.3617Z" />
4073                      </svg>
4074                    </a>
4075                  </li>
4076                
4077              </ul>
4078            </div>
4079          </div>
4080        </div>
4081      </div>
4082    </div>
4083    
4084  <div class="copyright qk-text--footer_text qk-bd--footer_text qk-text--left qk-bd_t--default">
4085    <div class="qk-container container qk-fw--500">
4086      <span>Copyright ©</span>
4087      <a class="qk-text--link" href="/">
4088        <span>唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮</span>
4089      </a>
4090      <span>All Rights Reserved.</span>
4091      <span>Designed by
4092      </span>
4093      <a
4094        class="qk-text--link"
4095        href="https://www.cyberbiz.io?utm_source=poweredbycyberbiz"
4096        target="_blank"
4097        rel="noopener noreferrer"
4098        title="Designed by CYBERBIZ">CYBERBIZ</a>.
4099    </div>
4100  </div>
4101  
4102</footer>
4103<script>
4104  $(document).ready(function() {
4105    let isDynamicLoading = false;
4106
4107    let menusData = {
4108      
4109        
4110      
4111        
4112          "footer": {
4113            
4114              "type": "items",
4115              "data": [
4116                
4117                
4118                  
4119                    {
4120                      "title": "About Us",
4121                      "url": "/pages/about-us",
4122                      "item_type": "page"
4123                    },
4124                  
4125                    {
4126                      "title": "My Account",
4127                      "url": "/account/index",
4128                      "item_type": "http"
4129                    },
4130                  
4131                    {
4132                      "title": "退款政策",
4133                      "url": "/pages/退款政策",
4134                      "item_type": "page"
4135                    },
4136                  
4137                    {
4138                      "title": "Privacy",
4139                      "url": "/pages/privacy",
4140                      "item_type": "privacy"
4141                    },
4142                  
4143                    {
4144                      "title": "Terms of Service",
4145                      "url": "/pages/terms",
4146                      "item_type": "terms"
4147                    },
4148                  
4149                    {
4150                      "title": "會員紅利與優惠",
4151                      "url": "/pages/紅利與優惠券",
4152                      "item_type": "page"
4153                    },
4154                  
4155                    {
4156                      "title": "Scam Prevention Information",
4157                      "url": "https://www.tangshop.com.tw/pages/%E9%98%B2%E8%A9%90%E9%A8%99%E5%AE%A3%E5%B0%8E%E8%B3%87%E8%A8%8A",
4158                      "item_type": "http"
4159                    }
4160                  
4161                
4162              ]
4163            
4164          },
4165        
4166      
4167        
4168          "main-menu": {
4169            
4170              "type": "items",
4171              "data": [
4172                
4173                
4174                  
4175                    {
4176                      "title": "Home",
4177                      "url": "/",
4178                      "item_type": "frontpage"
4179                    },
4180                  
4181                    {
4182                      "title": "Product List",
4183                      "url": "/collections/all",
4184                      "item_type": "collections_all"
4185                    },
4186                  
4187                    {
4188                      "title": "About Us",
4189                      "url": "/pages/about-us",
4190                      "item_type": "page"
4191                    },
4192                  
4193                    {
4194                      "title": "Customer Service Center",
4195                      "url": "/contact",
4196                      "item_type": "contact"
4197                    },
4198                  
4199                    {
4200                      "title": "唐唐๑秘密基地🍭",
4201                      "url": "/blogs/唐舖子愛分享",
4202                      "item_type": "blog"
4203                    },
4204                  
4205                    {
4206                      "title": "Fan Page",
4207                      "url": "https://www.facebook.com/%E5%94%90%E8%88%96%E5%AD%90-Tangshop-100291115638938",
4208                      "item_type": "http"
4209                    }
4210                  
4211                
4212              ]
4213            
4214          }
4215        
4216      
4217    };
4218
4219    if (isDynamicLoading) {
4220      window.DynamicLoading.setupComponent({
4221          sectionId: '#footer',
4222          callbackData:{
4223            section: {"type":"footer","visible":true,"settings":{"footer_link":"footer","display_facebook":true,"shop_facebook":"https://www.facebook.com/","display_instagram":true,"shop_instagram":"https://www.instagram.com/?hl=zh-tw","display_line":true,"shop_line":"https://line.me/zh-hant/","display_youtube":true,"shop_youtube":"https://www.youtube.com/","footer_link_arrangement":"display_x","display_facebook_fan_block":true},"block_order":["default_contact_info","default_link_list","default_link_list_2"],"blocks":{"default_link_list":{"type":"link_list_setting","thumbnail":"list","draggable":true,"visible":true,"settings":{"dict_link_list_block_title":"About Us","footer_link":"footer"},"custom_name":"選單"},"default_contact_info":{"type":"contact_info_setting","thumbnail":"contactInfo","draggable":true,"visible":true,"settings":{"dict_contact_info_block_t
4223itle":"Contact Info","display_phone":"true","dict_phone_number":"0912345678","display_fax_number":false,"dict_shop_fax_number":"0222345678","display_shop_email":"true","dict_shop_email":"[email protected]","display_shop_address":false,"dict_shop_address":"Shop Address","display_office_time":"true","dict_shop_office_time":"10:00-17:00"},"custom_name":"聯絡資訊"},"default_link_list_2":{"type":"link_list_setting","visible":true,"settings":{"dict_link_list_block_title":"Help","footer_link":"main-menu"},"custom_name":"選單"}},"custom_name":"頁腳"},
4224            shop: {
4225              name: '唐舖子 | 米其林2星牛軋糖 | 人氣伴手禮',
4226              cyberbiz_link: 'https://www.cyberbiz.io?utm_source=poweredbycyberbiz',
4227              facebook_fan_page: 'https://www.facebook.com/100291115638938',
4228            },
4229            menus: menusData,
4230            is_display_facebook_fan_block: true
4231            },
4232          entryName:'renderFooterSection',
4233          source:'//cdn-general.cybassets.com/frontend/shop/footerSection-4a1e7dfec7e41476.js',
4234        });
4235    }
4236  });
4237</script>
4237
4238
4239<!-- cyb_snippet _tracking_code start -->
4240      
4240<script>
4241        window.fbAsyncInit = function() {
4242          FB.init({
4243          appId : '',
4244          xfbml : true,
4245          version : 'v24.0',
4246          });
4247        };
4248        (function(d, s, id){
4249          var js, fjs = d.getElementsByTagName(s)[0];
4250          if (d.getElementById(id)) {return;}
4251          js = d.createElement(s);
4252          js.id = id;
4253          js.src = 'https://connect.facebook.net/zh_TW/sdk.js';
4254          fjs.parentNode.insertBefore(js, fjs);
4255        }(document, 'script', 'facebook-jssdk'));
4256      </script>
4256
4257
4258
4259<script>
4260  // for scupio
4261  if (document.querySelector("meta[name=\"scupio_mid\"]")) {
4262    mid = document.querySelector("meta[name=\"scupio_mid\"]").content;
4263  } else {
4264    mid = "";
4265  }
4266  if (!window.is_scupio_sent && mid) {
4267    window._bwtm = window._bwtm || []
4268    window._bwtm.push({
4269      "mid": mid,
4270      "uid": ""
4271    });
4272  }
4273</script>
4273
4274
4275<!-- cyb_snippet _tracking_code end -->
4276
4277<script>
4278  $(document).ready(function(){
4279    if(window.location.pathname != '' && window.location.pathname != '/' ){
4280      document.getElementById('index-recommendation').style.display = 'none'
4281    }
4282  });
4283</script>
4283
4284
4285
4286
4287    <!-- Fast-Events -->
4288    <!-- cyb_snippet fast_events start -->
4289
4290
4291<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/fast_events-4a1e7dfec7e41476.js' type='text/javascript'></script>
4291
4292<link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/fast_events-4a1e7dfec7e41476.css' rel='stylesheet' type='text/css' media='all' />
4293
4294<!-- cyb_snippet fast_events end -->
4295
4296    <div class="bottom-right qk-pos--fixed">
4297      <!-- gototop -->
4298      <div id="gototop" class="qk-display--none qk-text--center">
4299        <a href="javascript:void(0)" class="qk-circle qk-circle--lg qk-pos--relative qk-text--center">
4300          <i class="fas fa-chevron-up"></i>
4301        </a>
4302      </div>
4303
4304      <!-- popup -->
4305      
4306
4307
4308
4309<div id="popup-wrapper" class="qk-display--none"></div>
4310
4311<template id="popup-template">
4312  <div
4313    :class="status"
4314    v-if="hasContent"
4315    id="popup-section"
4316  >
4317    <transition name="backdrop">
4318      <div
4319        v-if="shouldShowPopup"
4320        @click.capture="minifyPopup"
4321        id="popup-backdrop"
4322        class="qk-w--100vw qk-h--100vh qk-pos--fixed qk-t--0 qk-l--0 qk-tst"
4323      >
4324      </div>
4325    </transition>
4326    <transition name="onShow">
4327      <div
4328        @click.self="showPopup"
4329        @transitionstart="updateGameStatus('start', this)"
4330        @transitionend="updateGameStatus('end', this)"
4331        class="popup-content qk-display--flex qk-align--center qk-tst qk-tst_dur--30 qk-tst_timing--ease_o"
4332      >
4333        <div
4334          v-for="block in blocks"
4335          :key="block.id"
4336          :class="[block.type, minifiedBlockClasses, block.settings.icon_size]"
4337          class="block qk-tst qk-tst_dur--30 qk-tst_timing--ease_o qk-of--auto"
4338        >
4339          <div v-if="block.type === 'image'" class="qk-pos--rel">
4340            <img
4341              v-show="!shouldShowPopup"
4342              :src="block.settings.dict_icon_image_url"
4343              class="qk-tst qk-tst_dur--30 qk-tst_timing--ease_o"
4344              alt="popup button"
4345            >
4346            <a
4347              v-show="shouldShowPopup"
4348              :href="block.settings.dict_link"
4349              :target="block.settings.target"
4350              :rel="block.settings.rel"
4351              class="qk-display--flex qk-align--center"
4352              @click="linkClicked"
4353            >
4354              <picture>
4355                <source :srcset="block.settings.dict_mobile_image_url" media="(max-width: 576px)">
4356                <source :srcset="block.settings.dict_tablet_image_url" media="(max-width: 992px)">
4357                <img
4358                  :src="block.settings.dict_image_url"
4359                  class="qk-tst qk-tst_dur--30 qk-tst_timing--ease_o"
4360                  alt="popup picture"
4361                />
4362              </picture>
4363            </a>
4364          </div>
4365          <div v-if="block.type === 'video'">
4366            <iframe
4367              :src="block.settings.dict_video_link"
4368              frameborder="0"
4369              class="qk-center--y qk-w--100 qk-h--100"
4370            ></iframe>
4371          </div>
4372          <div v-if="block.type === 'game'">
4373            <div v-show="gameStatus === 'show'" :class="{ 'show-game': gameStatus === 'show' }">
4374              <iframe
4375                class="cb-game-iframe iframe-loading"
4376                :src="getGameIframeSrc(block)"
4377                style="border: none;"
4378              >
4379                Loading
4380              </iframe>
4381            </div>
4382            <div v-show="gameStatus === 'minified'">
4383              <img
4384                src="//cdn-general.cybassets.com/game_assets/game_minified_new.png"
4385                class="qk-h--100 qk-w--100"
4386                alt="game minified icon"
4387              />
4388            </div>
4389          </div>
4390          <div
4391            v-if="block.type === 'carousel'"
4392            :id="`popup-carousel-${block.id}`"
4393          >
4394          </div>
4395        </div>
4396      </div>
4397    </transition>
4398    <transition name="backdrop">
4399      <div
4400        v-if="shouldShowPopup"
4401        @click.capture="minifyPopup"
4402        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"
4403      >
4404      </div>
4405    </transition>
4406  </div>
4407</template>
4408
4409<script>
4410  $(document).ready(function() {
4411    const CDN_HOST = '//cdn-general.cybassets.com';
4412    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":"彈窗廣告"};
4413    var popupSection = Vue.createApp({
4414      template: '#popup-template',
4415      delimiters: ['${', '}'],
4416      data() {
4417        const isOmniauthPage = ['omniauth_terms_agreement', 'omniauth_mobile/']
4418          .some(path => location.pathname.includes(path));
4419        return {
4420          status: 'minified',
4421          gameStatus: 'show',
4422          blocks: isOmniauthPage
4423            ? []
4424            : section.block_order && section.block_order.reduce(
4425                function(acc, blockId) {
4426                  const block = section.blocks[blockId];
4427                  if (block && block.visible) {
4428                    acc.push({
4429                      ...block,
4430                      id: blockId,
4431                    });
4432                  }
4433                  return acc;
4434                },
4435                [],
4436              ),
4437          hasAddedGameScript: false,
4438        };
4439      },
4440      computed: {
4441        hasContent: function() {
4442          return !!(this.blocks && this.blocks.length > 0);
4443        },
4444        minifiedBlockClasses: function() {
4445          return this.status === 'minified' ? 'qk-pointer--none qk-unselectable' : '';
4446        },
4447        shouldShowPopup: function() {
4448          return this.status === 'show';
4449        }
4450      },
4451      methods: {
4452        unhidePopup: function(storedStatus) {
4453          this.status = storedStatus;
4454          $('#popup-wrapper').removeClass('qk-display--none');
4455        },
4456        showPopup: function() {
4457          if (this.status !== 'show') {
4458            this.status = 'show';
4459            this.saveStatus(this.status);
4460          }
4461        },
4462        minifyPopup: function() {
4463          this.status = 'minified';
4464          this.saveStatus('minified');
4465        },
4466        loadStatus: function() {
4467          return JSON.parse(localStorage.getItem('popupStatus'));
4468        },
4469        saveStatus: function(status) {
4470          if (status) {
4471            localStorage.setItem('popupStatus', JSON.stringify({
4472              status: status,
4473              setTime: new Date().getTime(),
4474            }));
4475          }
4476        },
4477        linkClicked: function() {
4478          this.saveStatus('minified');
4479        },
4480        parseVideoLink: function(settings) {
4481          settings.dict_video_link = themeHelper.parseYtUrl(settings.dict_video_link);
4482        },
4483        setupImageSrc: function (settings) {
4484          settings.dict_image_url = this.addCdnHost(settings.dict_image_url);
4485          if (settings.dict_tablet_image_url) {
4486            settings.dict_tablet_image_url = this.addCdnHost(settings.dict_tablet_image_url);
4487          }
4488          if (settings.dict_mobile_image_url) {
4489            settings.dict_mobile_image_url = this.addCdnHost(settings.dict_mobile_image_url);
4490          }
4491          settings.dict_icon_image_url = this.addCdnHost(settings.dict_icon_image_url) || settings.dict_image_url;
4492        },
4493        addCdnHost: function(url) {
4494          if (!url) {
4495            return url; // only add cdn host if url is not empty
4496          }
4497
4498          try {
4499            new URL(url);
4500            return url; // already a valid url, cdn host not needed
4501          } catch {
4502            return `${CDN_HOST}${url}`;
4503          }
4504        },
4505        initStatus: function() {
4506          let newStatus = 'show';
4507          const popupStatus = this.loadStatus();
4508          const currentTime = new Date().getTime();
4509          const oneDay = 1000 * 60 * 60 * 24;
4510          const hasStoredStatus = popupStatus && currentTime - popupStatus.setTime < oneDay;
4511          const redirectedByGameLogin = !this.hasRedirectUrl() && this.redirectedByGameLogin();
4512          const isLoggingIn = this.isLoggingIn();
4513          const isCartPage = window.location.pathname.split('/').includes('carts');
4514
4515          if (hasStoredStatus && !redirectedByGameLogin) {
4516            newStatus = popupStatus.status;
4517          }
4518
4519          if (isLoggingIn) {
4520            newStatus = 'minified';
4521          } else {
4522            localStorage.removeItem('redirectedByPopup');
4523          }
4524
4525          setTimeout(() => {
4526            this.status = newStatus;
4527            this.gameStatus = newStatus;
4528            this.saveStatus(newStatus);
4529            if(!isCartPage){
4530              this.unhidePopup(newStatus);
4531            }
4532          }, 1000);
4533        },
4534        initBlocks: function() {
4535          if (this.hasContent) {
4536            this.blocks.forEach(block => {
4537              switch(block.type) {
4538                case 'image':
4539                  this.setupImageSrc(block.settings);
4540
4541                  const isOpenInNewTab = block.settings.link_open_in_new_tab;
4542                  if (isOpenInNewTab) {
4543                    block.settings.target = '_blank';
4544                    block.settings.rel = 'noopener noreferrer';
4545                  }
4546
4547                  break;
4548                case 'video':
4549                  this.parseVideoLink(block.settings);
4550                  break;
4551              }
4552            })
4553          }
4554        },
4555        getGameIframeSrc: function (block) {
4556          return `/games/${block.settings.dict_game_handle}`
4557        },
4558        updateGameStatus: function(type, element) {
4559          if (
4560            (type === 'start' && this.status === 'minified')
4561            || (type === 'end' && this.status === 'show')
4562          ) {
4563            this.gameStatus = this.status;
4564          }
4565        },
4566        setupGameRedirects: function() {
4567          window.addEventListener('pagehide', () => {
4568            const isGameActive = document.body.getElementsByClassName('show-game').length;
4569            if (isGameActive) {
4570              localStorage.setItem('redirectedByPopup', 'true');
4571              this.saveStatus('minified');
4572            }
4573          });
4574        },
4575        hasRedirectUrl: function() {
4576          return (new URLSearchParams(location.search)).has('redirect_url');
4577        },
4578        redirectedByGameLogin: function() {
4579          return localStorage.getItem('redirectedByPopup');
4580        },
4581        isLoggingIn: function() {
4582          const loginRelatedPathnames = [
4583            'account/signup',
4584            'account/login',
4585            'account/customer/password/new',
4586            'pages/terms'
4587          ];
4588          return loginRelatedPathnames.some(path => location.pathname.includes(path));
4589        }
4590      },
4591      created: function() {
4592        this.initStatus();
4593        this.initBlocks();
4594        this.setupGameRedirects();
4595      },
4596      mounted: function() {
4597        this.blocks.forEach((block) => {
4598          if (block.type === 'carousel' && block.settings.dict_c
4598arousel) {
4599            renderCarousel(`#popup-carousel-${block.id}`, {
4600              title: block.settings.dict_carousel,
4601              CDN_HOST,
4602              onLinkClick: () => this.linkClicked(),
4603            });
4604          }
4605        });
4606      },
4607    });
4608    popupSection.mount('#popup-wrapper');
4609  });
4610</script>
4610
4611
4612
4613
4614    </div>
4615
4616    <!-- ajaxloading -->
4617    <div id="ajaxloading" class="qk-display--none qk-h--100vh qk-w--100vw qk-l--0 qk-t--0 qk-pos--fixed">
4618      <div class="ajaxbody qk-pos--abs qk-l--50 qk-t--50 qk-text--center">
4619        <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">
4620          <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"/>
4621          <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 "/>
4622          <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"/>
4623          <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"/>
4624          <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"/>
4625          <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"/>
4626        </svg>
4627        <div class="success_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">Added to Cart</div>
4628        <div class="success_update_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">Shopping Cart Updated</div>
4629        <div class="fail_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">Network error, please try again!</div>
4630      </div>
4631    </div>
4632  
4632<script src="//cdn-general.cybassets.com/assets/referral-code-trace-5fcbbe026a61c36b5f09a1615a1c168688205205d9d3e7ee854181a66b64a6ed.js"></script>
4632
4633      
4633<script>
4634        cyb.push({
4635          'event': 'productImpressions',
4636          'ecommerce':{
4637            'currencyCode': 'TWD',
4638            'impressions':[{"id":69730530,"name":"原味巧酥-600g享福包","price":650.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":1},{"id":60642684,"name":"阿華田巧克力麥芽風味珍珠牛奶糖-50g","price":99.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":2},{"id":60642605,"name":"阿華田巧克力麥芽巧酥-50g","price":99.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":3},{"id":60641370,"name":"米其林草莓牛軋糖-50g","price":99.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":4},{"id":51110248,"name":"福源花生肉鬆雪Q餅-150g","price":160.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":5},{"id":72645839,"name":"福源花生雪Q餅-150g","price":99.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":6},{"id":34245313,"name":"法式牛軋酥-鳳梨口味120g  盒裝","price":150.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":7},{"id":61503856,"name":"甜不辣-椒鹽風味","price":150.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":8},{"id":46513311,"name":"杏仁牛奶糖(焦糖口味)100g","price":180.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":9},{"id":46513220,"name":"杏仁牛奶糖(原味)100g","price":180.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":10},{"id":40893118,"name":"南棗核桃糕100g","price":180.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":11},{"id":40892747,"name":"原味牛軋糖-100g","price":150.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":12},{"id":40878187,"name":"鹹蛋黃牛軋糖-100g","price":150.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":13},{"id":40087237,"name":"法式牛軋酥-芒果120g","price":150.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":14},{"id":38546480,"name":"發財黑糖-老薑母","price":175.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":15},{"id":38546312,"name":"發財黑糖-桂圓紅棗","price":175.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":16},{"id":38546124,"name":"發財黑糖-原味","price":175.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":17},{"id":36460098,"name":"福源好事花生雪花餅乾-150g","price":180.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":18},{"id":34335440,"name":"阿華田巧克力麥芽風味珍珠牛奶糖 80g","price":130.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":19},{"id":34302910,"name":"芒果牛軋糖-100g","price":150.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":20},{"id":34302909,"name":"鳳梨牛軋糖-100g","price":150.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":21},{"id":34245314,"name":"法式牛軋酥-鹹蛋黃120g","price":150.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":22},{"id":53590935,"name":"太妃腰果酥糖-原味100g","price":180.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":23},{"id":34245327,"name":"太妃腰果酥-黑胡椒100g","price":180.0,"brand":null,"category":null,"variant":"","list":"Collection: 所有商品","position":24}]
4639          }
4640        })
4641      </script>
4641
4642    </body>
4643
4644  
4644<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/sub_vendor-4a1e7dfec7e41476.js' type='text/javascript'></script>
4644
4645  
4645<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/theme_helper-4a1e7dfec7e41476.js' type='text/javascript'></script>
4645
4646
4647  <!-- theme assets -->
4648  
4648<script src='//cdn-general.cybassets.com/s/files/19123/theme/124804/assets/js/1761013117_fa65aa2e_main.js?1761013117' type='text/javascript'></script>
4648
4649  
4649<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/theme-4a1e7dfec7e41476.js' type='text/javascript'></script>
4649
4650
4651  <!-- for cache -->
4652  
4652<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/cacheable-4a1e7dfec7e41476.js' type='text/javascript'></script>
4652
4653</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.