{"id":6139,"date":"2026-09-16T10:35:20","date_gmt":"2026-09-16T02:35:20","guid":{"rendered":"https:\/\/rubasseroasters.com\/?page_id=6139"},"modified":"2026-09-16T17:34:52","modified_gmt":"2026-09-16T09:34:52","slug":"barista-hustle-articles-zh","status":"publish","type":"page","link":"https:\/\/rubasseroasters.com\/zh\/barista-hustle-articles-zh\/","title":{"rendered":"Barista Hustle \u8ab2\u7a0b\u4ecb\u7d39"},"content":{"rendered":"\n\n<div class=\"wp-block-group alignfull rbs-ser-page is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group alignfull rbs-ser-setup is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading rbs-ser-cfg-heading\">\u2699\ufe0f \u8a2d\u5b9a\u5340\uff08\u53ea\u6709\u9019\u4e00\u5340\u8981\u6539\uff0c\u524d\u53f0\u4e0d\u6703\u986f\u793a\uff09<\/h2>\n\n\n\n<p class=\"rbs-ser-cfg-note wp-block-paragraph\">\u6bcf\u7d44\u8a2d\u5b9a\u6709\u5169\u884c\uff1a\u4e0a\u9762\u7070\u5b57\u662f\u8aaa\u660e\u3001\u4e0b\u9762\u662f\u300c\u503c\u300d\u3002\u8acb\u53ea\u4fee\u6539\u300c\u503c\u300d\u90a3\u4e00\u884c\uff0c\u8aaa\u660e\u90a3\u884c\u4e0d\u8981\u52d5\uff0c\u4e5f\u4e0d\u8981\u522a\u9664\u6216\u642c\u52d5\u4efb\u4f55\u4e00\u6bb5\u3002<\/p>\n\n\n\n<p class=\"rbs-ser-cfg-note wp-block-paragraph\">\u300c\u4ee3\u865f\u300d\uff1d\u7db2\u5740\u6700\u5f8c\u4e00\u6bb5\u82f1\u6587\u3002\u4f8b\u5982\u6587\u7ae0 https:\/\/rubasseroasters.com\/zh\/abc-zh\/ \u7684\u4ee3\u865f\u662f abc-zh\uff1b\u5206\u985e https:\/\/rubasseroasters.com\/zh\/category\/blog-zh-main\/xyz-zh\/ \u7684\u4ee3\u865f\u662f xyz-zh\u3002<\/p>\n\n\n\n<p class=\"rbs-ser-cfg-note wp-block-paragraph\">\u2464 \u4eba\u5de5\u9806\u5e8f\uff1d\u6587\u7ae0\u5728\u9801\u9762\u4e0a\u7684\u5148\u5f8c\uff0c\u7531\u5de6\u5230\u53f3\u5c31\u662f\u7531\u4e0a\u5230\u4e0b\uff0c\u7528\u9017\u865f\u5206\u958b\u3002\u6c92\u5beb\u9032\u53bb\u7684\u6587\u7ae0\u4e0d\u6703\u6d88\u5931\uff0c\u6703\u81ea\u52d5\u63a5\u5728\u6e05\u55ae\u5f8c\u9762\u3002\u6539\u9806\u5e8f\u8acb\u6539\u9019\u4e00\u884c\uff0c\u4e0d\u8981\u56de\u982d\u53bb\u52d5\u6587\u7ae0\u7684\u767c\u4f48\u65e5\u671f\u3002<\/p>\n\n\n\n<div class=\"wp-block-group rbs-ser-cfg-row rbs-ser-cfg-row-main is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading rbs-ser-cfg-row-title\">\u258a \u9019\u4e00\u9801\u8981\u986f\u793a\u7684\u7cfb\u5217\uff1aBarista Hustle \u8ab2\u7a0b\u4ecb\u7d39<\/h3>\n\n\n\n<p class=\"rbs-ser-cfg-label wp-block-paragraph\">\u2460 \u6587\u7ae0\u5206\u985e\u4ee3\u865f\uff08\u5206\u985e\u7db2\u5740\u6700\u5f8c\u4e00\u6bb5\uff09<\/p>\n\n\n\n<p class=\"rbs-ser-cfg-value rbs-ser-cfg-cat wp-block-paragraph\">barista-hustle-articles-zh<\/p>\n\n\n\n<p class=\"rbs-ser-cfg-label wp-block-paragraph\">\u2461 \u9801\u9996\u6a6b\u5e45\u5716\u7247\u7db2\u5740\uff08\u7559\u7a7a\uff1d\u53ea\u7559\u6df1\u8272\u5e95\uff0c\u4e0d\u653e\u5716\uff09<\/p>\n\n\n\n<p class=\"rbs-ser-cfg-value rbs-ser-cfg-banner wp-block-paragraph\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2025\/10\/scimg4zoNnk.webp<\/p>\n\n\n\n<p class=\"rbs-ser-cfg-label wp-block-paragraph\">\u2462 \u7f6e\u9802\u6587\u7ae0\u4ee3\u865f\uff08\u6392\u7b2c\u4e00\u7bc7\u4e26\u6a19\u300c\u5f9e\u9019\u7bc7\u958b\u59cb\u300d\uff0c\u7559\u7a7a\uff1d\u4e0d\u6307\u5b9a\uff09<\/p>\n\n\n\n<p class=\"rbs-ser-cfg-value rbs-ser-cfg-start wp-block-paragraph\">barista-hustle-bh-intro-to-taiwan-zh<\/p>\n\n\n\n<p class=\"rbs-ser-cfg-label wp-block-paragraph\">\u2463 \u6392\u5e8f\u65b9\u5f0f\uff08\u586b \u8ab2\u7a0bEP \u6216 BH\u4e09\u7dda \u6216 \u4eba\u5de5\u9806\u5e8f \u6216 \u4e00\u822c\uff09<\/p>\n\n\n\n<p class=\"rbs-ser-cfg-value rbs-ser-cfg-order wp-block-paragraph\">BH\u4e09\u7dda<\/p>\n\n\n\n<p class=\"rbs-ser-cfg-label wp-block-paragraph\">\u2464 \u4eba\u5de5\u9806\u5e8f\uff1a\u6587\u7ae0\u4ee3\u865f\u7531\u4e0a\u5230\u4e0b\u6392\uff08\u7528\u9017\u865f\u5206\u9694\uff1b\u7559\u7a7a\uff1d\u6539\u7528\u4e0a\u9762\u2463\u7684\u6392\u5e8f\u65b9\u5f0f\uff09<\/p>\n\n\n\n<p class=\"rbs-ser-cfg-value rbs-ser-cfg-manual wp-block-paragraph\">\uff08\u7559\u7a7a\uff1a\u6539\u7528\u4e0a\u9762\u2463\u7684\u6392\u5e8f\u65b9\u5f0f\uff09<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-cover rbs-ser-hero\" style=\"min-height:420px;aspect-ratio:unset;\"><img decoding=\"async\" class=\"wp-block-cover__image-background\" alt=\"\" src=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2025\/10\/scimg4zoNnk.webp\" data-object-fit=\"cover\"\/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-60 has-background-dim\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<p class=\"rbs-ser-back wp-block-paragraph\"><a href=\"https:\/\/rubasseroasters.com\/zh\/coffeeblog-articles-zh\/\">\u2190 \u770b\u6240\u6709\u5496\u5561\u5b78\u7fd2\u8cc7\u6e90<\/a><\/p>\n\n\n\n<p class=\"rbs-ser-badge wp-block-paragraph\">\u570b\u969b\u8a8d\u8b49\u8ab2\u7a0b<\/p>\n\n\n\n<h1 class=\"wp-block-heading rbs-ser-title\">\u6ef4\u6ffe\u3001\u7fa9\u5f0f\u3001\u6d78\u6ce1\uff0c<br>\u628a\u8403\u53d6\u539f\u7406\u4e00\u6b21\u8b80\u901a<\/h1>\n\n\n\n<p class=\"rbs-ser-lead wp-block-paragraph\">Barista Hustle \u662f\u5168\u7403\u516c\u8a8d\u6700\u79d1\u5b78\u7684\u5496\u5561\u6559\u5b78\u6a5f\u69cb\u3002\u9019\u4e5d\u5802\u8ab2\u628a\u8403\u53d6\u7684\u539f\u7406\u62c6\u958b\u8b1b\u2014\u2014\u70ba\u4ec0\u9ebc\u540c\u4e00\u652f\u8c46\u5b50\u63db\u500b\u624b\u6cd5\u5c31\u8b8a\u96e3\u559d\uff0c\u770b\u5b8c\u4f60\u6703\u77e5\u9053\u8a72\u5f9e\u54ea\u88e1\u8abf\u8d77\u3002<\/p>\n\n\n\n<div class=\"wp-block-columns rbs-ser-stats is-layout-flex wp-container-core-columns-is-layout-995f960e wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column rbs-ser-stat is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"rbs-ser-stat-number rbs-ser-n-posts wp-block-paragraph\">\u2013<\/p>\n\n\n\n<p class=\"rbs-ser-stat-label wp-block-paragraph\">\u5802\u7dda\u4e0a\u8ab2<\/p>\n<\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group alignfull rbs-ser-nav-shell is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group rbs-ser-nav-inner is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"rbs-ser-nav-label wp-block-paragraph\">\u2193 \u76f4\u63a5\u770b\u67d0\u4e00\u5802<\/p>\n\n\n\n<div class=\"wp-block-group rbs-ser-nav-links is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"rbs-ser-loading wp-block-paragraph\">\u96c6\u6578\u5c0e\u89bd\u6703\u5728\u524d\u53f0\u81ea\u52d5\u51fa\u73fe<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group rbs-ser-body is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group rbs-ser-slot is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"rbs-ser-loading wp-block-paragraph\">\u6587\u7ae0\u6703\u5728\u524d\u53f0\u81ea\u52d5\u8f09\u5165<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull rbs-ser-cta is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading rbs-ser-cta-title\">\u60f3\u628a\u9019\u4e9b\u539f\u7406\u7528\u5728\u81ea\u5df1\u7684\u8c46\u5b50\u4e0a\uff1f<\/h2>\n\n\n\n<p class=\"rbs-ser-cta-text wp-block-paragraph\">\u9810\u7d04\u8a66\u6a5f\uff0c\u6211\u5011\u966a\u4f60\u628a\u6c96\u716e\u7aef\u7684\u554f\u984c\u5f80\u56de\u8ffd\u5230\u70d8\u7119\u3002<\/p>\n\n\n\n<div class=\"wp-block-buttons rbs-ser-cta-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button rbs-ser-cta-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/rubasseroasters.com\/zh\/contact\/\">\u9810\u7d04\u8a66\u6a5f<\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"rbs-ser-engine-note\">\u2699\ufe0f \u7cfb\u7d71\u5f15\u64ce\uff1a\u8acb\u52ff\u89e3\u9396\u3001\u79fb\u52d5\u6216\u522a\u9664\uff1b\u65e5\u5e38\u5167\u5bb9\u8acb\u76f4\u63a5\u4fee\u6539\u4e0a\u65b9\u8996\u89ba\u5340\u584a\u3002<\/p>\n<button class=\"rbs-ser-top\" type=\"button\" aria-label=\"\u56de\u5230\u6700\u4e0a\u5c64\" title=\"\u56de\u5230\u6700\u4e0a\u5c64\"><span aria-hidden=\"true\">\u2191<\/span><span class=\"rbs-ser-top-text\">\u56de\u5230\u9802\u7aef<\/span><\/button>\n\n<style>\n.rbs-ser-page,.rbs-ser-page *{box-sizing:border-box}\n.rbs-ser-page{font-family:\"Noto Sans TC\",\"PingFang TC\",\"Microsoft JhengHei\",system-ui,sans-serif;color:#2a2320;background:#f8f3ec;line-height:1.7;-webkit-font-smoothing:antialiased;max-width:none!important;width:100%}\n.rbs-ser-page>*,.rbs-ser-page .wp-block-group>*,.rbs-ser-page .wp-block-cover__inner-container>*{margin-block-start:0;margin-block-end:0}\n.rbs-ser-page a{color:inherit;text-decoration:none}\n.rbs-ser-page img{display:block;width:100%;height:100%;object-fit:cover}\n.rbs-ser-hero{border-radius:0;overflow:hidden;min-height:420px!important;position:relative;display:flex;align-items:flex-end!important;cursor:default}\n.rbs-ser-hero .wp-block-cover__background{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(36,19,16,.55) 0%,rgba(36,19,16,.72) 40%,rgba(110,29,29,.94) 100%)!important;opacity:1!important}\n.rbs-ser-hero .wp-block-cover__image-background{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover}\n.rbs-ser-hero .wp-block-cover__inner-container{padding:56px max(24px,calc((100vw - 1180px)\/2)) 48px;width:100%;position:relative;z-index:2;color:#fff}\n.rbs-ser-hero,.rbs-ser-hero p,.rbs-ser-hero h1,.rbs-ser-hero h2{color:#fff!important}\n.rbs-ser-back{font-size:13.5px;opacity:.82;margin:0 0 14px!important}\n.rbs-ser-back a{text-decoration:underline;text-underline-offset:3px}\n.rbs-ser-badge{display:inline-block;font-size:12px;font-weight:800;padding:3px 10px;border-radius:99px;background:rgba(255,255,255,.18);letter-spacing:.5px;margin:0 0 14px!important}\n.rbs-ser-title{font-size:40px;line-height:1.3;margin:0 0 16px!important;font-weight:800;letter-spacing:.5px;color:#fff!important;text-shadow:0 2px 18px rgba(0,0,0,.4)}\n.rbs-ser-lead{font-size:17px;opacity:.92;margin:0 0 26px!important;max-width:700px;color:#fff!important}\n.rbs-ser-stats{display:flex;gap:34px;flex-wrap:wrap;margin:0!important}\n.rbs-ser-stats>.wp-block-column{flex:0 0 auto}\n.rbs-ser-hero .rbs-ser-stat-number{font-size:32px;color:#c9a24a!important;font-weight:900;line-height:1.2;margin:0!important}\n.rbs-ser-stat-label{font-size:13.5px;opacity:.8;margin:2px 0 0!important}\n\/* Blocksy \u6703\u5728\u9801\u9762\u6700\u4e0a\u65b9\u518d\u5370\u4e00\u6b21\u9801\u9762\u6a19\u984c\uff08\u5206\u985e\u540d\uff09\uff0c\u672c\u9801\u81ea\u5df1\u6709 h1 \u2192\n   \u85cf\u6389\u4f48\u666f\u90a3\u9846\uff0c\u907f\u514d\u540c\u4e00\u9801\u51fa\u73fe\u5169\u500b\u53ef\u898b\u7684 h1\u3002\n   2026-09-16 \u4e0a\u7dda\u5f8c\u5be6\u6e2c\u6293\u5230\uff1a\u627f\u63a5\u9801\u6709\u9019\u689d\u6240\u4ee5\u6c92\u4e8b\uff0c\u4e09\u500b\u7cfb\u5217\u9801\u6f0f\u4e86\u3002 *\/\n.hero-section[data-type]{display:none}\n.rbs-ser-nav-shell{position:sticky;top:0;z-index:40;background:#fff;border-bottom:1px solid #e6ddd2;box-shadow:0 3px 14px rgba(36,19,16,.09);padding:11px max(24px,calc((100vw - 1180px)\/2))}\n.rbs-ser-nav-inner{display:flex;align-items:center;gap:15px;max-width:1180px;margin:0 auto!important}\n.rbs-ser-nav-label{flex:0 0 auto;font-size:13px;font-weight:800;color:#7d726b;white-space:nowrap;margin:0!important}\n.rbs-ser-nav-links{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:2px 0;min-width:0}\n.rbs-ser-nav-links::-webkit-scrollbar{display:none}\n.rbs-ser-nav-a{flex:0 0 auto;display:flex;align-items:center;justify-content:center;padding:0 15px;border-radius:99px;border:1.5px solid #e6ddd2;background:#f8f3ec;color:#2a2320;white-space:nowrap;cursor:pointer;min-height:44px;font-size:14.5px;font-weight:800;transition:background .15s,border-color .15s,color .15s,transform .12s}\n.rbs-ser-nav-a:hover{border-color:#a32b2b;color:#a32b2b;background:#fff;transform:translateY(-1px)}\n.rbs-ser-nav-a.on{background:#a32b2b;border-color:#a32b2b;color:#fff}\n.rbs-ser-body{max-width:1180px;margin:46px auto 56px!important;padding:0 24px}\n.rbs-ser-slot{margin:0!important}\n.rbs-ser-loading,.rbs-ser-err{text-align:center;padding:36px 20px;color:#7d726b;font-size:14px}\n.rbs-ser-err{color:#a32b2b;border:1px solid #e6ddd2;background:#fff;border-radius:12px}\n.rbs-ser-list{border:1px solid #e6ddd2;border-radius:14px;overflow:hidden;background:#fff}\n.rbs-ser-list-row{display:flex;align-items:center;gap:18px;padding:17px 20px;border-bottom:1px solid #e6ddd2;transition:background .15s}\n.rbs-ser-list-row:last-child{border-bottom:0}\n.rbs-ser-list-row:hover{background:#f8f3ec}\n.rbs-ser-list-start{background:#fffaf0}\n.rbs-ser-list-no{flex:0 0 70px;text-align:center;line-height:1.05;border-right:2px solid #e6ddd2;padding-right:16px}\n.rbs-ser-list-no-k{display:block;font-size:10px;font-weight:800;color:#7d726b;letter-spacing:.7px;white-space:nowrap}\n.rbs-ser-list-no-n{display:block;font-size:27px;font-weight:900;color:#a32b2b;margin-top:4px}\n.rbs-ser-list-thumb{width:132px;height:86px;border-radius:8px;background:#e6ddd2;overflow:hidden;flex-shrink:0}\n.rbs-ser-list-body{flex:1;min-width:0}\n.rbs-ser-list-start-tag{display:inline-block;background:#c9a24a;color:#3a2a06;font-size:11.5px;line-height:1.3;font-weight:900;padding:4px 10px;border-radius:99px;margin-bottom:6px}\n.rbs-ser-list-title{margin:0 0 5px;font-size:18px;line-height:1.5;font-weight:800;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\n.rbs-ser-list-excerpt{margin:0;font-size:13.5px;line-height:1.6;color:#7d726b;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\n.rbs-ser-list-go{flex:0 0 auto;color:#a32b2b;font-size:14px;font-weight:800}\n.rbs-ser-cta{background:#241310;color:#fff;padding:52px max(24px,calc((100vw - 1180px)\/2));text-align:center}\n.rbs-ser-cta-title{margin:0 0 10px!important;font-size:27px;color:#fff!important}\n.rbs-ser-cta-text{margin:0 0 24px!important;opacity:.82;color:#fff!important}\n.rbs-ser-cta-buttons{justify-content:center;margin:0!important}\n.rbs-ser-cta-button .wp-block-button__link{display:inline-block;background:#a32b2b;color:#fff;padding:13px 30px;border-radius:6px;font-weight:800;font-size:16px;text-decoration:none}\n.rbs-ser-more{background:#f8f3ec;padding:48px max(24px,calc((100vw - 1180px)\/2));border-top:1px solid #e6ddd2}\n.rbs-ser-more-title{margin:0 0 6px!important;font-size:23px;font-weight:800;text-align:center}\n.rbs-ser-more-text{margin:0 0 26px!important;text-align:center;color:#7d726b;font-size:14.5px}\n.rbs-ser-more-grid{display:flex;gap:16px;margin:0!important;max-width:1180px}\n.rbs-ser-more-grid>.wp-block-column{flex:1 1 0;min-width:0}\n.rbs-ser-more-card{display:block;background:#fff;border:1px solid #e6ddd2;border-radius:14px;padding:20px 20px 18px;height:100%;transition:border-color .15s,transform .12s,box-shadow .15s}\n.rbs-ser-more-card:hover{border-color:#a32b2b;transform:translateY(-2px);box-shadow:0 8px 20px rgba(36,19,16,.09)}\n.rbs-ser-more-kicker{margin:0 0 7px!important;font-size:11.5px;font-weight:800;letter-spacing:.6px;color:#c9a24a}\n.rbs-ser-more-name{margin:0 0 8px!important;font-size:18px;font-weight:800;line-height:1.45;color:#2a2320}\n.rbs-ser-more-desc{margin:0 0 14px!important;font-size:13.5px;line-height:1.65;color:#7d726b}\n.rbs-ser-more-go{margin:0!important;font-size:14px;font-weight:800;color:#a32b2b}\n.rbs-ser-top{position:fixed;right:22px;bottom:54px;z-index:60;display:flex;align-items:center;gap:7px;border:0;cursor:pointer;font-family:inherit;background:#a32b2b;color:#fff;padding:13px 19px;border-radius:99px;font-size:14px;font-weight:800;box-shadow:0 8px 22px rgba(36,19,16,.32);opacity:0;visibility:hidden;transform:translateY(14px);transition:opacity .22s,transform .22s,visibility .22s}\n.rbs-ser-top.on{opacity:1;visibility:visible;transform:translateY(0)}\n.rbs-ser-top:hover{background:#241310}\n.rbs-ser-engine-note{display:none}\n.rbs-ser-setup{display:none!important}\n.editor-styles-wrapper .rbs-ser-setup,.rbs-ser-setup.rbs-ser-setup-show{display:block!important;background:#fff8e6;border:2px dashed #c9a24a;border-radius:14px;padding:18px 20px 22px;margin:0 0 10px!important}\n.rbs-ser-cfg-heading{font-size:20px!important;font-weight:800;margin:0 0 10px!important;color:#8a6d1f!important}\n.rbs-ser-cfg-note{font-size:13px!important;line-height:1.7;color:#6b5f52!important;margin:0 0 6px!important;background:#fffdf6;border-left:3px solid #c9a24a;padding:7px 11px;border-radius:0 6px 6px 0}\n.rbs-ser-cfg-row{background:#fff;border:1px solid #e6ddd2;border-radius:10px;padding:12px 15px 15px;margin:13px 0 0!important}\n.rbs-ser-cfg-row-title{font-size:16px!important;font-weight:800;margin:0 0 4px!important;color:#a32b2b!important;border-bottom:1px solid #f0e7da;padding-bottom:7px}\n.rbs-ser-cfg-label{font-size:12.5px!important;line-height:1.5;color:#8a8078!important;margin:11px 0 3px!important}\n.rbs-ser-cfg-value{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace!important;font-size:13.5px!important;line-height:1.6;color:#1f5c2e!important;background:#f4faf5;border:1px solid #cfe6d4;border-radius:6px;padding:7px 10px;margin:0!important;word-break:break-all;min-height:1.7em}\n@media(max-width:900px){.rbs-ser-title{font-size:31px}.rbs-ser-list-thumb{width:108px;height:72px}\n.rbs-ser-more-grid{flex-wrap:wrap}.rbs-ser-more-grid>.wp-block-column{flex:1 1 100%}}\n@media(max-width:640px){\n.rbs-ser-hero{min-height:0!important;height:auto!important}\n.rbs-ser-hero .wp-block-cover__inner-container{padding:38px 16px 34px}\n.rbs-ser-title{font-size:25px;line-height:1.4}.rbs-ser-lead{font-size:15px;margin-bottom:22px!important}.rbs-ser-stats{gap:22px}.rbs-ser-hero .rbs-ser-stat-number{font-size:25px}.rbs-ser-stat-label{font-size:12.5px}\n.rbs-ser-nav-shell{padding:9px 16px}.rbs-ser-nav-label{display:none}.rbs-ser-nav-inner{gap:0}.rbs-ser-nav-a{padding:0 12px;min-height:42px;font-size:13.5px}\n.rbs-ser-body{padding:0 16px;margin:30px auto 40px!important}\n.rbs-ser-list-row{padding:13px 14px;gap:12px;align-items:flex-start}.rbs-ser-list-no{flex-basis:46px;padding-right:10px;padding-top:3px}.rbs-ser-list-no-k{font-size:9px}.rbs-ser-list-no-n{font-size:21px}.rbs-ser-list-thumb{display:none}.rbs-ser-list-title{font-size:15.5px;line-height:1.5}.rbs-ser-list-excerpt{font-size:12.5px}.rbs-ser-list-go{display:none}.rbs-ser-list-start-tag{font-size:10.5px}\n.rbs-ser-more{padding:36px 16px}.rbs-ser-more-title{font-size:19px}.rbs-ser-more-grid{gap:12px}.rbs-ser-more-card{padding:16px 16px 14px}\n.rbs-ser-cta{padding:40px 16px}.rbs-ser-cta-title{font-size:21px}.rbs-ser-cta-button .wp-block-button__link{padding:12px 24px;font-size:15px}\n.rbs-ser-top{right:14px;bottom:58px;padding:0;width:46px;height:46px;justify-content:center;border-radius:50%}.rbs-ser-top-text{display:none}\n}\n<\/style>\n\n<script>\n(function(){\n  var AMP = String.fromCharCode(38);\n  var SITE = 'https:\/\/rubasseroasters.com';\n  var LANG = '\/zh';\n  var NAV_OFFSET = 0;\n  var SYNC_OFFSET = null;\n\n  \/\/ \u4f48\u666f\uff08Blocksy\uff09\u6709\u4e00\u689d position:fixed \u7684\u9801\u9996\u64cb\u5728\u8996\u7a97\u9802\u7aef\u3002\n  \/\/ \u9ad8\u5ea6\u4e0d\u56fa\u5b9a\uff082026-09-16 \u5728 BH \u9801\u5be6\u91cf\u684c\u6a5f 103px\uff0c\u624b\u6a5f\u53e6\u4e00\u7d44\u503c\uff09\uff0c\u6240\u4ee5\u4e0d\u80fd\u5beb\u6b7b\u50cf\u7d20\uff1b\n  \/\/ \u800c\u4e14\u6709\u4e9b\u9801\u662f\u6372\u52d5\u4e4b\u5f8c\u624d\u8b8a fixed\uff0c\u8f09\u5165\u7576\u4e0b\u91cf\u5230 0 \u2014\u2014 \u5169\u7a2e\u60c5\u6cc1\u90fd\u8981\u80fd\u8655\u7406\u3002\n  \/\/ sticky \u5c0e\u89bd\u5217\u82e5\u7528 top:0 \u6703\u6574\u689d\u88ab\u84cb\u5728\u5b83\u4e0b\u9762\uff082026-09-16 \u4e0a\u7dda\u5f8c\u5728 BH \u9801\u5be6\u6e2c\uff1a\n  \/\/ \u5c0e\u89bd\u5217\u5e95\u7de3 71px\u3001\u4f48\u666f\u9801\u9996\u5e95\u7de3 103px\uff09\u3002\u9019\u88e1\u5be6\u5730\u91cf\u300c\u8cbc\u5728\u8996\u7a97\u9802\u7aef\u3001\u5e7e\u4e4e\u6eff\u7248\u7684\n  \/\/ fixed \u5143\u7d20\u300d\u5e95\u7de3\uff0c\u91cf\u5230\u591a\u5c11\u5c31\u8b93\u958b\u591a\u5c11\u3002\u505a\u6cd5\u8207 gen_success_stories.py \u7684 themeTop() \u76f8\u540c\u3002\n  function themeTop(){\n    var nav = root.querySelector('.rbs-ser-nav-shell');\n    var best = 0;\n    var all = document.body.getElementsByTagName('*');\n    for (var i = 0; i < all.length; i++) {\n      var e = all[i];\n      if (nav) {\n        if (e === nav) { continue; }\n        if (nav.contains(e)) { continue; }\n      }\n      if (window.getComputedStyle(e).position !== 'fixed') { continue; }\n      var r = e.getBoundingClientRect();\n      if (r.top > 2) { continue; }\n      if (r.height < 10) { continue; }\n      if (r.height > 200) { continue; }          \/\/ \u592a\u9ad8\u7684\u591a\u534a\u662f\u906e\u7f69\u6216\u5074\u6b04\uff0c\u4e0d\u662f\u9801\u9996\n      if (r.width < window.innerWidth * 0.8) { continue; }\n      if (r.bottom > best) { best = r.bottom; }\n    }\n    return Math.round(best);\n  }\n\n  function applyNavOffset(){\n    var nav = root.querySelector('.rbs-ser-nav-shell');\n    if (!nav) { return; }\n    var value = themeTop();\n    if (value === NAV_OFFSET) { return; }\n    NAV_OFFSET = value;\n    nav.style.top = NAV_OFFSET + 'px';\n    if (SYNC_OFFSET) { SYNC_OFFSET(); }\n  }\n  var TOP_BTN_AFTER = 480;\n  var START_TAG = 'hub-start';\n  \/\/ \u8a2d\u5b9a\u5340\u88ab\u8aa4\u522a\u6642\u7684\u515c\u5e95\u9810\u8a2d\u3002\n  var CFG_DEFAULT = {\"cat\":\"barista-hustle-articles-zh\",\"banner\":\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2025\/10\/scimg4zoNnk.webp\",\"start\":\"barista-hustle-bh-intro-to-taiwan-zh\",\"order\":\"BH\u4e09\u7dda\",\"manual\":\"\uff08\u7559\u7a7a\uff1a\u6539\u7528\u4e0a\u9762\u2463\u7684\u6392\u5e8f\u65b9\u5f0f\uff09\"};\n  \/\/ \u9019\u4e00\u9801\u7684\u6587\u7ae0\u6709\u6c92\u6709\u300c\u7b2c\u5e7e\u7bc7\u300d\u7684\u610f\u7fa9\u3002\u70d8\u8c46\u6280\u8853\u6559\u5b78\u8207\u70d8\u8c46\u6a5f\u9078\u8cfc\u77e5\u8b58\u53ea\u662f\u4e3b\u984c\u6587\u7ae0\u96c6\u5408\uff0c\n  \/\/ \u5370 01~10 \u6703\u5047\u88dd\u6709\u5148\u5f8c\uff08\u9806\u5e8f\u4ecd\u7531\u8a2d\u5b9a\u5340\u2464\u6c7a\u5b9a\uff0c\u53ea\u662f\u4e0d\u628a\u540d\u6b21\u5370\u51fa\u4f86\uff09\u3002\n  \/\/ \u95dc\u6389\u6642\u9023\u5e36\u6536\u6389 sticky \u5c0e\u89bd\u5217\u2014\u2014\u90a3\u6392 pill \u7684\u6587\u5b57\u5c31\u662f\u7de8\u865f\uff0c\u6c92\u7de8\u865f\u5c31\u6c92\u6771\u897f\u53ef\u8df3\u3002\n  var SHOW_NUMBER = true;\n\n  var root = document.querySelector('.rbs-ser-page');\n  if (!root) { return; }\n\n  function cfgVal(row, selector, fallback){\n    if (!row) { return fallback; }\n    var node = row.querySelector(selector);\n    if (!node) { return fallback; }\n    return node.textContent.replace(\/[\\s ]+\/g, ' ').trim();\n  }\n\n  \/\/ \u7a7a\u5b57\u4e32\u3001\u7834\u6298\u865f\u3001\u6216\u4ee5\u5168\u5f62\u62ec\u865f\u958b\u982d\uff08\u4f8b\u5982\u300c\uff08\u7559\u7a7a\uff09\u300d\uff09\u90fd\u8996\u70ba\u300c\u6c92\u586b\u300d\u3002\n  function isBlank(value){\n    if (!value) { return true; }\n    if (value === '-') { return true; }\n    if (value === '\u2014') { return true; }\n    if (value.charAt(0) === '\uff08') { return true; }\n    return false;\n  }\n\n  function normLayout(value){\n    var text = String(value);\n    if (text.indexOf('EP') >= 0) { return 'timeline'; }\n    if (text.indexOf('timeline') >= 0) { return 'timeline'; }\n    if (text.indexOf('BH') >= 0) { return 'lines'; }\n    if (text.indexOf('lines') >= 0) { return 'lines'; }\n    return 'rows';\n  }\n\n  \/\/ \u2464 \u4eba\u5de5\u9806\u5e8f\uff1a\u4e00\u4e32\u6587\u7ae0\u4ee3\u865f\u3002\u9017\u865f\uff08\u534a\u5f62\/\u5168\u5f62\uff09\u3001\u9813\u865f\u3001\u63db\u884c\u3001\u7a7a\u767d\u90fd\u7576\u5206\u9694\uff0c\n  \/\/ \u540c\u4e8b\u8907\u88fd\u8cbc\u4e0a\u6642\u591a\u6253\u4e00\u500b\u9017\u865f\u6216\u63db\u884c\u90fd\u4e0d\u6703\u58de\u3002\n  function parseManual(value){\n    if (isBlank(value)) { return []; }\n    var parts = String(value).split(\/[,\uff0c\u3001;\uff1b\\s]+\/);\n    var out = [];\n    for (var i = 0; i < parts.length; i++) {\n      var slug = parts[i].trim();\n      if (slug.length > 0) { out.push(slug); }\n    }\n    return out;\n  }\n\n  function readConfig(){\n    var row = root.querySelector('.rbs-ser-cfg-row-main');\n    var cat = cfgVal(row, '.rbs-ser-cfg-cat', CFG_DEFAULT.cat);\n    var banner = cfgVal(row, '.rbs-ser-cfg-banner', CFG_DEFAULT.banner);\n    var start = cfgVal(row, '.rbs-ser-cfg-start', CFG_DEFAULT.start);\n    var order = cfgVal(row, '.rbs-ser-cfg-order', CFG_DEFAULT.order);\n    var manual = cfgVal(row, '.rbs-ser-cfg-manual', CFG_DEFAULT.manual);\n    return {\n      cat: isBlank(cat) ? '' : cat,\n      banner: isBlank(banner) ? '' : banner,\n      fallbackStart: isBlank(start) ? '' : start,\n      layout: normLayout(order),\n      manual: parseManual(manual)\n    };\n  }\n\n  var CFG = readConfig();\n\n  \/\/ Gutenberg \u7de8\u8f2f\u5668\u6703\u9023\u540c\u9019\u500b\u5340\u584a\u7684 <style> \u8207 <script> \u4e00\u8d77\u8dd1\uff0c\n  \/\/ \u6240\u4ee5\u300c\u524d\u53f0\u96b1\u85cf\u8a2d\u5b9a\u5340\u300d\u4e0d\u80fd\u7121\u689d\u4ef6\u505a\uff0c\u5f97\u5148\u5206\u8fa8\u81ea\u5df1\u5728\u7de8\u8f2f\u5668\u9084\u662f\u524d\u53f0\u3002\n  function inEditor(){\n    try {\n      if (document.body) {\n        if (document.body.classList.contains('editor-styles-wrapper')) { return true; }\n      }\n      if (document.querySelector('.editor-styles-wrapper')) { return true; }\n      if (document.querySelector('.block-editor-block-list__layout')) { return true; }\n      if (document.querySelector('[data-type=\"core\/group\"]')) { return true; }\n    } catch (error) { return false; }\n    return false;\n  }\n\n  var IN_EDITOR = inEditor();\n  var setupPanel = root.querySelector('.rbs-ser-setup');\n  if (setupPanel) {\n    if (IN_EDITOR) { setupPanel.classList.add('rbs-ser-setup-show'); }\n    else { setupPanel.classList.remove('rbs-ser-setup-show'); }\n  }\n\n  function el(tag, cls, text){\n    var node = document.createElement(tag);\n    if (cls) { node.className = cls; }\n    if (text) { node.textContent = text; }\n    return node;\n  }\n\n  function imgOf(post){\n    var embedded = post._embedded;\n    if (!embedded) { return ''; }\n    var media = embedded['wp:featuredmedia'];\n    if (!media) { return ''; }\n    if (!media[0]) { return ''; }\n    if (!media[0].source_url) { return ''; }\n    return media[0].source_url;\n  }\n\n  function linkOf(post){ return SITE + LANG + '\/' + post.slug + '\/'; }\n\n  function titleOf(post){\n    var box = document.createElement('textarea');\n    box.innerHTML = post.title.rendered;\n    return box.value.replace(\/[\\s ]+\/g, ' ').trim();\n  }\n\n  \/\/ WP \u81ea\u52d5\u7522\u7684\u6458\u8981\u662f\u5167\u6587\u958b\u982d\uff0c\u800c\u9019\u6279\u6587\u7ae0\u7684\u5beb\u7a3f\u7fd2\u6163\u662f\u300c\u6a19\u984c\u6284\u4e00\u904d \u2192 \u5167\u5bb9\u6458\u8981 \u2192 \u6b63\u6587\u300d\uff0c\n  \/\/ \u6a19\u984c\u5c31\u986f\u793a\u5728\u6458\u8981\u6b63\u4e0a\u65b9\uff0c\u91cd\u8907\u5169\u6b21\u5f88\u5435\u3002\u6a19\u984c\u6284\u7684\u90a3\u904d\u672a\u5fc5\u8ddf\u771f\u6b63\u7684\u6a19\u984c\u9010\u5b57\u76f8\u540c\n  \/\/ \uff08EP5 \u6a19\u984c\u5beb\u300c\u5927\u8c46\u76ee\u300d\u3001\u5167\u6587\u5beb\u300c\u8c46\u76ee\u5927\u300d\uff09\uff0c\u6240\u4ee5\u8a8d\u300c\u5167\u5bb9\u6458\u8981\u300d\u9019\u500b\u5206\u9694\u8a5e\u4f86\u5207\u3002\n  function excerptOf(post, shortTitle){\n    if (!post.excerpt) { return ''; }\n    var box = document.createElement('div');\n    box.innerHTML = post.excerpt.rendered;\n    var text = box.textContent.replace(\/[\\s ]+\/g, ' ').trim();\n    var out = text.replace(\/^.*?EP\\s*\\d+[.\\s|\uff5c]*\/, '');\n    if (shortTitle) {\n      if (out.indexOf(shortTitle) === 0) { out = out.slice(shortTitle.length); }\n    }\n    out = out.replace(\/^[\\s\uff1a:\uff5c|\u3001\uff0c,.\u3002\\-]+\/, '');\n    var marker = out.indexOf('\u5167\u5bb9\u6458\u8981');\n    if (marker >= 0) {\n      if (marker < 90) { out = out.slice(marker + 4); }\n    }\n    out = out.replace(\/^[\\s\uff1a:\uff5c|\u3001\uff0c,.\u3002\\-]+\/, '');\n    if (out.length === 0) { out = text; }\n    if (out.length > 90) { return out.slice(0, 90) + '\u2026'; }\n    return out;\n  }\n\n  function epNum(title){\n    var match = title.match(\/EP\\s*(\\d+)\/);\n    if (match) { return parseInt(match[1], 10); }\n    return 99;\n  }\n\n  \/\/ \u300c\u5496\u5561\u70d8\u7119\u7d42\u6975\u6307\u5357 | EP1 \u8ab2\u7a0b\u5167\u5bb9\u4ecb\u7d39\u300d\u2192\u300c\u8ab2\u7a0b\u5167\u5bb9\u4ecb\u7d39\u300d\u3002\n  \/\/ character class \u540c\u6642\u5403\u534a\u5f62 | \u8207\u5168\u5f62 \uff5c\uff0c\u5be6\u969b\u7ad9\u4e0a\u7528\u7684\u662f\u534a\u5f62\u3002\n  function epTitle(title){\n    var cleaned = title.replace(\/^.*?EP\\s*\\d+[.\\s|\uff5c]*\/, '');\n    if (cleaned.length === 0) { return title; }\n    return cleaned;\n  }\n\n  function bhLine(title){\n    var keys = ['\u6ef4\u6ffe', '\u7fa9\u5f0f', '\u6d78\u6ce1'];\n    for (var i = 0; i < keys.length; i++) {\n      if (title.indexOf(keys[i]) === 0) { return keys[i]; }\n    }\n    return '\u7e3d\u89bd';\n  }\n\n  function thumb(src, cls){\n    var box = el('div', cls);\n    if (src) {\n      var image = document.createElement('img');\n      image.src = src;\n      image.alt = '';\n      image.loading = 'lazy';\n      box.appendChild(image);\n    }\n    return box;\n  }\n\n  function hasTag(post, tagId){\n    if (!tagId) { return false; }\n    if (!post.tags) { return false; }\n    for (var i = 0; i < post.tags.length; i++) {\n      if (post.tags[i] === tagId) { return true; }\n    }\n    return false;\n  }\n\n  function fetchStartTagId(){\n    var url = SITE + '\/wp-json\/wp\/v2\/tags?slug=' + encodeURIComponent(START_TAG) + AMP + 'per_page=100';\n    return fetch(url).then(function(response){\n      if (!response.ok) { throw new Error('tag REST ' + response.status); }\n      return response.json();\n    }).then(function(tags){\n      for (var i = 0; i < tags.length; i++) {\n        if (tags[i].slug === START_TAG) { return tags[i].id; }\n      }\n      return 0;\n    }).catch(function(){ return 0; });\n  }\n\n  \/\/ \u8a2d\u5b9a\u5340\u586b\u7684\u662f\u5206\u985e slug\uff0c\u5148\u63db\u6210 REST \u9700\u8981\u7684\u5206\u985e ID\u3002\n  function fetchCategory(){\n    if (!CFG.cat) { return Promise.resolve(null); }\n    var url = SITE + '\/wp-json\/wp\/v2\/categories?slug=' + encodeURIComponent(CFG.cat) + AMP + 'per_page=100';\n    return fetch(url).then(function(response){\n      if (!response.ok) { throw new Error('category REST ' + response.status); }\n      return response.json();\n    }).then(function(cats){\n      for (var i = 0; i < cats.length; i++) {\n        if (cats[i].slug === CFG.cat) { return cats[i]; }\n      }\n      return null;\n    }).catch(function(){ return null; });\n  }\n\n  function fetchPosts(cat){\n    if (!cat) { return Promise.resolve({posts: [], error: ''}); }\n    var url = SITE + '\/wp-json\/wp\/v2\/posts?categories=' + cat.id + AMP + 'per_page=100' + AMP + '_embed';\n    return fetch(url).then(function(response){\n      if (!response.ok) { throw new Error('post REST ' + response.status); }\n      return response.json();\n    }).then(function(posts){\n      return {posts: posts, error: ''};\n    }).catch(function(error){\n      return {posts: [], error: String(error)};\n    });\n  }\n\n  \/\/ \u8a2d\u5b9a\u5340\u7684\u6a6b\u5e45\u7db2\u5740\u662f\u552f\u4e00\u771f\u76f8\uff1a\u6709\u586b\u5c31\u8986\u5beb Hero \u5716\uff0c\u7559\u7a7a\u5c31\u79fb\u9664\u5716\u53ea\u7559\u6f38\u5c64\u5e95\u3002\n  function applyBanner(){\n    var coverBox = root.querySelector('.rbs-ser-hero');\n    if (!coverBox) { return; }\n    var image = coverBox.querySelector('.wp-block-cover__image-background');\n    if (!CFG.banner) {\n      if (image) { image.parentNode.removeChild(image); }\n      return;\n    }\n    if (!image) {\n      image = document.createElement('img');\n      image.className = 'wp-block-cover__image-background';\n      image.setAttribute('alt', '');\n      image.setAttribute('data-object-fit', 'cover');\n      coverBox.insertBefore(image, coverBox.firstChild);\n    }\n    if (image.getAttribute('src') !== CFG.banner) { image.setAttribute('src', CFG.banner); }\n  }\n\n  \/\/ \u6392\u5e8f\u5b8c\u5168\u4e0d\u770b\u767c\u4f48\u6642\u9593\uff1a\u5206\u985e\u9801\u539f\u672c\u5c31\u662f\u9760\u624b\u8abf\u767c\u4f48\u6642\u9593\u64ac\u9806\u5e8f\uff0c\u90a3\u500b\u505a\u6cd5\u4e00\u6539\u65e5\u671f\u5c31\u6563\u3002\n  \/\/\n  \/\/ \u2464 \u4eba\u5de5\u9806\u5e8f\u586b\u4e86\u5c31\u4ee5\u5b83\u70ba\u6e96\uff08\u5206\u985e 32\uff0f33 \u7684\u6a19\u984c\u6c92\u6709\u96c6\u6578\u53ef\u8b80\uff0c\u53ea\u80fd\u9019\u6a23\u6307\u5b9a\uff09\u3002\n  \/\/ \u6c92\u88ab\u5217\u9032\u6e05\u55ae\u7684\u6587\u7ae0\uff08\u4f8b\u5982\u65b0\u767c\u4f48\u7684\uff09\u4e0d\u6703\u6d88\u5931\uff0c\u4e00\u5f8b\u6392\u5728\u6e05\u55ae\u4e4b\u5f8c\uff0c\u7dad\u6301\u539f\u672c\u76f8\u5c0d\u9806\u5e8f\u3002\n  function manualRank(post){\n    for (var i = 0; i < CFG.manual.length; i++) {\n      if (CFG.manual[i] === post.slug) { return i; }\n    }\n    return CFG.manual.length + 1;\n  }\n\n  function baseOrder(posts){\n    var list = posts.slice();\n    if (CFG.manual.length > 0) {\n      var seat = [];\n      for (var k = 0; k < list.length; k++) { seat.push({post: list[k], seq: k}); }\n      seat.sort(function(a, b){\n        var diff = manualRank(a.post) - manualRank(b.post);\n        if (diff !== 0) { return diff; }\n        return a.seq - b.seq;\n      });\n      var sorted = [];\n      for (var m = 0; m < seat.length; m++) { sorted.push(seat[m].post); }\n      return sorted;\n    }\n    if (CFG.layout === 'timeline') {\n      list.sort(function(a, b){ return epNum(titleOf(a)) - epNum(titleOf(b)); });\n    }\n    if (CFG.layout === 'lines') {\n      var rank = {'\u6ef4\u6ffe':0,'\u7fa9\u5f0f':1,'\u6d78\u6ce1':2,'\u7e3d\u89bd':3};\n      list.sort(function(a, b){\n        var titleA = titleOf(a);\n        var titleB = titleOf(b);\n        var lineDiff = rank[bhLine(titleA)] - rank[bhLine(titleB)];\n        if (lineDiff !== 0) { return lineDiff; }\n        return epNum(titleA) - epNum(titleB);\n      });\n    }\n    return list;\n  }\n\n  function moveStartFirst(list, startTagId){\n    var startIndex = -1;\n    if (startTagId) {\n      for (var i = 0; i < list.length; i++) {\n        if (hasTag(list[i], startTagId)) { startIndex = i; break; }\n      }\n    }\n    if (startIndex < 0) {\n      for (var j = 0; j < list.length; j++) {\n        if (list[j].slug === CFG.fallbackStart) { startIndex = j; break; }\n      }\n    }\n    if (startIndex > 0) {\n      var start = list.splice(startIndex, 1)[0];\n      list.unshift(start);\n    }\n    return list;\n  }\n\n  function rowTitle(post){\n    var title = titleOf(post);\n    if (CFG.layout === 'timeline') { return epTitle(title); }\n    if (CFG.layout === 'lines') {\n      var parts = title.split('\uff5c');\n      if (parts.length > 1) { return parts[parts.length - 1].trim(); }\n      var half = title.split('|');\n      if (half.length > 1) { return half[half.length - 1].trim(); }\n    }\n    return title;\n  }\n\n  function rowNumber(post, index){\n    var title = titleOf(post);\n    var number = epNum(title);\n    if (CFG.layout === 'timeline') {\n      if (number !== 99) { return {key:'EP', value:String(number)}; }\n      return {key:'\u5c0e\u8b80', value:'0'};\n    }\n    if (CFG.layout === 'lines') {\n      if (number !== 99) { return {key:bhLine(title), value:'EP' + number}; }\n      return {key:'\u5c0e\u8b80', value:'01'};\n    }\n    var value = String(index + 1);\n    if (value.length < 2) { value = '0' + value; }\n    return {key:'\u7b2c', value:value};\n  }\n\n  function navLabel(number){\n    if (CFG.layout === 'timeline') { return 'EP' + number.value; }\n    return number.value;\n  }\n\n  function renderList(posts, startTagId){\n    var ordered = moveStartFirst(baseOrder(posts), startTagId);\n    var box = el('div', 'rbs-ser-list');\n    var navItems = [];\n    for (var i = 0; i < ordered.length; i++) {\n      var post = ordered[i];\n      var link = el('a', 'rbs-ser-list-row');\n      link.href = linkOf(post);\n      link.id = 'ser-i-' + (i + 1);\n      if (i === 0) { link.classList.add('rbs-ser-list-start'); }\n\n      if (SHOW_NUMBER) {\n        var number = rowNumber(post, i);\n        var numberBox = el('div', 'rbs-ser-list-no');\n        numberBox.appendChild(el('span', 'rbs-ser-list-no-k', number.key));\n        numberBox.appendChild(el('span', 'rbs-ser-list-no-n', number.value));\n        link.appendChild(numberBox);\n        navItems.push({id: link.id, label: navLabel(number)});\n      }\n      link.appendChild(thumb(imgOf(post), 'rbs-ser-list-thumb'));\n\n      var body = el('div', 'rbs-ser-list-body');\n      if (i === 0) { body.appendChild(el('span', 'rbs-ser-list-start-tag', '\u5f9e\u9019\u7bc7\u958b\u59cb')); }\n      var shortTitle = rowTitle(post);\n      body.appendChild(el('h2', 'rbs-ser-list-title', shortTitle));\n      var excerpt = excerptOf(post, shortTitle);\n      if (excerpt) { body.appendChild(el('p', 'rbs-ser-list-excerpt', excerpt)); }\n      link.appendChild(body);\n\n      var action = '\u95b1\u8b80\u6587\u7ae0 \u2192';\n      if (CFG.layout === 'timeline') { action = '\u958b\u59cb\u4e0a\u8ab2 \u2192'; }\n      link.appendChild(el('span', 'rbs-ser-list-go', action));\n      box.appendChild(link);\n    }\n    return {box: box, navItems: navItems, ordered: ordered};\n  }\n\n  function navHeight(){\n    var nav = root.querySelector('.rbs-ser-nav-shell');\n    if (!nav) { return 0; }\n    return nav.getBoundingClientRect().height;\n  }\n\n  var NAV_ITEMS = [];\n  var LOCKED_NAV = '';\n\n  \/\/ \u6e05\u55ae\u6c92\u6771\u897f\u53ef\u5217\u6642\uff08\u5206\u985e\u4ee3\u865f\u586b\u932f\uff0f\u8f09\u5165\u5931\u6557\uff0f\u7a7a\u5206\u985e\uff09\uff0c\u5c0e\u89bd\u5217\u8981\u4e00\u8d77\u6536\u6389\uff0c\n  \/\/ \u5426\u5247\u524d\u53f0\u6703\u7559\u4e0b\u4e00\u689d\u5beb\u8457\u300c\u96c6\u6578\u5c0e\u89bd\u6703\u5728\u524d\u53f0\u81ea\u52d5\u51fa\u73fe\u300d\u7684\u7a7a\u767d sticky \u5217\u3002\n  function hideNav(){\n    var nav = root.querySelector('.rbs-ser-nav-shell');\n    if (nav) { nav.style.display = 'none'; }\n  }\n\n  function buildNav(navItems){\n    var nav = root.querySelector('.rbs-ser-nav-shell');\n    var linksBox = root.querySelector('.rbs-ser-nav-links');\n    if (!nav) { return; }\n    if (!linksBox) { return; }\n    nav.style.top = NAV_OFFSET + 'px';\n    linksBox.innerHTML = '';\n    if (navItems.length === 0) { nav.style.display = 'none'; return; }\n    NAV_ITEMS = navItems;\n\n    for (var i = 0; i < navItems.length; i++) {\n      var link = el('a', 'rbs-ser-nav-a', navItems[i].label);\n      link.href = '#' + navItems[i].id;\n      link.setAttribute('data-row', navItems[i].id);\n      linksBox.appendChild(link);\n    }\n\n    function syncOffset(){\n      var pad = NAV_OFFSET + navHeight() + 12;\n      for (var j = 0; j < navItems.length; j++) {\n        var row = document.getElementById(navItems[j].id);\n        if (row) { row.style.scrollMarginTop = pad + 'px'; }\n      }\n    }\n    SYNC_OFFSET = syncOffset;\n    syncOffset();\n    window.addEventListener('resize', syncOffset);\n    \/\/ \u8f09\u5165\u7576\u4e0b\u5148\u91cf\u4e00\u6b21\uff1b\u6372\u52d5\u8207\u6539\u8b8a\u8996\u7a97\u5927\u5c0f\u6642\u518d\u91cd\u91cf\uff08\u6709\u4e9b\u9801\u6372\u52d5\u5f8c\u624d\u8b8a fixed\uff0c\n    \/\/ \u624b\u6a5f\u8207\u684c\u6a5f\u7684\u9801\u9996\u9ad8\u5ea6\u4e5f\u4e0d\u540c\uff09\u3002\u91cf\u5230\u8ddf\u4e0a\u6b21\u4e00\u6a23\u5c31\u76f4\u63a5 return\uff0c\u4e0d\u6703\u7a7a\u8f49\u3002\n    applyNavOffset();\n    window.addEventListener('scroll', applyNavOffset, {passive:true});\n    window.addEventListener('resize', applyNavOffset);\n\n    linksBox.addEventListener('click', function(event){\n      var link = event.target.closest('.rbs-ser-nav-a');\n      if (!link) { return; }\n      event.preventDefault();\n      var target = document.getElementById(link.getAttribute('data-row'));\n      if (!target) { return; }\n      \/\/ \u9801\u9762\u5c3e\u7aef\u90a3\u5e7e\u5217\u6372\u4e0d\u5230\u5c0e\u89bd\u5217\u6b63\u4e0b\u65b9\uff08\u9801\u9762\u9577\u5ea6\u4e0d\u5920\uff0c\u6372\u5230\u5e95\u5c31\u505c\u4e86\uff09\uff0c\n      \/\/ \u9019\u6642 scroll spy \u6703\u8aa4\u5224\u6210\u300c\u9084\u505c\u5728\u4e2d\u9593\u90a3\u4e00\u5217\u300d\u3002\u9ede\u64ca\u6642\u76f4\u63a5\u9396\u4f4f\u9ad8\u4eae\uff0c\n      \/\/ \u4f7f\u7528\u8005\u81ea\u5df1\u52d5\u6372\u8ef8\u624d\u89e3\u9396\uff0c\u5426\u5247\u9ede\u6700\u5f8c\u5169\u96c6\u6703\u770b\u5230\u4eae\u932f\u9846\u3002\n      LOCKED_NAV = link.getAttribute('data-row');\n      target.scrollIntoView({behavior:'smooth',block:'start'});\n      link.scrollIntoView({behavior:'smooth',block:'nearest',inline:'center'});\n      paintNav();\n    });\n  }\n\n  \/\/ \u76ee\u524d\u8a72\u4eae\u54ea\u4e00\u9846\u3002\u9ede\u64ca\u9396\u5b9a > \u6372\u5230\u5e95\u6642\u7b97\u6700\u5f8c\u4e00\u9805 > \u4e00\u822c\u60c5\u6cc1\u770b\u5224\u5b9a\u7dda\u3002\n  function currentNavId(){\n    if (LOCKED_NAV) { return LOCKED_NAV; }\n    var y = window.scrollY;\n    var maxY = document.documentElement.scrollHeight - window.innerHeight;\n    if (NAV_ITEMS.length === 0) { return ''; }\n    \/\/ \u6372\u5230\u5e95\u6642\uff0c\u756b\u9762\u4e0a\u770b\u5230\u7684\u5c31\u662f\u6700\u5f8c\u5e7e\u5217\uff0c\u5224\u5b9a\u7dda\u537b\u9084\u58d3\u5728\u4e2d\u9593\u90a3\u5217\u4e0a\uff0c\n    \/\/ \u6703\u4e00\u8def\u4eae\u8457\u932f\u7684\u90a3\u9846\u76f4\u5230\u9801\u5c3e\u3002\u5230\u5e95\u5c31\u76f4\u63a5\u7b97\u6700\u5f8c\u4e00\u9805\u3002\n    if (y >= maxY - 2) { return NAV_ITEMS[NAV_ITEMS.length - 1].id; }\n    var line = y + NAV_OFFSET + navHeight() + 20;\n    var current = '';\n    for (var i = 0; i < NAV_ITEMS.length; i++) {\n      var row = document.getElementById(NAV_ITEMS[i].id);\n      if (!row) { continue; }\n      var top = row.getBoundingClientRect().top + y;\n      if (top <= line) { current = NAV_ITEMS[i].id; }\n    }\n    return current;\n  }\n\n  function paintNav(){\n    var links = root.querySelectorAll('.rbs-ser-nav-a');\n    var current = currentNavId();\n    for (var j = 0; j < links.length; j++) {\n      if (links[j].getAttribute('data-row') === current) { links[j].classList.add('on'); }\n      else { links[j].classList.remove('on'); }\n    }\n  }\n\n  function bindScroll(){\n    var topButton = root.querySelector('.rbs-ser-top');\n    var ticking = false;\n    if (!topButton) { return; }\n    topButton.addEventListener('click', function(){\n      LOCKED_NAV = '';\n      window.scrollTo({top:0,behavior:'smooth'});\n    });\n\n    \/\/ \u4f7f\u7528\u8005\u81ea\u5df1\u52d5\u6372\u8ef8\u5c31\u89e3\u9664\u9ede\u64ca\u9396\u5b9a\uff0c\u8b93\u9ad8\u4eae\u56de\u5230\u8ddf\u8457\u756b\u9762\u8d70\u3002\n    function unlock(){ LOCKED_NAV = ''; }\n    window.addEventListener('wheel', unlock, {passive:true});\n    window.addEventListener('touchstart', unlock, {passive:true});\n    window.addEventListener('keydown', unlock);\n\n    function update(){\n      ticking = false;\n      var y = window.scrollY;\n      if (y > TOP_BTN_AFTER) { topButton.classList.add('on'); }\n      else { topButton.classList.remove('on'); }\n      paintNav();\n    }\n\n    window.addEventListener('scroll', function(){\n      if (ticking) { return; }\n      ticking = true;\n      window.requestAnimationFrame(update);\n    }, {passive:true});\n    update();\n  }\n\n  \/\/ \u5728\u7de8\u8f2f\u5668\u88e1\u589e\u522a Cover \u7684 <img> \u6703\u8b93 Gutenberg \u7684\u5340\u584a\u72c0\u614b\u5c0d\u4e0d\u4e0a\uff0c\u53ea\u5728\u524d\u53f0\u505a\u3002\n  if (!IN_EDITOR) { applyBanner(); }\n\n  var slot = root.querySelector('.rbs-ser-slot');\n\n  Promise.all([fetchStartTagId(), fetchCategory()]).then(function(head){\n    var startTagId = head[0];\n    var cat = head[1];\n    if (!cat) {\n      if (slot) {\n        slot.innerHTML = '';\n        slot.appendChild(el('div', 'rbs-ser-err', '\u627e\u4e0d\u5230\u5206\u985e\u4ee3\u865f\u300c' + CFG.cat + '\u300d\uff0c\u8acb\u6aa2\u67e5\u9801\u9762\u6700\u4e0a\u65b9\u8a2d\u5b9a\u5340\u3002'));\n      }\n      hideNav();\n      return null;\n    }\n    return fetchPosts(cat).then(function(result){\n      return {startTagId: startTagId, result: result};\n    });\n  }).then(function(bundle){\n    if (!bundle) { return; }\n    if (!slot) { return; }\n    var result = bundle.result;\n    slot.innerHTML = '';\n\n    if (result.error) {\n      slot.appendChild(el('div', 'rbs-ser-err', '\u6587\u7ae0\u8f09\u5165\u5931\u6557\uff0c\u8acb\u91cd\u65b0\u6574\u7406\u9801\u9762\u3002'));\n      hideNav();\n      return;\n    }\n    if (result.posts.length === 0) {\n      slot.appendChild(el('div', 'rbs-ser-err', '\u9019\u500b\u5206\u985e\u76ee\u524d\u6c92\u6709\u6587\u7ae0\u3002'));\n      hideNav();\n      return;\n    }\n\n    var built = renderList(result.posts, bundle.startTagId);\n    slot.appendChild(built.box);\n\n    var postsNumber = root.querySelector('.rbs-ser-n-posts');\n    if (postsNumber) { postsNumber.textContent = result.posts.length; }\n    var startNumber = root.querySelector('.rbs-ser-n-start');\n    if (startNumber) {\n      if (built.navItems.length > 0) { startNumber.textContent = built.navItems[0].label; }\n    }\n\n    buildNav(built.navItems);\n    bindScroll();\n    root.classList.add('rbs-ser-ready');\n  });\n})();\n<\/script>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":9,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_gspb_post_css":"","footnotes":""},"class_list":["post-6139","page","type-page","status-publish","hentry"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"acf":[],"_links":{"self":[{"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/pages\/6139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/comments?post=6139"}],"version-history":[{"count":4,"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/pages\/6139\/revisions"}],"predecessor-version":[{"id":6155,"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/pages\/6139\/revisions\/6155"}],"wp:attachment":[{"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/media?parent=6139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}