部落格
與文件共用內容處理流程。預設啟用並附有測試文章,替換內容後即可發布。
Saavo 範本已內建部落格列表與文章頁面,並與文件系統共用 Content Collections 管理內容。部落格預設啟用,可以透過 /blog 顯示及瀏覽文章。
如果產品需要部落格,只要替換測試文章,再依支援的語言加入自己的內容即可。部落格採用檔案式內容管理,不需要獨立的 CMS,也沒有提供後台視覺化編輯器。
既有功能
範本初始化後,部落格路由預設已啟用:
| 功能 | 預設值 | 說明 |
|---|---|---|
| 開關 | enabled: true | config/deploy.ts → content.blog |
| 路由 | /blog | 列表,文章路徑為 /blog/:slug |
| 內容目錄 | /content/blog | 依語言分成子目錄 |
| 草稿狀態 | status: 'draft' | 不顯示於列表與 sitemap,但知道 URL 時仍可存取 |
啟用後會註冊下列路由:
/blog
/blog/:slug部落格頁面會依目前語言使用不同路徑。預設語言直接使用 /blog,其他語言則使用 /{code}/blog。啟用部落格後,已發布的文章會自動加入 Sitemap。
範本在 content/blog/en、content/blog/zh-Hans 與 content/blog/zh-Hant 中,各提供一篇 000_test-post.mdx,用來驗證列表與文章頁面。正式發布前,應替換或移除這些測試文章。
先體驗部落格
啟動開發伺服器後,開啟 /blog,應能看到預設語言的測試文章,並進入文章頁面。
切換至簡體中文或繁體中文後,也可以檢查對應的測試文章。如果不需要部落格,將 content.blog.enabled 設為 false,重新啟動後就不會再註冊 /blog。

設定部落格
設定位於 config/deploy.ts:
content: {
blog: {
enabled: true,
baseUrl: '/blog',
contentDir: '/content/blog',
},
}需要部落格時:
- 保持
enabled: true。 - 替換
content/blog/{locale}/中的測試文章,新增語言時建立對應目錄。 - 撰寫自己的 MDX,並維護對應的
meta.json。 - 執行
npm run dev預覽,必要時執行npm run gen:collections。
frontmatter 與文件類似,常見欄位包括 title、description,以及選用的 date、dateModified、imageUrl、tags、categories 與 author。status 可以是 draft、published、archived 或 featured。
目前列表只特別處理 draft 與 featured。draft 會被排除,featured 會進入精選區,其他狀態都會進入一般文章列表。因此,archived 目前不會隱藏文章。如果需要下架內容,請移除該文章,或修改列表與文章頁面的篩選邏輯。
文章 URL 只有一段 slug,不支援 /blog/category/post 這類多層路徑。排序前綴規則與文件相同,請參考文件系統。
如果不需要部落格,就停用這項功能,不要為了「以後可能會寫」而保留空白列表。
發布與管理文章
部落格是由內容驅動的頁面,沒有需要在 API 中個別呼叫的業務 service。
營運端需要做的是撰寫 MDX。列表頁會略過 draft,將 featured 顯示於精選區,並讓精選與一般文章分別依 date 由新到舊排列。如果產品頁面需要連到文章,使用已產生的 /blog/:slug 即可。
不要將產品更新記錄直接寫在 React 元件中,再當成部落格。Changelog 有自己的模組,部落格適合用來發布相對獨立的文章。
上線檢查
部落格屬於公開內容,上線前建議至少確認:
- 不需要部落格時,
enabled已設為false,無法存取/blog。 - 需要部落格時,每個啟用的語言都有內容,或你可以接受該語言缺少頁面。
- 列表可以開啟,也能透過已發布文章的 slug 直接進入文章。
- 草稿不會出現在列表與 sitemap,且未對外公開草稿 URL。
- 沒有誤用
archived隱藏文章,目前的實作仍會顯示此狀態的文章。 - 文章標題、說明與封面已換成自己的品牌內容,不再使用占位內容。
修改 enabled 後需要重新建置,因為 collections 會在建置時讀取設定。
常見問題
接下來
依接下來要開發的功能,可以繼續閱讀:
- 想撰寫文件而不是部落格 → 文件系統
- 想新增語言目錄 → 新增語言
- 想了解實際產品的資訊架構 → WebpageToPDF 實作教學
如果暫時沒有內容規劃,可以先停用部落格。
等有文章後再啟用,避免上線後出現空白的部落格頁面。