本篇教程基于NexT主題的博客配置,實現更換主題、評論、打賞等36項功能,接下來根據這些功能進行分點描述,附上個人博客以供比對參考:https://qwerty200696.github.io。
本文是在本地用markdown寫的,轉移到簡書過程中難免疏漏。文章中若有任何錯誤,歡迎指出。
搭建基本Hexo博客
Hexo博客基本搭建參考:《hexo+GitHub博客搭建實戰》一文,,筆者按照教程的順序一步一步來,是沒有出現錯誤的,如果讀者們在搭建的時候遇到了問題不知如何解決,筆者會盡自己所能幫助讀者,并將遇到的問題及解決方法附在文章下方。
Hexo博客綁定域名
關于Hexo博客如何綁定自己的域名,詳情可參閱《hexo搭建的Github博客綁定域名》一文。
更換Hexo主題
筆者更換后的主題為NexT,其Github網址為:https://github.com/iissnan/hexo-theme-next 。首先將NexT的主題源文件下載到本地,使用Git克隆指令如下:
git clone https://github.com/iissnan/hexo-theme-next themes/next
下載后,將壓縮包解壓縮(文件位于指令運行的當前目錄),復制其中名稱為next
的文件夾到Hexo
的主題目錄下,主題目錄的路徑為:
Hexo博客根目錄/themes/
在Hexo根目錄下有一個以_config.yml
命名的文件(下稱站點配置文件),用Sublime/NotePad++
等文本編輯器打開,在其中找到theme
屬性,將其由landscape
改為next
。
然后在Hexo根目錄執行部署Hexo指令:
// 清理緩存
hexo clean
// 生成文件
hexo generate
// 部署
hexo deploy
便可以在遠程的博客上看到修改主題后的樣式了。
設置Hexo主題模式
看到上圖,讀者可能會產生疑問,為什么自己的主題樣式和筆者的不一樣,這是因為在Hexo主題中,有四種不同的模式,通過切換模式,讓NexT主題顯示不一樣的樣式。
在NexT
根目錄下有一個同樣名稱為_config.yml
,為了區分hexo
根目錄下的_config.yml
,將前者稱為主題配置文件,在其中找到scheme屬性,如下圖所示:
# Schemes
#scheme: Muse
#scheme: Mist
scheme: Pisces
#scheme: Gemini
NexT主題默認使用Muse模式,筆者采用的是Pisces模式,讀者可根據自己的喜好,選擇其中一種模式。
設置預覽摘要
設置完模式后,讀者們會發現,盡管首頁顯示的是所有文章的列表,但是每一篇文章都顯示了所有內容,這樣感覺看起來不舒服,這時候可以啟用預覽摘要模式,在主題配置文件中找到auto_excerpt
屬性,將enable
設置為true
,將length
設置為想要預覽到的字數,如下圖所示:
auto_excerpt:
enable: true #將原有的false改為true
length: 300 #設置預覽的字數
這里說明一下:上述的部署指令中
hexo deploy
可以換成hexo server
,兩者的區別在于,前者是將博客部署到遠程的Github上,而后者是運行在本地,通過http://localhost:4000
在瀏覽器中訪問。后者是為了調試配置方便而使用,但是最終本地博客還是需要hexo deploy
指令將其部署至Github上。
添加評論功能
NexT目前出到5.1.0版本,功能模塊已經相當的豐富。NexT主題集成了評論系統,只需要設置相關的屬性即可實現功能,其目前支持多說、Disqus、Facebook評論、Hyper評論、網頁云跟帖等,其中“多說”是NexT推薦的評論系統,但是多說評論系統不穩定,經常會出現服務異常的問題。
筆者采用的是一款名為友言的評論系統,它也是NexT已經集成好的,可以直接拿來用的。下面對其操作進行講解:
- 注冊友言賬號
打開友言官網,單擊“注冊”按鈕后,按照套路可完成賬號注冊。
- 獲取uid
注冊完登錄后,在首頁單擊“后臺管理”按鈕進入后臺界面便可看到自己的用戶ID,將其復制下來。
- 設置uid
打開主題配置文件,在其中找到屬性youyan_uid
,然后在: 后添加之前復制的uid。
提醒一下,: 冒號后面一定要有一個空格
然后部署一下Hexo,可以在本地或遠程看到實現的評論功能,如下圖所示:
在筆者配置評論功能的時候,筆者遇到了一個問題:本地博客有評論功能,而遠程博客卻沒有 。折騰了一下午,始終不知道其原因所在。后來,當筆者對博客綁定自己的域名后,發現遠程的博客自動出現了評論功能。在此推測為域名的緣故。若沒有綁定域名的讀者們遇到這個情況,可以放放,先配置其他功能。
設置側邊欄顯示效果
在主題配置文件中,找到sidebar
的display
屬性,display
屬性有四種顯示模式:分別為:
post // 默認顯示方式
always // 一直顯示
hide // 初始隱藏
remove // 移除側邊欄
筆者將其設置為hide模式,讀者們可根據個人喜好進行設置。
添加菜單選項
默認情況下,菜單導航欄有首頁、歸檔、關于三個選項,除此之外筆者還添加了分類、標簽和關于。在主題配置文件中,找到menu
屬性,并去掉categories、 tags、about
的的注釋,如下圖所示:
然后在Hexo根目錄執行指令如下:
// 添加分類頁面
hexo new page "categories"
// 添加標簽頁面
hexo new page “tags”
// 添加關于頁面
hexo new page "about"
執行完上述指令后,在Hexo根目錄/source/
文件夾下創建三個文件夾,命名分別為:categories、tags、about
文件夾,在這些文件夾中分別會創建一個以index
命名的Markdown文件,對這三個Markdown文件內容進行修改,使之分別為:
---
title: categories
date: 2017-03-12 22:06:24
type: "categories"
---
---
title: 標簽
date: 2017-03-12 17:27:16
type: "tags"
---
---
title: about
date: 2017-03-12 22:07:26
type: "about"
---
完成文件的修改,然后部署Hexo即可完成菜單選項的添加。
添加閱讀次數統計
注冊LeanCloud
賬號,完成激活;點擊左上角的”應用”-“創建新應用”-點擊“數據”右邊的齒輪–點擊創建類class,類名字叫做Counter
。
然后,修改主題配置文件,找到leancloud_visitors
,添加修改:
leancloud_visitors:
enable: true #將原來的false改為true
app_id: #<app_id>
app_key: #<app_key>
從設置中找到相應的id和key:
然后預覽,如圖:
添加社交鏈接
筆者希望在個人博客中加入自己的微博、知乎和Github鏈接以提高訪問量,接下來了解一下社交鏈接如何添加:
- 添加鏈接及圖標
在主題配置文件中找到social
屬性,在其下方添加社交鏈接及圖標,其格式為:
社交平臺名稱:鏈接 || 圖標
鏈接的圖標全部來自于Font Awesome
- 個人配置
筆者社交鏈接添加情況如以下代碼所示:
social:
GitHub: https://github.com/qwerty200696 || github
E-Mail: mailto:yourname@gmail.com || envelope
知乎: https://www.zhihu.com/people/LijieWang || gratipay
微博: https://weibo.com/3280603012 || weibo
Google: https://plus.google.com/yourname || google
Twitter: https://twitter.com/yourname || twitter
FB Page: https://www.facebook.com/yourname || facebook
#VK Group: https://vk.com/yourname || vk
#StackOverflow: https://stackoverflow.com/yourname || stack-overflow
YouTube: https://youtube.com/yourname || youtube
Instagram: https://instagram.com/yourname || instagram
其中,微博有其對應的圖標,而知乎在圖標庫中卻沒有找到,筆者找了一款gratipay
的圖標來代替知乎圖標。
如果沒有找到指定的圖標,將會啟用默認的圖標。
- 效果展示
配置完成后,具體效果顯示如下:
添加友情鏈接功能
在主題配置文件中找到links
屬性,修改links_title
屬性的值為“友情鏈接”(也可以是其他文案),取消注釋links:
,然后添加上好友的博客名稱和博客地址,其格式如下:
# Blog rolls
links_title: 友情鏈接 #修改名稱
#links_layout: block
#links_layout: inline
links: #該行取消注釋
小草莓: http://my.csdn.net/qq_31196849
qingkong: http://my.csdn.net/qingkong1994
筆者友情鏈接出現位置在社交鏈接的下方,效果如下圖所示:
設置博文內鏈接為藍色
- 修改原因
鏈接的默認顏色是白色的,和普通字體顏色相同,不容易區分,如下圖所示:
- 修改方法
通過路徑:
F:Hexo\themes\next\source\css\_common\components\post\
打開post.styl
文件,在文件中添加,如下字段:
.post-body p a{
color: #0593d3;
border-bottom: none;
&:hover {
color: #0477ab;
text-decoration: underline;
}
}
最好將新添加的內容放在原文件內容的底部,便于查看。
- 效果預覽
設置完成后部署一下,預覽效果如圖:
圖中Git的鏈接出現的下劃線是鼠標懸停時的效果。
設置文章末尾”本文結束”標記
實現方法
在路徑F:\Hexo\themes\next\layout\_macro
下,新建一個文件passage-end-tag.swig
,文件內容中添加以下代碼:
{% if theme.passage_end_tag.enabled %}
<div style="text-align:center;color: #ccc;font-size:14px;">
------ 本文結束<i class="fa fa-paw"></i>感謝您的閱讀 ------</div>
{% endif %}
代碼截圖如下(在網站中看到的div標簽生效消失了,故此截圖):
這里可以更改字體顯示的顏色,大小,以及內容,例如可將本文結束用The Happy Ending代替,并將字體顏色設置為了自己喜歡的#CDBA96,你可以去這里選擇自己喜歡的顏色對應的RGB值。
然后在路徑\themes\next\layout\_macro\
下找到并打開post.swig
文件,在 post-body
之后, post-footer
之前添加如下代碼(post-footer之前兩個DIV):
{% if not is_index %}
<div>
{% include 'passage-end-tag.swig' %}
</div>
{% endif %}
具體位置如下圖所示:
最后在主題配置文件中,在末尾添加如下語句:
passage_end_tag:
enabled: true
實現效果圖
最終實現效果如下:
顯示每篇文章字數
實現方法
首先安裝插件,執行以下命令:
npm install hexo-wordcount --save
然后修改主題配置文件,定位到post_wordcount
,將wordcount
由false
改為true
即可。
實現效果圖
在每篇文章標題下會有如下效果:
顯示站點文章總字數
實現方法
首先安裝插件,插件安裝同上(已經“顯示每篇文章字數”則忽略這步)。
然后修改主題配置文件,定位到post_wordcount
,將totalcount
由false
改為true
即可。
實現效果圖
在頁面最底部會有如下效果:
文章末尾添加版權說明
直接修改主題配置文件,定位到post_copyright
,將enable
由false
改為true
即可。
該字段如下:
# Declare license on posts
post_copyright:
enable: true
license: CC BY-NC-SA 3.0
license_url: https://creativecommons.org/licenses/by-nc-sa/3.0/
實現效果如圖所示:
設置個人頭像
通過上面切換到Pisces發現,自己的頭像還是屬于匿名狀態,因此,我們有必要設置一下自己的頭像。
實現方法
在主題配置文件中找到avatar
字段,進行修改:
# Sidebar Avatar
# in theme directory(source/images): /images/avatar.gif
# in site directory(source/uploads): /uploads/avatar.gif
avatar: /images/head_icon.jpg
先將avatar
字段前的#刪除,然后粘貼上頭像的目錄位置或者鏈接。
筆者將突破保存在了主題目錄下的source/images
文件夾,也可以存放在站點目錄下的source/uploads
文件夾。也可以將自己的頭像圖片,保存在百度網盤或者新浪微盤的某個地方,然后將對應的url
地址復制過來,添加在avatar
字段后即可。
實現效果圖
其效果如下圖所示:
達到效果后即可部署至遠程。
設置頭像動態特效
在路徑F:\Hexo\themes\next\layout\_partials
找到head.swig
文件并打開,在其末尾添加,如下字段:
<link rel="stylesheet">
并在路徑themes\next\source\css\_common\components\sidebar\
下找到sidebar-author.styl
文件并打開,添加如下語句:
.site-author-image:hover {
-webkit-animation: jello 1s;
animation: jello 1s;
};
其中jello
是我選擇的動態效果,你可以在這里找到你喜歡的特效;然后更換上述代碼中的jello
字段,達到預期效果后,即可部署至遠程。
設置網站圖標
實現方法
打開主題配置文件,找到以下字段,進行相應的修改:
# Put your favicon.ico into `hexo-site/source/` directory.
favicon: /web_icon.jpg
然后預覽,在自己的博客網站上有這樣的圖標:
因為我使用了與頭像一樣的圖片,所以圖標與頭像一樣。達到效果后即可部署至遠程。
添加留言版塊
我們還可以在菜單欄增加一個”留言板”,讓他人可以通過留言板直接給我們留言。
實現方法
在博客目錄中,執行以下命令,新建一個頁面:
hexo n page guestbook
然后通過路徑F:\Hexo\source\guestbook
找到并打開guestbook
文件夾下的index.md
文件,然后再文件中添加以下代碼:
<div class="ds-recent-visitors" data-num-items="28" data-avatar-size="42" id="ds-recent-visitors"></div>
然后打開主題配置文件,在menu字段下,添加如下字段:
menu:
home: / || home
about: /about/ || user
tags: /tags/ || tags
categories: /categories/ || th
archives: /archives/ || archive
留言板: /guestbook || newspaper-o #自己添加的字段
newspaper-o
是留言板的圖標,可以在這里找到自己喜歡的圖標。
筆者采用的youyan評論系統,默認在新建頁面上會產生評論板塊。效果如下:
這個效果暫時不穩定,可能是由于筆者暫時還沒有綁定域名的關系。
項目主頁添加README
在建立Github上建立自己的博客倉庫的時候,沒有生成README
文件,這樣使得其他人無法知道我們這個倉庫是做什么,即我們的這個倉庫缺少一個說明文件;但是如果直接使用命令hexo n README
,再部署至遠程的時候,hexo會將它解析為html
文件,這不是我們想要的。
實現方法
因此,解決方式是在路徑F:\Hexo\source
下手動新建README.mdown
注意這里的后綴是.mdown
,Mardownpad
可以將文件保存為.mdown
后綴文件;然后再在這個新建文件中寫README
即可。再之后hexo g
會把它復制到public
文件夾,而不會被解析成html
文件,發布在博客中。
實現效果圖
預覽效果,如圖:
實現fork me on github
在右上角或者左上角實現fork me on github。
實現方法
點擊這里挑選自己喜歡的樣式,并復制代碼。 例如,我是復制如下代碼:
然后粘貼剛才復制的代碼到themes/next/layout/_layout.swig
文件中(放在<div class="headband"></div>
的下面),并把href
標簽改為你的github
地址:
實現效果圖
實現效果圖如下(右上角):
實現點擊出現桃心效果
實現方法
打開瀏覽器,輸入如下網址
然后將里面的代碼copy一下,新建love.js
文件并且將代碼復制進去,然后保存。將love.js
文件放到路徑/themes/next/source/js/src
里面,然后打開\themes\next\layout\_layout.swig
文件,在末尾(在前面引用會出現找不到的bug)添加以下代碼:
<!-- 頁面點擊小紅心 -->
<script type="text/javascript" src="/js/src/love.js"></script>
實現效果圖
修改文章底部的#號標簽
實現方法
修改模板/themes/next/layout/_macro/post.swig
,搜索 rel="tag">#
,將其中的 #
換成<i class="fa fa-tag"></i>
實現效果圖
添加動態背景
實現方法
在主題配置文件中,定位到如下部分:
# Canvas-nest
canvas_nest: true
# three_waves
three_waves: false
# canvas_lines
canvas_lines: false
# canvas_sphere
canvas_sphere: false
# Only fit scheme Pisces
# Canvas-ribbon
canvas_ribbon: false
這是已經集成好的幾個動態效果,筆者采用的是canvas_nest,讀者可依次體驗(將false改為true),選擇最喜歡的動態背景。
實現效果圖
代碼塊樣式自定義
實現方法
打開\themes\next\source\css_custom\custom.styl,向里面加入:(顏色可以自己定義)
// Custom styles.
code {
color: #ff7600;
background: #fbf7f8;
margin: 2px;
}
// 大代碼塊的自定義樣式
.highlight, pre {
margin: 5px 0;
padding: 5px;
border-radius: 3px;
}
.highlight, code, pre {
border: 1px solid #d6d6d6;
}
實現效果圖
文章加密訪問
實現方法
打開themes->next->layout->_partials->head.swig文件,在以下位置插入這樣一段代碼:
代碼如下:
<script>
(function(){
if('{{ page.password }}'){
if (prompt('請輸入文章密碼') !== '{{ page.password }}'){
alert('密碼錯誤!');
history.back();
}
}
})();
</script>
然后在文章上寫成類似這樣:
實現效果圖
添加jiathis分享
實現方法
在主題配置文件中,jiathis為true,就行了,代碼如下:
# Share
# This plugin is more useful in China, make sure you known how to use it.
# And you can find the use guide at official webiste: http://www.jiathis.com/.
# Warning: JiaThis does not support https.
jiathis: true
##uid: Get this uid from http://www.jiathis.com/
#add_this_id:
實現效果圖
自定義鼠標樣式
實現方法
打開themes/next/source/css/_custom/custom.styl,在里面寫下如下代碼
// 鼠標樣式
* {
cursor: url("http://om8u46rmb.bkt.clouddn.com/sword2.ico"),auto!important
}
:active {
cursor: url("http://om8u46rmb.bkt.clouddn.com/sword1.ico"),auto!important
}
其中 url
里面必須是 ico
圖片,ic
o 圖片可以上傳到網上,然后獲取外鏈,復制到 url
里就行了。
支持mathjax公式
看到網上說明安裝hexo-math工具,或者其他的一系列教程,如這個。
其實在目前的hexo/NexT主題已經集成了mathjax,所以不需要那么麻煩的設置了。
實現方法
在主題配置文件中,定位到mathjax,將后面的選項為true,就行了。
另外,雖然這樣設置了,但是在編寫的時候還會出現mathjax與markdown默認渲染不兼容的問題,導致有時候公式一復雜就顯示不出來。
解決上述問題的方法請參照我寫的另一片博客:https://qwerty200696.github.io/2017/09/21/markdown_mathjax/
修改部分字體的顏色,大小
比如說,想在文章中對某一部分的文字進行強調(改變大小,顏色),該操作具體說明如下:
如果想自定義字體大小以及顏色,可以直接在 Markdown 文檔中使用 html 語法:
<font size=4 > 這里輸入文字,自定義大小 </font>
<font color="#FF0000"> 這里輸入文字,自定義顏色的字體 </font>
其中#FF0000
為RGB顏色代碼,讀者可去RGB顏色查詢對照表網站查找自己喜歡的顏色。
若想在RGB顏色值與十六進制顏色碼之間相互轉化,可查看該網站。
實現首行縮進
由于markdown語法主要考慮的是英文,所以對于中文的首行縮進并不太友好,因此想要實現行縮進需要加上相應的代碼,如下。
在需要縮進行的開頭處,先輸入下面的代碼,然后緊跟著輸入文本即可。分號也不要漏掉。
直接寫:
半方大的空白?或?
全方大的空白?或?
不斷行的空白格 或
親測可行。
Hexo博客提交百度和Google收錄
TODO 最后這幾個由于感覺暫時沒有必要,就先擱置了,有空補。
添加RSS
TODO
添加搜索功能
TODO
添加打賞功能
TODO
博文置頂
TODO