快速開始
hexo-theme-butterfly
是基於Molunerfinn的hexo-theme-melody的基礎上進行開發的。
文檔也是在hexo-theme-melody的文檔基礎上修改。因為一些配置變更導致與原主題配置上有部分區別。故如果安裝hexo-theme-butterfly
主題,請參考這篇文檔。
主題安裝和升級
安裝
在你的博客根目錄裏
1 |
git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/Butterfly |
如果想要安裝比較新的dev分支,可以
1 |
git clone -b div https://github.com/jerryc127/hexo-theme-butterfly.git themes/Butterfly |
應用主題
修改站點配置文件_config.yml
,把主題改為Butterfly
1 |
theme: Butterfly |
如果你沒有 pug 以及 stylus 的渲染器,請下載安裝:
npm install hexo-renderer-jade hexo-renderer-stylus --save
oryarn add hexo-renderer-jade hexo-renderer-stylus
平滑升級
為了主題的平滑升級, Butterfly
使用了 data files特性。
推薦把主題默認的配置文件_config.yml
複製到 Hexo 工作目錄下的source/_data/butterfly.yml
,如果source/_data
的目錄不存在那就創建一個。
注意,如果你創建了
butterfly.yml
, 它將會替換主題默認配置文件_config.yml
裏的配置項 (不是合併而是替換), 之後你就只需要通過git pull
的方式就可以平滑地升級theme-butterfly
了。
配置
配置文件説明
- 站點配置文件
_config.yml
是 hexo 工作目錄下的主配置文件 butterfly.yml
是Butterfly
的配置文件。它需要你手動將主題目錄下的_config.yml
文件複製到 hexo 工作目錄的source/_data/butterfly.yml
中。如果文件或者文件夾不存在,需要手動創建。
語言
修改站點配置文件 _config.yml
默認語言是 en
主題支持三種語言
- default(en)
- zh-CN (簡體中文)
- zh-TW (繁體中文)
自定義主題色
可以修改大部分UI顏色
配置butterfly.yml
,比如:
顏色值必須被雙引號包裹,就像
"#000"
而不是#000
。否則將會在構建的時候報錯!
1 |
theme_color: |

代碼高亮主題
Butterfly
支持了 Material Theme全部 5 種代碼高亮樣式:
- default
- darker
- pale night
- light
- ocean
配置butterfly.yml
1 |
highlight_theme: light |
default
darker
pale night
light
ocean
代碼複製
主題支持代碼複製功能
配置butterfly.yml
1 |
highlight_copy: true |
代碼換行
在默認情況下,hexo-highlight
在編譯的時候不會實現代碼自動換行。如果你不希望在代碼塊的區域裏有橫向滾動條的話,那麼你可以考慮開啟這個功能。
配置butterfly.yml
1 |
code_word_wrap: true |
然後找到你站點的 Hexo 配置文件_config.yml
,將line_number
改成false
:
1 |
highlight: |
設置
code_word_wrap
之前:
設置
code_word_wrap
之後:
社交圖標
Butterfly支持 font-awesome v4和 font-awesome v5. 如需開啟font-awesome v5,需要在Butterfly.yml
上開啟
1 |
cdn: |
無論V4還是V5,書寫格式都是一樣的圖標名:url
1 |
social: |
圖標名可在這尋找
PC:
Mobile:
導航菜單
配置butterfly.yml
1 |
menu: |
必須是
/xxx/
,後面||
分開,然後寫圖標名。菜單名稱可自己修改。
主頁文章節選(自動節選和文章頁description)
因為主題UI的關係,主頁文章節選
只支持自動節選
和文章頁description
。優先選擇自動節選
。
在butterfly.yml
裏可以開啟auto_excerpt
的選項,你的文章將會在自動截取部分顯示在主頁。(默認顯示150個字)。
1 |
auto_excerpt: |
如果沒有開啟自動節選
,則會顯示文章頁front-matter裏面設置的description
。
注意:如果開啟了自動節選功能,代碼塊的顯示將有可能不正常。
頂部圖
頂部圖
有2種配置:具體url 和(留空,true和false,三個效果一樣)
page頁
當具體url時
主頁的頂部圖可以在Butterfly.yml
設置top_img
archives頁的頂部圖可以在Butterfly.yml
設置archive_img
其他page
頁的頂部圖可以在各自的md頁面設置front-matter
中的top_img
除
主頁
外,其他頁面如果沒有設置各自的top_img
,則會顯示與主頁同樣的top_img
圖片
當頂部圖留空,true和false
主頁會顯示純顏色的頂部圖
其他page的頂部圖沒有設置時,也會顯示純顏色的頂部圖
post頁
post
頁的頂部圖會優先顯示各自front-matter
中的top_img
,如果沒有設置,則會縮略圖(即各自front-matter
中的cover
),如果沒有則會顯示默認的post頂部圖,可在Butterfly.yml
設置post_img
文章相關項
這個選項是用來顯示文章的相關信息的。
配置butterfly.yml
1 |
post_meta: |
在文章頂部的資料,
date_type
: 可設置文章日期顯示創建日期(created
)或者更新日期(updated
)或者兩種都顯示(both
)
categories
是否顯示分類
tags
是否顯示標籤
文章版權
為你的博客文章展示文章版權和許可協議。
配置butterfly.yml
1 |
post_copyright: |
文章打賞
在你每篇文章的結尾,可以添加打賞按鈕。相關二維碼可以自行配置
配置butterfly.yml
1 |
reward: |
文章封面
文章的markdown文檔上,在Front-matter
添加cover
,并填上要顯示的圖片地址。
如果不配置cover
,可以設置顯示默認的cover.
配置butterfly.yml
1 |
default_cover: https://cdn.jsdelivr.net/gh/jerryc127/[email protected]/cover/default_bg.png |
當配置多張圖片時,會隨機選擇一張作爲cover.此時寫法應爲
1 |
default_cover: |
頭像
配置butterfly.yml
1 |
avatar: https://xxxx/avatar.png |
TOC
在文章頁,會有一個目錄,用於顯示TOC
配置butterfly.yml
1 |
toc: |
為特定的文章配置是否顯示TOC和特定的目錄章節數字
在你的文章md
文件的頭部,加入toc_number
和toc
項,並配置true
或者false
即可。
toc
是否顯示文章TOC
toc_number
是否顯示章節數
配置之後你的特定的文章將會擁有它自己的目錄數字的顯示與否,而不會受全局的配置影響。
enable: true
number: false
設置是否自動打開TOC
可選擇進入文章頁面時,是否自動打開sidebar顯示TOC
1 |
auto_open_sidebar: |
博客年份
since
是一個來展示你站點起始時間的選項。它位於頁面的最底部。
配置butterfly.yml
1 |
since: 2018 |
頁腳自定義文本
footer_custom_text
是一個給你用來在頁腳自定義文本的選項。通常你可以在這裏寫聲明文本等。支持 HTML。
配置butterfly.yml
1 |
footer_custom_text: Hi, welcome to my <a href="https://jerryc.me/">blog</a>! |
ICP
對於部分有備案的域名,可以在ICP配置顯示。
配置butterfly.yml
1 |
ICP: |
夜間模式
右下角會有夜間模式按鈕
配置butterfly.yml
1 |
nightshift: |
閲讀模式
閲讀模式下會去掉除文章外的內容,避免幹擾閲讀。
只會出現在文章頁面,右下角會有閲讀模式按鈕。
配置butterfly.yml
1 |
readmode: |
簡繁轉換
簡體繁體互換
右下角會有簡繁轉換按鈕。
配置butterfly.yml
1 |
translate: |
簡體
繁體
運行時間
網頁已運行時間
配置butterfly.yml
1 |
runtimeshow: |
側邊排版
可自行決定哪個項目需要顯示
至少需要顯示一個
配置butterfly.yml
1 |
aside: |
相關文章
相關文章推薦的原理是根據文章tags的比重來推薦
配置butterfly.yml
1 |
related_post: |
自定義字體
可自行設置字體的font-family
配置butterfly.yml
1 |
font: |
網站副標題
可設置主頁中顯示的網站副標題或者喜歡的座右銘。
配置butterfly.yml
1 |
subtitle: |
主題頁面
Page Front-matter
1 |
--- |
Post Front-matter
1 |
--- |
標籤頁
-
前往你的 Hexo 博客的根目錄
-
輸入
hexo new page tags
-
你會找到
source/tags/index.md
這個文件 -
修改這個文件:
1 |
--- |
分類頁
-
前往你的 Hexo 博客的根目錄
-
輸入
hexo new page categories
-
你會找到
source/categories/index.md
這個文件 -
修改這個文件:
1 |
--- |
相冊
為你的博客創建一個相冊頁!
創建相冊頁
-
前往你的 Hexo 博客的根目錄
-
輸入
hexo new page gallery
-
你會找到
source/gallery/index.md
這個文件 -
修改這個文件:
1 |
--- |
Butterfly 提供了一個叫做gallery
的標籤,讓你能夠在 markdown 文件裏生成gallery-item
。
修改你剛剛創建的source/gallery/index.md
,並加上gallery
標籤。
gallery img-url [title]
例子:
1 |
--- |
gallery-item 也擁有 fancybox 的效果!
友情鏈接
為你的博客創建一個友情鏈接!
創建友情鏈接頁面
- 前往你的 Hexo 博客的根目錄
- 輸入
hexo new page link
- 你會找到
source/link/index.md
這個文件 - 修改這個文件:
1 |
--- |
友情鏈接添加
在Hexo博客目錄中的source/_data
,創建一個文件link.yml
1 |
class: |
友情鏈接界面設置
需要添加友情鏈接,可以在Butterfly.yml
配置
可在友情鏈接上寫上自己的個人資料,方便其他人添加。
1 |
Flink: |
第三方支持
評論
只能選擇一個評論服務商
Disqus
註冊 disqus,配置你自己的 disqus,然後在Butterfly
裏開啟它。
配置butterfly.yml
1 |
disqus: |
Laibili(來必力)
註冊來必力,配置你自己的來必力設置,然後在Butterfly
裏開啟它。
配置butterfly.yml
1 |
laibili: |
laibili 的 uid 你能在這裏找到:
Gitment
遵循 gitment的指示去獲取你的 github Oauth 應用的 client id 和 secret 值。
然後配置butterfly.yml
:
1 |
gitment: |
Gitalk
遵循 gitalk的指示去獲取你的 github Oauth 應用的 client id 和 secret 值。以及查看它的相關配置説明。
然後配置butterfly.yml
:
1 |
gitalk: |
Valine
遵循 Valine的指示去配置你的 LeanCloud 應用。以及查看相應的配置説明。
然後配置butterfly.yml
:
1 |
valine: |
分享
只能選擇一個分享服務商
AddThis
找到你的 pub-id
配置butterfly.yml
1 |
addThis: |
Sharejs
如果你不知道 sharejs,看看它的説明。
配置butterfly.yml
1 |
sharejs: |
Addtoany
可以到addtoany查看使用説明
1 |
addtoany: |
搜索系統
Algolia
-
你需要安裝 hexo-algolia或 hexo-algoliasearch. 根據它們的説明文檔去做相應的配置。
-
配置
butterfly.yml
1 |
algolia_search: |
本地搜索
-
你需要安裝 hexo-generator-search. 根據它的文檔去做相應配置。注意格式只支持 xml。
-
配置
butterfly.yml
1 |
local_search: |
網站驗證
如果需要搜索引擎收錄網站,可能需要登錄對應搜索引擎的管理平台進行提交。
各自的驗證碼可從各自管理平台拿到
配置butterfly.yml
1 |
# Google Webmaster tools verification setting |
分析統計
百度統計
-
登錄百度統計的官方網站
-
找到你百度統計的統計代碼
3. 配置butterfly.yml
1 |
baidu_analytics: 你的代碼 |
谷歌分析
-
登錄谷歌分析的官方網站
-
找到你的谷歌分析的跟蹤 ID
- 配置
butterfly.yml
1 |
google_analytics: 你的代碼 # 通常以`UA-`打頭 |
訪問人數 (UV 和 PV)
busuanzi
訪問 busuanzi 的官方網站查看更多的介紹。
配置butterfly.yml
1 |
busuanzi: |
MathJax
建議使用 KaTex 獲得更好的效果,下文有介紹!
配置butterfly.yml
:
1 |
mathjax: |
然後你需要修改一下默認的markdown
渲染引擎來實現 MathJax 的效果。
以下操作在你 hexo 博客的目錄下 (不是 Butterfly 的目錄!):
效果:
KaTeX
首先禁用MathJax
(如果你配置過 MathJax 的話),然後修改你的butterfly.yml
以便加載katex.min.css
:
1 |
katex: |
你不需要添加katex.min.js
來渲染數學方程。相應的你需要卸載你之前的 hexo 的 markdown 渲染器以及hexo-math
,然後安裝新的hexo-renderer-markdown-it-plus
:
1 |
# 替換 `hexo-renderer-kramed` 或者 `hexo-renderer-marked` 等hexo的markdown渲染器 |
注意到 hexo-renderer-markdown-it-plus
已經無人持續維護, 所以我們使用 @upupming/hexo-renderer-markdown-it-plus
。 這份 fork 的代碼使用了 @neilsustc/markdown-it-katex
同時它也是 VSCode 的插件 Markdown All in One所使用的, 所以我們可以獲得最新的 KaTex 功能例如 /tag{}
。
你還可以通過 @neilsustc/markdown-it-katex
控制 KaTeX 的設置,所有可配置的選項參見 https://katex.org/docs/options.html。 比如你想要禁用掉 KaTeX 在命令行上輸出的宂長的警告信息,你可以在根目錄的 _config.yml
中使用下面的配置將 strict
設置為 false:
1 |
markdown_it_plus: |
當然,你還可以利用這個特性來定義一些自己常用的 macros
。
因為 KaTeX 更快更輕量,因此沒有 MathJax 的功能多(比如右鍵菜單)。為那些使用 MathJax 的用户,我們也為 KaTeX 默認添加了 Copy As TeX Code的功能。
特效
打字效果
配置butterfly.yml
1 |
activate_power_mode: |
靜止彩帶
好看的彩帶背景,可設置每次刷新更換彩帶,或者每次點擊更換彩帶
配置butterfly.yml
1 |
canvas_ribbon: |
相關配置可查看canvas_ribbon
動態彩帶
好看的彩帶背景,會飄動
配置butterfly.yml
1 |
canvas_ribbon_piao: |
煙花效果
配置butterfly.yml
1 |
fireworks: |
PWA
要為Butterfly
配上 PWA 特性, 你需要如下幾個步驟:
-
打開 hexo 工作目錄
-
npm install hexo-offline --save
或者yarn add hexo-offline
-
修改
_config.yml
在站點_config.yml
中增加以下內容。
1 |
# offline config passed to sw-precache. |
更多內容請查看 hexo-offline的官方文檔
- 在
butterfly.yml
中開啟 pwa 選項。
1 |
pwa: |
- 在創建
source/
目錄中創建manifest.json
文件。
1 |
{ |
你也可以通過 Web App Manifest快速創建manifest.json
。(Web App Manifest 要求至少包含一個 512*512 像素的圖標)
- 可以通過
Chrome
插件Lighthouse
檢查 PWA 配置是否生效以及配置是否正確。
- 打開博客頁面
- 啟動
Lighthouse
插件 (Lighthouse
插件要求至少包含一個 512*512 像素的圖標)
關於 PWA(漸進式增強 Web 應用)的更多內容請參閲 Google Tools for Web Developers
字數統計
要為Butterfly
配上字數統計特性, 你需要如下幾個步驟:
-
打開 hexo 工作目錄
-
npm install hexo-wordcount --save
oryarn add hexo-wordcount
-
配置
butterfly.yml
:
1 |
wordcount: |
文章置頂
要為你一些文章置頂,你需要如下步驟:
- 打開 hexo 工作目錄
npm uninstall hexo-generator-index --save
然後npm install hexo-generator-index-pin-top --save
- 你要在文章的
front-matter
區域裏添加top: True
屬性來把這篇文章置頂。 - 你可以參考 hexo-generator-index-pin-top這個倉庫來了解更多細節。
舉個例子:
你的某篇文章開頭如下:
1 |
title: xxxx |
現在把top: True
加進去:
1 |
title: xxxx |
Q & A
Q. 頁面只顯示 extends includes/layout.pug block content #recent-posts.recent-posts include includes/recent-posts.pug include includes/pagination.pug #aside_content.aside_content include includes/aside.pug
A. 请下载安装:npm install hexo-renderer-jade hexo-renderer-stylus --save
or yarn add hexo-renderer-jade hexo-renderer-stylus
Q. 報錯
1 |
ERROR C:/Users/Shawn/Desktop/Blog/themes/Butterfly/layout/includes/layout.pug:18 |
A: 在Hexo的 _config
文檔裏的keywords
改成一下形式
1 |
keywords: [Jerry,JerryC,blog,安卓博客,安卓,程序员,个人博客,安卓開發,安卓博客,程序員,安卓開發,個人博客,Android] |
Q: 配置友情鏈接頁面時出現報錯
1 |
ERROR D:/Desktop/orxing-blog/themes/Butterfly/layout/flink.pug:2 |
A: 請檢查 link.yml
文檔内代碼的空格