阿鬼,這麼快就出 2.0 沒問題嗎?其實 2.0 跟 1.25 左右的版本分別不大,但也確實地感到 Ghost 2.0 在進化。

進化為什麼了?在我看來:

Ghost 己經進化成 Open Source 版的 Medium 了

相信 Medium 優雅美觀的界面令 Ghost 的開發者學習了不少。然後不論 Frontend 跟 Editor 也變到跟 Medium 一樣。相信可以吸引不少喜歡用 Medium 的作者用 Ghost 來做個人 Blog。

在 1.25 時 Ghost Editor 還是半成型的樣子,現在己經是跟 Medium 一樣了。

不過在按 + 後的 embed 選項有點多,跟 Medium 做成一個 embed 鍵再自動去偵測是什麼服務不就好了? (那就真的完全一樣子了)


由 1.x 升級

由於我的 Ghost 己經 docker 化了,己經沒必要用 ghost-cli,直接把 docker-compose.yml 的 ghost 版本編號改成最新版本,然後重啟 docker-compose 就完成升級。


Dynamic Routing

讓用家可以自訂 URL 的結構,不過還在 beta 中 (官方文件),大家可以在 Labs 中的 Routes 試用這個新功能,按 download 可以下載一份現在的設定來修改:


Routes

就是 routing,假設你更改了設定:

那麼 tag 入面有 news 的文章就會變成

  • https://blog.256pages.com/post -> https://blog.256pages.com/news/post

https://blog.256pages.com/news/ 也會變成只有 news 的文章

也可以加入單獨的 routing 給指定頁面使用:

routes:
  /: home
  /about/careers/: about-careers
  /about/team/: about-team

當你有相應名字 template 的時候,也會自動套用 template,沒有時都會用 default

  • https://blog.256pages.com/ -> home.hbs or index.hbs or default.hbs
  • https://blog.256pages.com/about/ -> about.hbs or default.hbs
  • https://blog.256pages.com/about/team/ -> about-team.hbs or default.hbs

Collections

就是不同類型的文章,預設的是 root 內所有文章,看起來有點像 Wordpress 中的 Permalink Setting

collections:
  /:
    permalink: /{slug}/ 
    template:
      - index

可以使用以下參數去自由組合 URL 的結構

  • {id} - 文章 ID
  • {slug} - 在 Post Setting 中設定的 Post URL
  • {year} - 4位數年份
  • {month} - 2位數月份
  • {day} - 2位數日期
  • {primary_tag} - 第一個 tag,也就是主要 tag
  • {primary_author} - 第一個作者

當你設定成這樣子:

collections:
  /podcast/:
    permalink: /podcast/{slug}/
  /vlog/:
    permalink: /vlog/{slug}/
    template: archives/video
  /:
    permalink: /{slug}/

設定 URL 也會跟 template 有關連

  • https://blog.256pages.com/podcast/
  • https://blog.256pages.com/podcast/page/2/podcast.hbs or index.hbs or default.hbs
  • https://blog.256pages.com/vlog/
  • https://blog.256pages.com/vlog/page/2/archives/video.hbs or index.hbs or default.hbs
  • https://blog.256pages.com/
  • https://blog.256pages.com/page/2home.hbs or index.hbs or default.hbs

Taxonomies

就是標籤的分類,基本設定有 tag 標廿一 跟 author 作者的分類

taxonomies:
  tag: /tag/{slug}/
  author: /author/{slug}/

跟 routes 及 collections 一樣也會跟名字相關的 template 有連動

  • https://blog.256pages.com/tag/technology/renders tag-technology.hbs or index.hbs or default.hbs
  • https://blog.256pages.com/tag/technology/page/2/renders tag-technology.hbs or index.hbs or default.hbs
  • https://blog.256pages.com/author/edmond-yip/renders author-edmond-yip.hbs or index.hbs or default.hbs
  • https://blog.256pages.com/author/edmond-yip/page/2/renders author-edmond-yip.hbs or index.hbs or default.hbs

Data

在 Dynamic Routing 中,可以利用 data 輕易地抽取一些 data 到頁面

collections:
  /games/:
    permalink: /games/{slug}/
    filter: 'tag:games'
    data:
      header: page.games
      curator: author.edmond

在這例子中,在 /games/ 條目下的頁面會自動由有 games 標籤的文章取出外,還會在 games.hbs 中收集兩個變數 games 頁面的 header 及 edmond作者的 curator ,然後加入 /games/ 的文章中用作標題或作者簡介。那麼只要更改 games page 或者 edmond author 頁面的內容,其他在 games.hbs 的內容也會更改。


後記

今次 2.0 更新當中, 測試功能 Dynamic Routing 明顯才是主角。看官方的 Roadmap 將會有 Multi-Language,以及多個利用 Dynamic Routing 實現的新功能,相信實裝之後,可以成為一下代取代 Wordpress 的 CMS 神器。