{"id":6198,"date":"2026-09-18T13:06:25","date_gmt":"2026-09-18T05:06:25","guid":{"rendered":"https:\/\/rubasseroasters.com\/?page_id=6198"},"modified":"2026-09-18T13:12:05","modified_gmt":"2026-09-18T05:12:05","slug":"previous-exhibitions-tcf-en","status":"publish","type":"page","link":"https:\/\/rubasseroasters.com\/zh\/previous-exhibitions-tcf-en\/","title":{"rendered":"Previous Exhibitions TCF"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u5c55\u540d\uff1aTCF<br>\u82f1\u6587\uff1aTHAILAND COFFEE FEST<br>\u5206\u985e\uff1aOverseas<br>\u5730\u9ede\uff1aThailand<br>\u7c21\u4ecb\uff1aA record of our participation in Thailand Coffee Fest, featuring coffee roasters, roasting technology, and exchange with Thailand\u2019s coffee community.<br>\u4e3b\u5716\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgFNnLYb.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgFNnLYb.webp<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ecb\u7d39\uff1aThailand Coffee Fest is one of Thailand\u2019s major coffee industry events, bringing together coffee brands, caf\u00e9s, roasters, equipment manufacturers, and coffee professionals from across the industry.<br>\u4ecb\u7d39\uff1aThe exhibition focuses on coffee roasters and roasting technology, with hands-on demonstrations, machine introductions, and technical discussions that allow visitors to better understand their features, operation, and practical applications.<br>\u4ecb\u7d39\uff1aParticipating in Thailand Coffee Fest also provides an important opportunity to connect with coffee professionals in Thailand and Southeast Asia, while gaining deeper insights into local market needs, applications, and industry developments.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u91cd\u9ede\uff1aHands-on Coffee Roaster Experience<br>\u91cd\u9ede\uff1aLive Roasting &amp; Coffee Tasting<br>\u91cd\u9ede\uff1aEvent-Exclusive Offers<br>\u91cd\u9ede\uff1aDistributor &amp; Partnership Opportunities<br>\u91cd\u9ede\uff1aNew Coffee Roaster Showcase &amp; Latest Technology<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5217\u8868\uff1a<a href=\"https:\/\/rubasseroasters.com\/previous-exhibitions-en\/\">https:\/\/rubasseroasters.com\/previous-exhibitions-en\/<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e74\u4efd\uff1a2021<br>\u5834\u5730\uff1aThailand<br>\u8aaa\u660e\uff1a<br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgFNnLYb.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgFNnLYb.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgzMW7da.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgzMW7da.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgRBdwn1.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgRBdwn1.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgb6gtB5.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgb6gtB5.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgijaoRx.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgijaoRx.webp<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e74\u4efd\uff1a2023<br>\u5834\u5730\uff1aThailand<br>\u8aaa\u660e\uff1a<br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimg9rt1YE.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimg9rt1YE.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgqq5eJ1.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgqq5eJ1.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgbaIzQt.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgbaIzQt.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgbLVoNx.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgbLVoNx.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgGJIvOv.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgGJIvOv.webp<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e74\u4efd\uff1a2025<br>\u5834\u5730\uff1aThailand<br>\u8aaa\u660e\uff1a<br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimglffrbp.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimglffrbp.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgAFM7gB.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgAFM7gB.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgBJrnXH.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgBJrnXH.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgaDrStV.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgaDrStV.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgFKAe7u.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgFKAe7u.webp<\/a><\/p>\n\n\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     \u55ae\u4e00\u5c55\u89bd\u8a73\u60c5\u9801 \u986f\u793a\u7a0b\u5f0f\uff5c\u8cbc\u9032 WordPress \u7684\u300c\u81ea\u8a02 HTML \/ Custom HTML\u300d\u5340\u584a\n     \u9019\u500b\u5340\u584a\u8981\u653e\u5728\u300c\u6587\u5b57\u5340\u584a\u300d\u7684\u4e0b\u9762\u3002\u8a2d\u5b9a\u4e00\u6b21\u5c31\u597d\uff0c\u4e4b\u5f8c\u90fd\u4e0d\u7528\u518d\u52d5\u5b83\u3002\n     \u8981\u6539\u5167\u5bb9\u8acb\u6539\u4e0a\u9762\u90a3\u500b\u6587\u5b57\u5340\u584a\uff08\u7bc4\u672c\uff1adetail-text-content.txt\uff09\u3002\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<style>\n.rbxd{--rbxd-c:#b58650;--rbxd-d:#202020;--rbxd-m:#77716a;--rbxd-l:#ded9d1;--rbxd-s:#eee7dd;max-width:1240px;margin:0 auto;padding:34px 22px 90px;color:var(--rbxd-d);font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Noto Sans TC\",\"Microsoft JhengHei\",sans-serif}\n.rbxd *{box-sizing:border-box}\n.rbxd button{font:inherit}\n\n\/* \u5171\u7528\u5143\u4ef6 *\/\n.rbxd .rbxd-kicker{margin:0 0 8px;color:#76502d;font-size:12px;font-weight:700;letter-spacing:.16em}\n.rbxd .rbxd-title{margin:0;font-size:clamp(34px,5vw,58px);line-height:1.08}\n.rbxd .rbxd-lead{max-width:680px;margin:16px 0 0;color:var(--rbxd-m);line-height:1.8}\n.rbxd .rbxd-pill{display:inline-block;padding:6px 10px;border-radius:99px;background:var(--rbxd-s);color:#76502d;font-size:11px;font-weight:700;letter-spacing:.08em}\n.rbxd .rbxd-btn{display:inline-flex;align-items:center;gap:7px;color:var(--rbxd-d);font-size:14px;font-weight:700;text-decoration:none}\n.rbxd .rbxd-btn:hover{color:#76502d}\n.rbxd .rbxd-photo{position:relative;overflow:hidden;border-radius:20px;background:linear-gradient(135deg,rgba(181,134,80,.16),rgba(255,255,255,.25)),repeating-linear-gradient(45deg,#ece8e1,#ece8e1 14px,#e3ded6 14px,#e3ded6 28px)}\n.rbxd .rbxd-photo.is-empty::after{content:\"\u7167\u7247\u9810\u7559\u5340\";position:absolute;top:14px;right:14px;padding:6px 10px;border-radius:99px;background:rgba(255,255,255,.86);color:var(--rbxd-m);font-size:11px}\n.rbxd .rbxd-photo .rbxd-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;margin:0;max-width:none;border-radius:inherit}\n\n\/* Hero *\/\n.rbxd .rbxd-hero{display:grid;grid-template-columns:1fr 1.05fr;gap:34px;align-items:center}\n.rbxd .rbxd-hero .rbxd-photo{min-height:420px}\n.rbxd .rbxd-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}\n\n\/* \u4e8b\u5be6\u5217 *\/\n.rbxd .rbxd-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin:38px 0 0;border:1px solid var(--rbxd-l);border-radius:18px;background:var(--rbxd-l);overflow:hidden}\n.rbxd .rbxd-fact{padding:20px 22px;background:#fff}\n.rbxd .rbxd-fact dt{margin:0 0 7px;color:var(--rbxd-m);font-size:12px;letter-spacing:.06em}\n.rbxd .rbxd-fact dd{margin:0;font-size:20px;font-weight:700}\n\n\/* \u5340\u6bb5\u6a19\u982d *\/\n.rbxd .rbxd-sec{margin-top:62px}\n.rbxd .rbxd-sec-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--rbxd-l)}\n.rbxd .rbxd-sec-head h2{margin:0;font-size:26px;line-height:1.3}\n.rbxd .rbxd-sec-head p{margin:0;color:var(--rbxd-m);font-size:13px}\n\n\/* \u4ecb\u7d39\u6587\uff0b\u5074\u6b04 *\/\n.rbxd .rbxd-intro{display:grid;grid-template-columns:1fr 320px;gap:34px;margin-top:24px}\n.rbxd .rbxd-intro.is-solo{grid-template-columns:1fr}\n.rbxd .rbxd-intro p{margin:0 0 16px;line-height:1.9;color:#3c3a36}\n.rbxd .rbxd-side{padding:22px;border:1px solid var(--rbxd-l);border-radius:18px;align-self:start}\n.rbxd .rbxd-side h3{margin:0 0 14px;font-size:15px}\n.rbxd .rbxd-side ul{margin:0;padding-left:18px;color:var(--rbxd-m);line-height:1.9;font-size:14px}\n\n\/* \u5e74\u4efd\u5207\u63db *\/\n.rbxd .rbxd-years{display:flex;flex-wrap:wrap;gap:9px;margin:24px 0 22px}\n.rbxd .rbxd-years button{padding:9px 16px;border:1px solid var(--rbxd-l);border-radius:99px;background:#fff;color:var(--rbxd-d);cursor:pointer}\n.rbxd .rbxd-years button:hover{border-color:var(--rbxd-c);color:#76502d}\n.rbxd .rbxd-years button.is-on{border-color:var(--rbxd-c);background:var(--rbxd-c);color:#fff}\n\n\/* \u55ae\u4e00\u5e74\u4efd\u5167\u5bb9 *\/\n.rbxd .rbxd-year-head{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px}\n.rbxd .rbxd-year-head h3{margin:0;font-size:22px;line-height:1.3}\n.rbxd .rbxd-venue{color:var(--rbxd-m);font-size:14px}\n.rbxd .rbxd-note{margin:0 0 22px;max-width:760px;color:var(--rbxd-m);line-height:1.85}\n\n\/* \u7167\u7247\u7246\uff1a\u4e00\u5f35\u4e3b\u5716 + \u56db\u5f35\u5c0f\u5716 *\/\n.rbxd .rbxd-gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}\n.rbxd .rbxd-gallery .rbxd-photo{min-height:180px}\n.rbxd .rbxd-gallery .rbxd-photo:first-child{grid-column:span 2;grid-row:span 2;min-height:374px}\n\n\/* \u9801\u5c3e\u5c0e\u89bd *\/\n.rbxd .rbxd-nav{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin-top:56px;padding-top:26px;border-top:1px solid var(--rbxd-l)}\n.rbxd .rbxd-go{display:inline-block;padding:12px 20px;border-radius:99px;background:var(--rbxd-d);color:#fff;text-decoration:none;font-size:13px;font-weight:700}\n.rbxd .rbxd-go:hover{background:#000;color:#fff}\n.rbxd .rbxd-nav-side{display:flex;flex-wrap:wrap;gap:18px}\n\n.rbxd-warn{max-width:1240px;margin:0 auto;padding:18px 22px;border-left:4px solid #c0392b;background:#fdf1f0;color:#7a2018;font-family:-apple-system,BlinkMacSystemFont,\"Noto Sans TC\",sans-serif;line-height:1.8}\n\n@media(max-width:980px){\n  .rbxd .rbxd-hero{grid-template-columns:1fr}\n  .rbxd .rbxd-hero .rbxd-photo{min-height:300px;order:-1}\n  .rbxd .rbxd-intro{grid-template-columns:1fr}\n  .rbxd .rbxd-facts{grid-template-columns:repeat(2,1fr)}\n}\n@media(max-width:650px){\n  .rbxd{padding:24px 16px 64px}\n  .rbxd .rbxd-facts{grid-template-columns:1fr}\n  .rbxd .rbxd-gallery{grid-template-columns:repeat(2,1fr)}\n  .rbxd .rbxd-gallery .rbxd-photo:first-child{grid-column:span 2;grid-row:auto;min-height:220px}\n}\n<\/style>\n\n<script>\n(function () {\n'use strict';\n\nvar MAX_PHOTOS = 5;   \/* \u6bcf\u5e74\u6700\u591a\u986f\u793a 5 \u5f35\uff08\u4e00\u5927\u56db\u5c0f\uff09\uff0c\u591a\u586b\u7684\u4e0d\u986f\u793a *\/\n\nvar me = document.currentScript;\nif (!me) return;\n\n\/* \u2500\u2500 1. \u627e\u51fa\u4e0a\u65b9\u7684\u6587\u5b57\u5340\u584a\u4e26\u8b80\u53d6\u5167\u5bb9 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\n\/\/ \u4e00\u884c\u8cc7\u6599\u9577\u9019\u6a23\uff1a\u300c\u5e74\u4efd\uff1a2026\u300d\u6216\u300c\u7167\u7247\uff1ahttps:\/\/...\u300d\nvar LINE = \/^(?:\\d+(?:\\.\\d+)?\\s*[.\u3001)]?\\s*)?([^\uff1a:]{1,8})\\s*[\uff1a:]\\s*([\\s\\S]*)$\/;\nvar KEYS = {\n\t'\u5c55\u540d': 'name', '\u82f1\u6587': 'en', '\u5206\u985e': 'category', '\u5730\u9ede': 'city',\n\t'\u7c21\u4ecb': 'lead', '\u4e3b\u5716': 'hero', '\u4ecb\u7d39': 'intro', '\u91cd\u9ede': 'point',\n\t'\u5217\u8868': 'back', '\u4e0a\u4e00\u500b': 'prev', '\u4e0b\u4e00\u500b': 'next',\n\t'\u5e74\u4efd': '_year', '\u5834\u5730': 'venue', '\u8aaa\u660e': 'note', '\u7167\u7247': 'photo'\n};\nvar YEAR_KEYS = { venue: 1, note: 1, photo: 1 };\n\nfunction collectFrom(node) {\n\tvar els = [], text = [];\n\tvar p = node.previousElementSibling;\n\twhile (p) {\n\t\tvar t = (p.innerText || p.textContent || '');\n\t\tvar hit = t.split(\/\\r?\\n\/).some(function (l) {\n\t\t\tvar m = l.trim().match(LINE);\n\t\t\treturn m && KEYS.hasOwnProperty(m[1].trim());\n\t\t});\n\t\tif (hit) { els.unshift(p); text.unshift(t); }\n\t\telse if (els.length) break;   \/\/ \u5df2\u7d93\u6536\u5230\u8cc7\u6599\u4e86\uff0c\u9047\u5230\u4e0d\u76f8\u95dc\u7684\u5c31\u505c\n\t\tp = p.previousElementSibling;\n\t}\n\treturn { els: els, text: text.join('\\n') };\n}\n\nvar src = collectFrom(me);\nif (!src.els.length && me.parentElement) src = collectFrom(me.parentElement);\n\nfunction warn(html) {\n\tvar w = document.createElement('div');\n\tw.className = 'rbxd-warn';\n\tw.innerHTML = html;\n\tme.parentNode.insertBefore(w, me);\n}\n\nif (!src.els.length) {\n\twarn('<strong>\u627e\u4e0d\u5230\u5c55\u89bd\u8cc7\u6599\u3002<\/strong><br>'\n\t\t+ '\u8acb\u78ba\u8a8d\u300c\u81ea\u8a02 HTML\u300d\u5340\u584a\u7684<strong>\u4e0a\u65b9<\/strong>\u6709\u4e00\u500b\u6587\u5b57\u5340\u584a\uff0c'\n\t\t+ '\u800c\u4e14\u88e1\u9762\u7684\u6bcf\u4e00\u884c\u90fd\u662f\u300c\u9805\u76ee\uff1a\u5167\u5bb9\u300d\u7684\u683c\u5f0f\uff08\u4f8b\u5982\u300c\u5c55\u540d\uff1a\u53f0\u4e2d\u5c55\u300d\uff09\u3002');\n\treturn;\n}\n\n\/* \u2500\u2500 2. \u89e3\u6790 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\nfunction parse(text) {\n\tvar data = { name: '', en: '', category: '', city: '', lead: '', hero: '',\n\t             intro: [], points: [], back: '', prev: '', next: '', years: [] };\n\tvar cur = null;\n\n\ttext.split(\/\\r?\\n\/).forEach(function (raw) {\n\t\tvar line = raw.replace(\/ \/g, ' ').trim();\n\t\tif (!line) return;\n\t\tvar m = line.match(LINE);\n\t\tif (!m) return;\n\n\t\tvar field = KEYS[m[1].trim()];\n\t\tvar val = m[2].trim();\n\t\tif (!field) return;\n\n\t\tif (field === '_year') {\n\t\t\tvar y = (val.match(\/\\d{4}\/) || [''])[0];\n\t\t\tif (!y) return;                       \/\/ \u6c92\u6709\u56db\u4f4d\u6578\u5e74\u4efd\u5c31\u7576\u5b83\u4e0d\u662f\u5e74\u4efd\u884c\n\t\t\tcur = { y: y, venue: '', note: '', photos: [] };\n\t\t\tdata.years.push(cur);\n\t\t\treturn;\n\t\t}\n\n\t\t\/* \u5e74\u4efd\u5e95\u4e0b\u624d\u6709\u610f\u7fa9\u7684\u6b04\u4f4d\uff0c\u6c92\u958b\u5e74\u4efd\u5340\u584a\u5c31\u5ffd\u7565 *\/\n\t\tif (YEAR_KEYS[field]) {\n\t\t\tif (!cur || !val) return;\n\t\t\tif (field === 'photo') cur.photos.push(val);\n\t\t\telse cur[field] = val;\n\t\t\treturn;\n\t\t}\n\n\t\t\/* \u5176\u9918\u4e00\u5f8b\u7576\u6210\u6574\u9801\u5c64\u7d1a\u7684\u6b04\u4f4d\uff1b\u4ecb\u7d39\u8207\u91cd\u9ede\u53ef\u91cd\u8907\u3001\u4f9d\u5e8f\u7d2f\u52a0 *\/\n\t\tif (field === 'intro') { if (val) data.intro.push(val); }\n\t\telse if (field === 'point') { if (val) data.points.push(val); }\n\t\telse data[field] = val;\n\t});\n\n\t\/* \u5e74\u4efd\u7531\u65b0\u5230\u820a *\/\n\tdata.years.sort(function (a, b) { return Number(b.y) - Number(a.y); });\n\treturn data;\n}\n\nvar DATA = parse(src.text);\n\nif (!DATA.name && !DATA.years.length) {\n\twarn('<strong>\u8b80\u5230\u6587\u5b57\u4e86\uff0c\u4f46\u6c92\u6709\u627e\u5230\u5c55\u89bd\u5167\u5bb9\u3002<\/strong><br>'\n\t\t+ '\u8acb\u78ba\u8a8d\u6709\u300c<strong>\u5c55\u540d\uff1a<\/strong>\u300d\u9019\u4e00\u884c\uff0c\u6bcf\u500b\u5e74\u5ea6\u7528\u300c<strong>\u5e74\u4efd\uff1a<\/strong>\u300d\u958b\u982d\uff08\u4f8b\u5982\u300c\u5e74\u4efd\uff1a2026\u300d\uff09\u3002');\n\treturn;\n}\n\n\/* \u2500\u2500 3. \u7522\u751f\u756b\u9762 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\nfunction esc(s) {\n\treturn String(s == null ? '' : s)\n\t\t.replace(\/&\/g, '&amp;').replace(\/<\/g, '&lt;').replace(\/>\/g, '&gt;').replace(\/\"\/g, '&quot;');\n}\nfunction photoBox(url) {\n\treturn '<div class=\"rbxd-photo' + (url ? '' : ' is-empty') + '\">'\n\t\t+ (url ? '<img decoding=\"async\" class=\"rbxd-img\" src=\"' + esc(url) + '\" alt=\"\">' : '')\n\t\t+ '<\/div>';\n}\n\/* \u300c\u5357\u6e2f\u5c55|\/past-exhibitions\/nangang\/\u300d\u2192 \u6587\u5b57\u8207\u9023\u7d50 *\/\nfunction link(val) {\n\tif (!val) return null;\n\tvar parts = String(val).split('|');\n\tvar label = (parts[0] || '').trim();\n\tvar url = (parts[1] || '').trim();\n\tif (!label) return null;\n\treturn { label: label, url: url };\n}\n\nvar ys = DATA.years.map(function (r) { return r.y; });          \/\/ \u5df2\u7531\u65b0\u5230\u820a\nvar oldest = ys.length ? ys[ys.length - 1] : '';\nvar newest = ys.length ? ys[0] : '';\nvar span = ys.length ? (oldest === newest ? newest : oldest + '\u2013' + newest) : '';\n\nvar facts = [];\nif (span) facts.push(['Years', span]);\nif (ys.length) facts.push(['Exhibition', ys.length + ' Events']);\nif (DATA.city) facts.push(['Location', DATA.city]);\nif (DATA.category) facts.push(['Category', DATA.category]);\n\nvar prev = link(DATA.prev), next = link(DATA.next);\n\nvar box = document.createElement('div');\nbox.innerHTML =\n\t'<article class=\"rbxd\">'\n\n\t\/* Hero *\/\n\t+ '<header class=\"rbxd-hero\"><div>'\n\t+ (DATA.category ? '<div class=\"rbxd-tags\"><span class=\"rbxd-pill\">' + esc(DATA.category) + '<\/span><\/div>' : '')\n\t+ (DATA.en ? '<p class=\"rbxd-kicker\">' + esc(DATA.en) + '<\/p>' : '')\n\t+ '<h2 class=\"rbxd-title\">' + esc(DATA.name) + '<\/h2>'\n\t+ (DATA.lead ? '<p class=\"rbxd-lead\">' + esc(DATA.lead) + '<\/p>' : '')\n\t+ (ys.length ? '<p style=\"margin:22px 0 0\"><a class=\"rbxd-btn\" href=\"#rbxd-archive\">View Past Exhibition Photos \u2192<\/a><\/p>' : '')\n\t+ '<\/div>' + photoBox(DATA.hero) + '<\/header>'\n\n\t\/* \u4e8b\u5be6\u5217 *\/\n\t+ (facts.length\n\t\t? '<dl class=\"rbxd-facts\">' + facts.map(function (f) {\n\t\t\treturn '<div class=\"rbxd-fact\"><dt>' + esc(f[0]) + '<\/dt><dd>' + esc(f[1]) + '<\/dd><\/div>';\n\t\t}).join('') + '<\/dl>'\n\t\t: '')\n\n\t\/* \u95dc\u65bc\u9019\u500b\u5c55\u6703 *\/\n\t+ (DATA.intro.length || DATA.points.length\n\t\t? '<section class=\"rbxd-sec\">'\n\t\t\t+ '<div class=\"rbxd-sec-head\"><h2>About the Exhibition<\/h2><p>ABOUT<\/p><\/div>'\n\t\t\t+ '<div class=\"rbxd-intro' + (DATA.points.length ? '' : ' is-solo') + '\"><div>'\n\t\t\t+ DATA.intro.map(function (p) { return '<p>' + esc(p) + '<\/p>'; }).join('')\n\t\t\t+ '<\/div>'\n\t\t\t+ (DATA.points.length\n\t\t\t\t? '<aside class=\"rbxd-side\"><h3>Exhibition Highlights<\/h3><ul>'\n\t\t\t\t\t+ DATA.points.map(function (p) { return '<li>' + esc(p) + '<\/li>'; }).join('')\n\t\t\t\t\t+ '<\/ul><\/aside>'\n\t\t\t\t: '')\n\t\t\t+ '<\/div><\/section>'\n\t\t: '')\n\n\t\/* \u6b77\u5e74\u7d00\u9304 *\/\n\t+ (ys.length\n\t\t? '<section class=\"rbxd-sec\" id=\"rbxd-archive\">'\n\t\t\t+ '<div class=\"rbxd-sec-head\"><h2>PAST EXHIBITIONS<\/h2><p>ARCHIVE<\/p><\/div>'\n\t\t\t+ '<div class=\"rbxd-years\" role=\"group\" aria-label=\"\u5207\u63db\u5e74\u4efd\">'\n\t\t\t+ DATA.years.map(function (r, i) {\n\t\t\t\treturn '<button type=\"button\" data-i=\"' + i + '\"'\n\t\t\t\t\t+ (i === 0 ? ' class=\"is-on\" aria-pressed=\"true\"' : ' aria-pressed=\"false\"')\n\t\t\t\t\t+ '>' + esc(r.y) + '<\/button>';\n\t\t\t}).join('')\n\t\t\t+ '<\/div><div class=\"rbxd-year-body\"><\/div><\/section>'\n\t\t: '')\n\n\t\/* \u9801\u5c3e\u5c0e\u89bd *\/\n\t+ ((DATA.back || prev || next)\n\t\t? '<nav class=\"rbxd-nav\">'\n\t\t\t+ (DATA.back ? '<a class=\"rbxd-go\" href=\"' + esc(DATA.back) + '\">\u2190 Back to Exhibition Archive<\/a>' : '<span><\/span>')\n\t\t\t+ '<div class=\"rbxd-nav-side\">'\n\t\t\t+ (prev ? '<a class=\"rbxd-btn\" href=\"' + esc(prev.url || '#') + '\">\u4e0a\u4e00\u500b\uff1a' + esc(prev.label) + '<\/a>' : '')\n\t\t\t+ (next ? '<a class=\"rbxd-btn\" href=\"' + esc(next.url || '#') + '\">\u4e0b\u4e00\u500b\uff1a' + esc(next.label) + ' \u2192<\/a>' : '')\n\t\t\t+ '<\/div><\/nav>'\n\t\t: '')\n\n\t+ '<\/article>';\n\nvar article = box.firstChild;\n\n\/* \u628a\u539f\u59cb\u6587\u5b57\u85cf\u8d77\u4f86\uff0c\u63db\u4e0a\u6392\u7248\u597d\u7684\u5167\u5bb9 *\/\nsrc.els[0].parentNode.insertBefore(article, src.els[0]);\nsrc.els.forEach(function (el) { el.style.display = 'none'; });\n\n\/* \u2500\u2500 4. \u5e74\u4efd\u5207\u63db \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\nvar tabs = article.querySelector('.rbxd-years');\nvar body = article.querySelector('.rbxd-year-body');\nif (!tabs || !body) return;\n\nfunction draw(i) {\n\tvar r = DATA.years[i];\n\tif (!r) return;\n\t\/* \u56fa\u5b9a 5 \u683c\uff08\u4e00\u5927\u56db\u5c0f\uff09\uff1a\u591a\u586b\u7684\u4e0d\u986f\u793a\uff0c\u9084\u6c92\u586b\u7684\u7559\u300c\u7167\u7247\u9810\u7559\u5340\u300d\u4f54\u4f4d *\/\n\tvar shots = r.photos.slice(0, MAX_PHOTOS);\n\twhile (shots.length < MAX_PHOTOS) shots.push('');\n\n\tbody.innerHTML =\n\t\t'<div class=\"rbxd-year-head\"><h3>' + esc(r.y + ' ' + DATA.name) + '<\/h3>'\n\t\t+ (r.venue ? '<span class=\"rbxd-venue\">' + esc(r.venue) + '<\/span>' : '')\n\t\t+ '<\/div>'\n\t\t+ (r.note ? '<p class=\"rbxd-note\">' + esc(r.note) + '<\/p>' : '')\n\t\t+ '<div class=\"rbxd-gallery\">' + shots.map(photoBox).join('') + '<\/div>';\n}\n\ntabs.addEventListener('click', function (e) {\n\tvar btn = e.target.closest ? e.target.closest('button[data-i]') : null;\n\tif (!btn) return;\n\tArray.prototype.forEach.call(tabs.querySelectorAll('button[data-i]'), function (b) {\n\t\tvar on = b === btn;\n\t\tb.classList.toggle('is-on', on);\n\t\tb.setAttribute('aria-pressed', on ? 'true' : 'false');\n\t});\n\tdraw(Number(btn.getAttribute('data-i')));\n});\n\ndraw(0);\n\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u5c55\u540d\uff1aTCF\u82f1\u6587\uff1aTHAILAND COFFEE FEST\u5206\u985e\uff1aOverseas\u5730\u9ede\uff1aThailand\u7c21\u4ecb\uff1aA record of our participation in Thailand Coffee Fest, featuring coffee roasters, roasting technology, and exchange with Thailand\u2019s coffee community.\u4e3b\u5716\uff1ahttps:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/09\/scimgFNnLYb.webp \u4ecb\u7d39\uff1aThailand Coffee Fest is one of Thailand\u2019s major coffee industry events, bringing together coffee brands, caf\u00e9s, roasters, equipment manufacturers, and coffee professionals from across the industry.\u4ecb\u7d39\uff1aThe exhibition focuses on coffee roasters and roasting [&hellip;]<\/p>\n","protected":false},"author":10,"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-6198","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\/6198","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\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/comments?post=6198"}],"version-history":[{"count":8,"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/pages\/6198\/revisions"}],"predecessor-version":[{"id":6211,"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/pages\/6198\/revisions\/6211"}],"wp:attachment":[{"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/media?parent=6198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}