PageSourceSearch

https://www.mooo.tw/products/%E5%8D%83%E5%B1%A4%E8%9D%B4%E8%9D%B6%…%93%81-%E8%9C%82%E8%9C%9C%E5%8F%A3%E5%91%B3

html mooo.tw collected 2026-09-30 23:43:42 UTC 302,509 bytes, 6,140 lines download raw bytes

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

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.