{"id":5746,"date":"2026-08-31T13:52:09","date_gmt":"2026-08-31T05:52:09","guid":{"rendered":"https:\/\/rubasseroasters.com\/?page_id=5746"},"modified":"2026-09-18T13:10:56","modified_gmt":"2026-09-18T05:10:56","slug":"rubasseroasters-com-previous-exhibitions-world-of-coffee-en","status":"publish","type":"page","link":"https:\/\/rubasseroasters.com\/zh\/rubasseroasters-com-previous-exhibitions-world-of-coffee-en\/","title":{"rendered":"Previous Exhibitions WORLD OF COFFEE"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u5c55\u540d\uff1aWOC<br>\u82f1\u6587\uff1aWORLD OF COFFEE<br>\u5206\u985e\uff1aOverseas<br>\u5730\u9ede\uff1aGermany \/ Denmark \/ Indonesia \/ Thailand<br>\u7c21\u4ecb\uff1aA record of our participation in World of Coffee, featuring coffee roaster showcases, roasting technology, and international industry exchange.<br>\u4e3b\u5716\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimg3XR7Hx.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimg3XR7Hx.webp<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ecb\u7d39\uff1aWorld of Coffee is one of our key opportunities to connect with the international coffee market, bringing together coffee brands, coffee roaster manufacturers, roasters, and industry professionals from different countries and regions.<br>\u4ecb\u7d39\uff1aWe focus on showcasing coffee roasters and roasting technology through hands-on demonstrations, product introductions, and technical discussions, allowing visitors to better understand their operation and practical applications.<br>\u4ecb\u7d39\uff1aParticipating in World of Coffee also gives us the opportunity to connect with coffee professionals worldwide and gain insights into international market needs 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\uff1a2026<br>\u5834\u5730\uff1aThailand<br>\u8aaa\u660e\uff1a<br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimg3XR7Hx.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimg3XR7Hx.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgJYZzj7.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgJYZzj7.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgY4uViW.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgY4uViW.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgQT2EXL.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgQT2EXL.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgDEuHYu.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgDEuHYu.webp<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e74\u4efd\uff1a2025<br>\u5834\u5730\uff1aIndonesia<br>\u8aaa\u660e\uff1a<br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgehxLfj.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgehxLfj.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgAfkcYP.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgAfkcYP.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimg54Dzt0.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimg54Dzt0.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgc266wt.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgc266wt.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimg5V9cbX.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimg5V9cbX.webp<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e74\u4efd\uff1a2024<br>\u5834\u5730\uff1aDenmark<br>\u8aaa\u660e\uff1a<br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgIfw1JX.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgIfw1JX.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgX9WyzR.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgX9WyzR.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgSfeD6A.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgSfeD6A.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgEywUqT.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgEywUqT.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgxyjlXv.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgxyjlXv.webp<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e74\u4efd\uff1a2019<br>\u5834\u5730\uff1aGermany<br>\u8aaa\u660e\uff1a<br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgmpZMvW.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgmpZMvW.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgtMnKih.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgtMnKih.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimg31uNsq.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimg31uNsq.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgS4n7CM.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgS4n7CM.webp<\/a><br>\u7167\u7247\uff1a<a href=\"https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgKoKEAk.webp\">https:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimgKoKEAk.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\uff1aWOC\u82f1\u6587\uff1aWORLD OF COFFEE\u5206\u985e\uff1aOverseas\u5730\u9ede\uff1aGermany \/ Denmark \/ Indonesia \/ Thailand\u7c21\u4ecb\uff1aA record of our participation in World of Coffee, featuring coffee roaster showcases, roasting technology, and international industry exchange.\u4e3b\u5716\uff1ahttps:\/\/rubasseroasters.com\/wp-content\/uploads\/2026\/08\/scimg3XR7Hx.webp \u4ecb\u7d39\uff1aWorld of Coffee is one of our key opportunities to connect with the international coffee market, bringing together coffee brands, coffee roaster manufacturers, roasters, and industry professionals from [&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-5746","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\/5746","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=5746"}],"version-history":[{"count":0,"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/pages\/5746\/revisions"}],"wp:attachment":[{"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/media?parent=5746"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}