Hexo 基于yilia主題及其它插件優(yōu)化

本文主要介紹基于yilia主題及其它一些插件完善hexo,搭建hexo靜態(tài)博客請(qǐng)參考铃彰。生命不息绍豁,折騰不止。

yilia 主題設(shè)置

安裝主題

cd /Hexo/themes/
git clone https://github.com/litten/hexo-theme-yilia.git yilia

vim /Hexo/_config.yml

theme: yilia

修改默認(rèn)設(shè)置

vim yilia/_config.yml

menu:
  主頁(yè): /
  歸檔: /archives/index.html
  關(guān)于: /about

# SubNav
subnav:
  jianshu: "http://www.reibang.com/users/1a96b9218380/timeline"
  github: "https://github.com/EvanVivian"
  zhihu: "https://www.zhihu.com/people/yan-wei-chao-78/activities"

# 文章太長(zhǎng)牙捉,截?cái)喟粹o文字
# excerpt_link: more             注釋掉此行

# 打賞
# 打賞type設(shè)定:0-關(guān)閉打賞竹揍; 1-文章對(duì)應(yīng)的md文件里有reward:true屬性,才有打賞邪铲; 2-所有文章均有打賞
reward_type: 2    
# 打賞wording
reward_wording: '請(qǐng)我吃顆糖果吧'          修改文案     
# 支付寶二維碼圖片地址芬位,跟你設(shè)置頭像的方式一樣。比如:/assets/img/alipay.jpg
alipay: /img/EvanAlipay.jpg             添加圖片并寫上地址
# 微信二維碼圖片地址
weixin: /img/EvanWechat.jpg             添加圖片并寫上地址

# 目錄
# 目錄設(shè)定:0-不顯示目錄霜浴; 1-文章對(duì)應(yīng)的md文件里有toc:true屬性晶衷,才有目錄; 2-所有文章均顯示目錄
toc: 2           ## 修改為默認(rèn)開(kāi)啟目錄

favicon: /img/xhren.jpg

#你的頭像url
avatar: /img/daerzi.jpg

##修改默認(rèn)評(píng)論系統(tǒng) 4選一 推薦 gitalk 或 valine
#評(píng)論:1阴孟、Disqus晌纫;2、Gitment 3.gitalk 4.valine
#不需要使用某項(xiàng)永丝,直接設(shè)置值為false锹漱,或注釋掉
#具體請(qǐng)參考wiki:https://github.com/litten/hexo-theme-yilia/wiki/

#1、Disqus 在hexo根目錄的config里也有disqus_shortname字段慕嚷,優(yōu)先使用yilia的
disqus: false

#2哥牍、Gitment
gitment_owner: false      #你的 GitHub ID
gitment_repo: 'xxxxxx'          #存儲(chǔ)評(píng)論的 repo
gitment_oauth:
  client_id: 'xxxxxxxxxxxxxxxxx'           #client ID
  client_secret: 'xxxxxxxxxxxxxxxxxxxxxxxxx'       #client secret

#3、gitalk
gitalk:
  enable:  true
  githubID:  ********
  repo:  *****
  ClientID:  '*****************'
  ClientSecret:  '****************************'
  adminUser:  **********
  distractionFreeMode: true

#4喝检、Valine https://valine.js.org
valine: 
  appid:  #Leancloud應(yīng)用的appId
  appkey:  #Leancloud應(yīng)用的appKey
  verify: false #驗(yàn)證碼
  notify: false #評(píng)論回復(fù)提醒
  avatar: mm #評(píng)論列表頭像樣式:''/mm/identicon/monsterid/wavatar/retro/hide
  placeholder: Just go go #評(píng)論框占位符


# 樣式定制 - 一般不需要修改嗅辣,除非有很強(qiáng)的定制欲望…      
style:
  # 頭像上面的背景顏色
  header: '#03344b'     #修改為這個(gè)顏色后就跟為的頁(yè)面一樣了
  # 右滑板塊背景
  slider: 'linear-gradient(200deg,#a0cfe4,#03344b)'

## 版權(quán)聲明 后續(xù)步驟請(qǐng)看下邊
declare_type: 2
licensee_url: https://creativecommons.org/licenses/by-nc-sa/4.0/
licensee_name: '知識(shí)共享署名-非商業(yè)性使用-相同方式共享 4.0 國(guó)際許可協(xié)議'

# 智能菜單
# 如不需要,將該對(duì)應(yīng)項(xiàng)置為false
# 比如
#smart_menu:
#  friends: false
smart_menu:
  innerArchive: '搜索'
  friends: '友鏈'
  aboutme: false

## 關(guān)閉 aboutme 

修改代碼塊樣式

直接修改編譯好的文件挠说。路徑為: theme/yilia/source/main.0cf68a.css 
修改代碼背景色澡谭,搜索 .article-entry .highlight, 修改background后面的顏色

pre{background:#272822;
改為
pre{background:#1a0139;

修改行號(hào)顏色,搜索 .article-entry .highlight .gutter pre .line
將
.article-entry .highlight .gutter pre .line{color:#666
改為
.article-entry .highlight .gutter pre .line{color:#fc0000

修改代碼字體顏色 .article-entry .highlight .line
.article-entry .highlight .line{color:#fff;
修改為
.article-entry .highlight .line{color:#00ff0d;

代碼塊行號(hào)顯示錯(cuò)亂

vim yilia/source/main.0cf68a.css

將 white-space:pre-wrap; 刪除.
這個(gè)問(wèn)題是自動(dòng)換行造成的损俭,使用不自動(dòng)換行的white-space:pre;
樣式代碼塊部分會(huì)自動(dòng)出現(xiàn)底部滾動(dòng)條蛙奖,行號(hào)錯(cuò)亂問(wèn)題就沒(méi)有了潘酗。

添加不蒜子統(tǒng)計(jì)

yilia/layout/_partial/after-footer.ejs   中加入

<script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>

單篇文章點(diǎn)擊量

themes/yilia/layout/_partial/article.ejs中 在 <%- partial('post/title', {class_name: 'article-title'}) %> 插入如下代碼

<!--顯示閱讀次數(shù)-->
<% if (!index && post.comments){ %>
  <br/>
  <a class="cloud-tie-join-count" href="javascript:void(0);" style="color:gray;font-size:14px;">
  <span class="icon-sort"></span>
  <span id="busuanzi_container_page_pv" style="color:#ef7522;font-size:14px;">
            閱讀數(shù): <span id="busuanzi_value_page_pv"></span>次 &nbsp;&nbsp;
  </span>
  </a>
<% } %>

參考

備案信息、PV & UV統(tǒng)計(jì)雁仲、網(wǎng)站運(yùn)行時(shí)間仔夺、網(wǎng)站框架及模板

修改 yilia/layout/_partial/footer.ej 內(nèi)容為

<footer id="footer">
  <div class="outer">
    <div id="footer-info">
        <div class="footer-left">
            &copy; <%= date(new Date(), 'YYYY') %> <%= config.author || config.title %> - <a  target="_blank">京ICP備16022690號(hào)</a>
        </div>
        <div class="footer-right">
            <a  target="_blank">Evan</a>  Always Love<a  target="_blank"> Vivian</a>
        </div>
        </div>
        <span id="timeDate">載入天數(shù)...</span><span id="times">載入時(shí)分秒...</span> &||& <span id="busuanzi_container_site_uv">你是本博第 <span id="busuanzi_value_site_uv"></span> 位訪客</span> || <span id="busuanzi_container_site_pv">歷經(jīng) <span id="busuanzi_value_site_pv"></span> 次回眸才與你相遇</span> 
    <script>
        var now = new Date(); 
        function createtime() { 
            var grt= new Date("02/19/2017 22:02:00");//此處修改你的建站時(shí)間或者網(wǎng)站上線時(shí)間 
            now.setTime(now.getTime()+250); 
            days = (now - grt ) / 1000 / 60 / 60 / 24; dnum = Math.floor(days); 
            hours = (now - grt ) / 1000 / 60 / 60 - (24 * dnum); hnum = Math.floor(hours); 
            if(String(hnum).length ==1 ){hnum = "0" + hnum;} minutes = (now - grt ) / 1000 /60 - (24 * 60 * dnum) - (60 * hnum); 
            mnum = Math.floor(minutes); if(String(mnum).length ==1 ){mnum = "0" + mnum;} 
            seconds = (now - grt ) / 1000 - (24 * 60 * 60 * dnum) - (60 * 60 * hnum) - (60 * mnum); 
            snum = Math.round(seconds); if(String(snum).length ==1 ){snum = "0" + snum;} 
            document.getElementById("timeDate").innerHTML = "本站已安全運(yùn)行 "+dnum+" 天 "; 
            document.getElementById("times").innerHTML = hnum + " 小時(shí) " + mnum + " 分 " + snum + " 秒"; 
        } 
    setInterval("createtime()",250);
    </script>
  </div>
</footer>

版權(quán)聲明

themes/yilia/layout/_partial/article.ejs中 在 <% if ((theme.reward_type === 2 || (theme.reward_type === 1 && post.reward)) && !index){ %> 上邊插入如下代碼

<%
  var sUrl = url.replace(/index\.html$/, '');
  sUrl = /^(http:|https:)\/\//.test(sUrl) ? sUrl : 'https:' + sUrl;
%>
<% if ((theme.declare_type === 2 || (theme.declare_type === 1 && post.declare)) && !index){ %>
  <div class="declare">
    <strong>本文作者:</strong>
    <% if(config.author != undefined){ %>
      <%= config.author%>
    <% }else{%>
      <font color="red">請(qǐng)?jiān)诓┛透夸洝癬config.yml”中填入正確的“author”</font>
    <%}%>
    <br>
    <strong>本文鏈接:</strong>
    <%= sUrl%>
    <br>
    <strong>版權(quán)聲明:</strong>
    本作品采用
    <a rel="license" href="<%= theme.licensee_url%>"><%= theme.licensee_name%></a>
    進(jìn)行許可。轉(zhuǎn)載請(qǐng)注明出處攒砖!
    <% if(theme.licensee_img != undefined){ %>
      <br>
      <a rel="license" href="<%= theme.licensee_url%>"><img alt="知識(shí)共享許可協(xié)議" style="border-width:0" src="<%=    theme.licensee_img%>"/></a>
    <% } %>
  </div>
<% } else {%>
  <div class="declare" hidden="hidden"></div>
<% } %>

版權(quán)添加樣式
vim yilia/source/main.0cf68a.css 添加如下代碼

.declare {
  background-color: #eaeaea;
  margin-top: 2em;
  border-left: 3px solid #ff1700;
  padding: .5em 1em; }

版權(quán)聲明參考

Hexo 之yilia主題 添加分類

參考

博文置頂

修改 hexo-generator-index 插件
修改文件:node_modules/hexo-generator-index/lib/generator.js 為:

'use strict';
var pagination = require('hexo-pagination');
module.exports = function(locals){
  var config = this.config;
  var posts = locals.posts;
    posts.data = posts.data.sort(function(a, b) {
        if(a.top && b.top) {
            if(a.top == b.top) return b.date - a.date;
            else return b.top - a.top;
        }
        else if(a.top && !b.top) {
            return -1;
        }
        else if(!a.top && b.top) {
            return 1;
        }
        else return b.date - a.date;
    });
  var paginationDir = config.pagination_dir || 'page';
  return pagination('', posts, {
    perPage: config.index_generator.per_page,
    layout: ['index', 'archive'],
    format: paginationDir + '/%d/',
    data: {
      __index: true
    }
  });
};

設(shè)置文章置頂
在文章 頂部 添加 top 值缸兔,數(shù)值越大文章越靠前,如:

---
title: Hexo+yilia主題配置備忘
date: 2019-03-05 18:47:55
top: 10
---

參考

評(píng)論系統(tǒng)

Valine - 一款快速祭衩、簡(jiǎn)潔且高效的無(wú)后端評(píng)論系統(tǒng)灶体。
GITALK 一個(gè)基于 Github Issue 和 Preact 開(kāi)發(fā)的評(píng)論插件。

刪除 多說(shuō)掐暮、網(wǎng)易云跟帖蝎抽、暢言 添加 gitalk、valine

cd /Hexo/themes/EvanM/layout/_partial/post/
\rm -rf changyan.ejs duoshuo.ejs wangyiyun.ejs

vim gitalk.ejs

<div id="gitalk-container" style="padding: 0px 30px 0px 30px;"></div>
  
<link rel="stylesheet" >
<script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script>
<script type="text/javascript">

if(<%=theme.gitalk.enable%>){
        var gitalk = new Gitalk({
        clientID: '<%=theme.gitalk.ClientID%>',
        clientSecret: '<%=theme.gitalk.ClientSecret%>',
        repo: '<%=theme.gitalk.repo%>',
        owner: '<%=theme.gitalk.githubID%>',
        admin: ['<%=theme.gitalk.adminUser%>'],
        id: '<%= page.date %>',
        distractionFreeMode: '<%=theme.gitalk.distractionFreeMode%>'
})
gitalk.render('gitalk-container')
}
</script>

vim valine.ejs

<div id="vcomment" class="comment"></div> 
<script src="http://cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
<script src="http://unpkg.com/valine/dist/Valine.min.js"></script>
<script>
   var notify = '<%= theme.valine.notify %>' == true ? true : false;
   var verify = '<%= theme.valine.verify %>' == true ? true : false;
    window.onload = function() {
        new Valine({
            el: '.comment',
            notify: notify,
            verify: verify,
            app_id: "<%= theme.valine.appid %>",
            app_key: "<%= theme.valine.appkey %>",
            placeholder: "<%= theme.valine.placeholder %>",
            avatar:"<%= theme.valine.avatar %>"
        });
    }
</script>

vim /Hexo/themes/EvanM/layout/_partial/article.ejs
刪除內(nèi)容為

<% if (theme.duoshuo){ %>
<%- partial('post/duoshuo', {
    key: post.slug,
    title: post.title,
    url: config.url+url_for(post.path)
  }) %>
<% } %>

<% if (theme.wangyiyun){ %>
<%- partial('post/wangyiyun', {
    key: post.slug,
    title: post.title,
    url: config.url+url_for(post.path)
  }) %>
<% } %>

<% if (theme.changyan_appid && theme.changyan_conf){ %>
<%- partial('post/changyan', {
    key: post.slug,
    title: post.title,
    url: config.url+url_for(post.path)
  }) %>
<% } %>

添加如下內(nèi)容

  <% if (theme.valine && theme.valine.appid && theme.valine.appkey){ %>
    <section id="comments" style="margin:10px;padding:10px;background:#fff;">
      <%- partial('post/valine', {
        key: post.slug,
        title: post.title,
        url: config.url+url_for(post.path)
        }) %>
    </section>
  <% } %>

  <% if(theme.gitalk.enable){ %>
    <%- partial('post/gitalk', {
        key: post.slug,
        title: post.title,
        url: config.url+url_for(post.path)
    }) %>
  <% } %>
<% } %>    ##倒數(shù)第一行

參考
參考
參考

Hexo 之 yilia 添加在線聊天

最近瀏覽博客時(shí)路克,發(fā)現(xiàn)了在線聊天的插件樟结。愛(ài)折騰的我肯定是要在自己的站點(diǎn)試試的。
相關(guān)產(chǎn)品有 Tidio精算、 TalkJS瓢宦、Intercom、tawk.to灰羽、 DaoVoice等驮履,使用體驗(yàn)都很好,交互界面也很干凈別致廉嚼。本站目前已測(cè)試Tidio玫镐、DaoVoice

yilia/layout/_partial/head.ejs

image

Tidio參考
DaoVoice參考

SEO 之 Url持久化

安裝 hexo-abbrlink

npm install hexo-abbrlink --save

配置_config.yml

permalink: posts/:abbrlink.html
abbrlink:
  alg: crc32
  rep: hex

參考

Hexo 實(shí)現(xiàn)私密文件加密

cd /Hexo
npm install hexo-blog-encrypt

vim /Hexo/_config.yml  添加如下內(nèi)容

# Security
## 文章加密 hexo-blog-encrypt
encrypt:
    enable: true

然后在想加密的文章頭部添加上對(duì)應(yīng)字段,如

---
title: hello world
date: 2016-03-30 21:18:02   
tags:       
password: 12345   (密碼)
abstract: Welcome to my blog, enter password to read. 
message: Welcome to my blog, enter password to read.     
---

password: 是該博客加密使用的密碼
abstract: 是該博客的摘要怠噪,會(huì)顯示在博客的列表頁(yè)
message: 這個(gè)是博客查看時(shí)恐似,密碼輸入框上面的描述性文字

參考

原文鏈接

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市傍念,隨后出現(xiàn)的幾起案子矫夷,更是在濱河造成了極大的恐慌,老刑警劉巖憋槐,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件双藕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡阳仔,警方通過(guò)查閱死者的電腦和手機(jī)蔓彩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人赤嚼,你說(shuō)我怎么就攤上這事∷秤郑” “怎么了更卒?”我有些...
    開(kāi)封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)稚照。 經(jīng)常有香客問(wèn)我蹂空,道長(zhǎng),這世上最難降的妖魔是什么果录? 我笑而不...
    開(kāi)封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任上枕,我火速辦了婚禮,結(jié)果婚禮上弱恒,老公的妹妹穿的比我還像新娘辨萍。我一直安慰自己,他們只是感情好返弹,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布锈玉。 她就那樣靜靜地躺著,像睡著了一般义起。 火紅的嫁衣襯著肌膚如雪拉背。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天默终,我揣著相機(jī)與錄音椅棺,去河邊找鬼。 笑死齐蔽,一個(gè)胖子當(dāng)著我的面吹牛两疚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肴熏,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼鬼雀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蛙吏?” 一聲冷哼從身側(cè)響起源哩,我...
    開(kāi)封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鸦做,沒(méi)想到半個(gè)月后励烦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泼诱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年坛掠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡屉栓,死狀恐怖舷蒲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情友多,我是刑警寧澤牲平,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站域滥,受9級(jí)特大地震影響纵柿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜启绰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一昂儒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧委可,春花似錦渊跋、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至屈呕,卻和暖如春微宝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背虎眨。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工蟋软, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嗽桩。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓岳守,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親碌冶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子湿痢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 內(nèi)容簡(jiǎn)介此篇文章介紹的是個(gè)人博客的一些配置內(nèi)容,包含博客項(xiàng)目的介紹扑庞、主題配置譬重、圖床配置以及各種第三方功能插件的使用...
    Little_Dragon_閱讀 1,719評(píng)論 0 9
  • 前言 這算是各種文章的集合了,如果你有耐心就看完吧(T▽T) 如果是明確想要哪一種功能的童鞋罐氨,那就直接查找吧( ...
    前端攻城獅阿黃閱讀 3,216評(píng)論 1 6
  • 背景 搭建自己的hexo博客 解決 我的博客最終事例 1.草稿相當(dāng)于很多博客都有的“私密文章”功能臀规。 會(huì)在sour...
    飛奔的阿加西閱讀 12,645評(píng)論 1 13
  • 我愛(ài)你 可是我卻從不言語(yǔ), 我怕說(shuō)出來(lái)栅隐,字眼太輕浮塔嬉,褻瀆了這份純潔的愛(ài)玩徊。 就默默的將它放在了心底。 時(shí)間的推移谨究,讓...
    小馨馨的小世界閱讀 409評(píng)論 3 7
  • 電影《回陣》講的主題是如果你知道了結(jié)局恩袱,讓你重來(lái)一次,那么在那些讓命運(yùn)由盛轉(zhuǎn)衰的節(jié)點(diǎn)记盒,你將如何抉擇憎蛤。而說(shuō)到抉擇,最...
    李想的生活閱讀 541評(píng)論 0 0