前言
折騰了三天終於修改完畢 
再次感謝 Butterfly 主題的作者 JerryC 製作出這個既簡潔漂亮又多功能的主題
各種炫酷功能的配置設定可看 作者提供的文檔,很詳細,跟著設置就可以了。
以下,分享一下文檔中沒提及的、我的自定義修改:
【註】我用的是 hexo-theme-butterfly version 2.1.0
檔案樹狀結構
根目錄
| . | 
Butterfly 主題目錄
| . | 
基本上,我修改的文件都是這幾個:
- _config.yml>> 修改站點配置
- .\themes\Butterfly\_config.yml>> 修改 Butterfly 主題配置、功能等
- .\themes\Butterfly\source\css>> 進階修改 Butterfly 主題的 css (- .styl檔)
- .\themes\Butterfly\layout>> 進階修改 Butterfly 主題的 html (- .pug檔)
主題顏色
如果想進階修改主題顏色的話,可到以下文件修改參數:
- .\themes\Butterfly\source\css\var.styl
樣式 (css相關的項目)
如果想修改特定元素的樣式,例如字體大小、字體顏色、背景顏色、tag 外觀樣式、border style 、button、動畫效果等等,可到下面這個 folder 內找相應的 .styl 檔進行修改:
- .\themes\Butterfly\source\css\_layout
=== 例子 ===
黑夜模式
如想修改黑夜模式的顏色組合,就到這裡修改:.\themes\Butterfly\source\css\_layout\z-darkmode.styl圖片位置格式
由於我寫文章經常會加表符,所以想圖片顯示在文字後面,不要跌進新的一行。
所以我在.\themes\Butterfly\source\css\_layout\post.styl裡,把img原本的display: block改成display: inline。但要注意,這樣便不能用medium_zoom和fancybox功能了,在.\themes\Butterfly\_config.yml要把這兩項設為false。
主頁文章:不顯示圖片cover
- 在 .\themes\Butterfly\_config.yml設定index_post_cover: none
- 在 .\themes\Butterfly\source\css\_layout\page.styl,- 2.1 -  把 .recent-post-info設定width: 100%
- 2.2 -  在描述 index_post_cover那裡添加下面三行:stylelse if hexo-config('index_post_cover') == 'none' 
 .post_cover
 display: none
 
- 2.1 -  把 
Tags:移至文章上方
原本文章內的 tags 是顯示在版權下方,如要好像我這樣顯示在正文上方,在 .\themes\Butterfly\layout\post.pug 這個文件中,搜尋下面這段,把它移到至 block content 的下一行插入。
| .tag_share | 
版權框內的字句
在 .\themes\Butterfly\languages 這裡面的 yml 檔裡。
為文章加密
在 GitBash 輸入以下 (參考)
| npm install --save hexo-blog-encrypt | 
使用方法
例如,我這篇加密文章,在文章頭加上 password 和 message (optional):
| --- | 
右下角按鈕:改為默認顯示,按才隱藏
右下角的 黑夜模式、繁簡轉換 、字體大小 按鈕原本是默認隱藏的,要按那個轉轉的設置按鈕才會彈出來。
我想把這些功能按鈕改成默認顯示,按那個轉轉設置按鈕就收起來,再按再彈出來這樣和原本反過來的效果。
於是把 .\themes\Butterfly\source\css\_layout\rightside.styl 裡改成下面這樣:
| #rightside | 
右下角新增【到最底部】按鈕
除了文章(post)頁面,其他頁面都加上【到最底部】按鈕在最右下方。
- 在 .\themes\Butterfly\layout\includes\rightside.pug,於最底添加這兩行:Codeif !is_post() 
 i.fa.fa-arrow-down#go-down(title=_p("rightside.back_to_bottom") aria-hidden="true")
- 在.\themes\Butterfly\source\js\main.js,添加:Javascript// go down smooth scroll 
 $('#go-down').on('click', function () {
 scrollTo('footer')
 })
文章網址名稱、文章位置整理
所有發佈的文章自動生成在 .\source\_posts 這個 folder。
但排序雜亂無章,而且部署到 github 後,所有文章都散佈在第一層,很亂。
想文章原檔案按照日期排序,但不影響文章網址名稱(在網址中不顯示日期),並且在 github 自動生成一個名叫 post 的folder裝放所有文章原檔案。想要達到像下面 tree structure 這樣:
| \---_posts | 
方法是在 ./config.yml 裡,把這兩選項更改成以下:
| permalink: post/:title/ # 在github自動生成一個名叫post的folder裝放所有文章原檔案 | 
生成 sitemap - atom.xml
在 bash 中輸入以下命令:
| npm install hexo-generator-feed --save | 
- 在 ./config.yml裡,添加以下:ymlfeed: 
 type: atom
 path: atom.xml
 limit: 10
 hub:
 content:
 content_limit: 250
 content_limit_delim: ' '
 order_by: -date
 icon: icon.png
 autodiscovery: true
 template:
製作 404 page
- 把你想遇到 404 時轉跳的頁面命名為 404.html,把它放在.\source這個folder裡。
- 然後在 ./config.yml裡,設定:由於我還創建了不需渲染的ymlskip_render: 
 - 404.html
 - README.md
 - robots.txtREADME.md和robots.txt,所以把它們也設定在skip_render底下。
大概就是這樣,分享完畢~

