使用Hexo主題NexT搭建個(gè)人主頁

摘要:本文記錄了使用Hexo主題NexT搭建個(gè)人主頁的關(guān)鍵步驟啰劲,包括部署损搬、修改主題默認(rèn)樣式和事件起惕、域名配置等內(nèi)容。

環(huán)境

  • git 2.16.1
  • node 8.11.3

參考文檔

步驟概覽

1旺入、安裝git和node.js

  • 安裝過程簡(jiǎn)單兑凿,略。

2茵瘾、配置github

  • 在github新建倉庫<githubUserName>.github.io
  • 注意事項(xiàng)
    • 該倉庫只能建立一個(gè)
    • 建立倉庫后留空備用礼华,不用建立任何默認(rèn)文件,如Readme拗秘、License等圣絮。這個(gè)庫只保留部署生成的代碼(不是源碼!)雕旨,Hexo發(fā)布網(wǎng)站時(shí)扮匠,push命令加了--force參數(shù)捧请,每次提交都會(huì)強(qiáng)制覆蓋遠(yuǎn)程倉庫。
    • 如果要在github保存源碼棒搜,最好是另外開一個(gè)倉庫疹蛉,這時(shí)就和常規(guī)開源項(xiàng)目一樣的操作了。

3力麸、建立工作文件夾

  • 任意位置可款,名稱不限(遵循合法命名規(guī)則為前提)

4、初始化hexo環(huán)境

  • 全局安裝hexo:$ npm install -g hexo-cli
  • 進(jìn)入命令行克蚂,在工作文件夾下執(zhí)行命令:$ hexo init闺鲸。初始化完成后,工作文件夾的結(jié)構(gòu)及主要文件(夾)描述如下:
.
├── _config.yml(站點(diǎn)配置文件)
├── package.json(應(yīng)用程序的信息)
├── scaffolds(模版文件夾埃叭。新建文章時(shí)摸恍,Hexo會(huì)根據(jù)scaffold來建立文件)
├── source(資源文件夾)
|   ├── _drafts(草稿,初始化后不一定能看到赤屋,需要另行配置)
|   └── _posts(保存文章)
└── themes(主題文件夾立镶。Hexo會(huì)根據(jù)主題來生成靜態(tài)頁面。)
├── node_modules
├── .gitignore
├── package-lock.json
  • 驗(yàn)證默認(rèn)主題
    • 工作文件夾下執(zhí)行啟動(dòng)服務(wù)器命令:$ hexo server(可簡(jiǎn)寫為$ hexo s
    • 瀏覽器訪問默認(rèn)地址http://localhost:4000/类早,此時(shí)應(yīng)該能夠看到Hexo的默認(rèn)主題谜慌。

5、引入NexT主題

  • 在工作文件夾下右鍵進(jìn)入命令行莺奔,執(zhí)行命令:$ git clone https://github.com/iissnan/hexo-theme-next themes/next
  • 打開站點(diǎn)配置文件,找到theme 字段变泄,并將其值更改為next令哟。
  • 驗(yàn)證主題
    • 工作文件夾下執(zhí)行啟動(dòng)服務(wù)器命令:$ hexo server
    • 瀏覽器訪問默認(rèn)地址http://localhost:4000/,若配置無誤妨蛹,即可看到NexT主題的默認(rèn)樣式屏富。

6、發(fā)布

  • 安裝git依賴蛙卤。工作文件夾下執(zhí)行命令$ npm install hexo-deployer-git --save
  • 編輯站點(diǎn)配置文件狠半,修改# Deployment條目下的內(nèi)容:
# Deployment
deploy:
  type: git
  repo: https://github.com/githubUserName/githubUserName.github.io.git(倉庫地址,這里用https或ssh均可)
  branch: master(分支名稱)
  • 工作文件夾下執(zhí)行命令$ hexo clean颤难,清除緩存文件 (db.json) 和已生成的靜態(tài)文件 (public)
  • 工作文件夾下執(zhí)行命令$ hexo generate(可簡(jiǎn)寫為$ hexo g)神年,生成靜態(tài)文件
  • 工作文件夾下執(zhí)行命令$ hexo deploy(可簡(jiǎn)寫為$ hexo d),發(fā)布到遠(yuǎn)程倉庫

修改默認(rèn)配置

?網(wǎng)站信息

  • 編輯站點(diǎn)配置文件行嗤,修改# Site條目下的內(nèi)容:
# Site
title: Hexo(網(wǎng)站標(biāo)題已日,默認(rèn)值:Hexo)
subtitle:(網(wǎng)站副標(biāo)題)
description:(網(wǎng)站描述,會(huì)顯示在側(cè)邊欄栅屏,若設(shè)置博客作者頭像飘千,默認(rèn)會(huì)顯示在頭像下方)
keywords:
author: John Doe(作者名字)
language:(設(shè)置語言)
timezone:
  • description主要用于SEO堂鲜,告訴搜索引擎一個(gè)關(guān)于站點(diǎn)的簡(jiǎn)單描述,通常建議在其中包含網(wǎng)站的關(guān)鍵詞
  • author參數(shù)用于主題顯示文章的作者

?語言

  • 編輯站點(diǎn)配置文件护奈,將language設(shè)置成所需語言缔莲,詳見NexT主題文檔。例如選用簡(jiǎn)體中文霉旗,配置如下:
language: zh-Hans

?導(dǎo)航菜單

  • 導(dǎo)航欄項(xiàng)目均為可選

  • 添加標(biāo)簽頁Tags page

    • 工作文件夾下執(zhí)行命令:$ hexo new page "tags",在source下建立tags文件夾痴奏,用于保存每篇文章的標(biāo)簽信息。
    • 編輯tags文件夾下的index.md
    • 設(shè)置頁面類型為tags奖慌。index.md內(nèi)容如下:
    title: All tags(點(diǎn)擊導(dǎo)航欄的標(biāo)簽后抛虫,顯示的文本)
    date: 2018-09-12 10:01:04(這一項(xiàng),改與不改暫時(shí)沒發(fā)現(xiàn)有什么影響)
    type: "tags"
    
    • 主題配置文件中解開menu項(xiàng)目下的相應(yīng)注釋即可简僧。
    # Value before `||` delimeter is the target link.
    # Value after `||` delimeter is the name of FontAwesome icon. If icon (with or without delimeter) is not specified, question icon will be loaded.
    menu:
      home: / || home
      #about: /about/ || user
      #tags: /tags/ || tags
      #categories: /categories/ || th
      archives: /archives/ || archive
      #schedule: /schedule/ || calendar
      #sitemap: /sitemap.xml || sitemap
      #commonweal: /404/ || heartbeat
    
  • 添加分類頁Categories page

    • 同上條所述建椰,在source下建立categories文件夾
    • 修改index.md
    • 主題配置文件中解開menu項(xiàng)目下的相應(yīng)注釋即可。
  • 標(biāo)簽頁數(shù)量岛马、分類數(shù)量棉姐、文章的數(shù)量如果大于0,默認(rèn)顯示位置在側(cè)邊欄啦逆。

?社交媒體Social Media

  • 主題配置文件中解開social項(xiàng)目下相應(yīng)的注釋即可開啟伞矩。該部分的鏈接默認(rèn)顯示位置在側(cè)邊欄中。
social:
  #GitHub: https://github.com/yourname || github
  #E-Mail: mailto:yourname@gmail.com || envelope
  #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
  #Skype: skype:yourname?call|chat || skype

修改默認(rèn)樣式和事件

?修改社交媒體列表的默認(rèn)位置

  • 這里以scheme: Muse的顯示模式為例
  • 社交媒體開啟后默認(rèn)位置顯示在側(cè)邊欄夏志,現(xiàn)在將其移動(dòng)到頁面底部
  • 先執(zhí)行$ hexo s啟動(dòng)服務(wù)器乃坤,在瀏覽器開啟F12,定位到社交媒體的<span>標(biāo)簽沟蔑,發(fā)現(xiàn)樣式links-of-author-item
<div class="links-of-author motion-element" style="opacity: 1; display: block; transform: translateX(0px);">      
    <span class="links-of-author-item">
        <a  target="_blank" title="GitHub">
        <i class="fa fa-fw fa-github"></i>GitHub</a>
    </span>    
</div>
  • themes/next/layout下使用通配符*.swig搜索全部swig文件湿诊,全選后用notepad++一并打開衙伶。注:這里不一定用notepad++做盅,只是一種參考途徑追城。
  • 在全部已經(jīng)打開的文件中搜索links-of-author-item释漆,即可定位有關(guān)社交媒體部分的源碼如下:
{% if theme.social %}
            <div class="links-of-author motion-element">
                {% for name, link in theme.social %}
                  <span class="links-of-author-item">
                    <a href="{{ link.split('||')[0] | trim }}" target="_blank" title="{{ name }}">
                      {% if theme.social_icons.enable %}
                        <i class="fa fa-fw fa-{{ link.split('||')[1] | trim | default('globe') }}"></i>{#
                    #}{% endif %}{#
                      #}{% if not theme.social_icons.icons_only %}{#
                        #}{{ name }}{#
                      #}{% endif %}{#
                  #}</a>
                  </span>
                {% endfor %}
            </div>
{% endif %}
  • 邏輯很簡(jiǎn)單蹋艺,但是需要注意的是暖庄,需要把default('globe')從樣式列表中移除犯眠,否則整個(gè)列表不顯示谊娇。至于其他的問題簿晓,字號(hào)眶拉、字體什么的,添加行內(nèi)樣式即可解決抢蚀。
  • 同理镀层,F(xiàn)12查看腳注元素,在全部swig文件中搜索copyright(找其他樣式也行)
<footer id="footer" class="footer">
    <div class="footer-inner">
        <div class="copyright">? <span itemprop="copyrightYear">2018</span>
            <span class="with-love">
                <i class="fa fa-user"></i>
            </span>
            <span class="author" itemprop="copyrightHolder">John Doe</span>
        </div>
        <div class="powered-by">Powered by <a class="theme-link" target="_blank" >Hexo</a></div>
        <span class="post-meta-divider">|</span>
        <div class="theme-info">Theme — <a class="theme-link" target="_blank" >NexT.Muse</a> v5.1.4</div>
    </div>
</footer>
  • 定位腳注部分的源碼
<div class="copyright">{#
#}{% set current = date(Date.now(), "YYYY") %}{#
#}&copy; {% if theme.footer.since and theme.footer.since != current %}{{ theme.footer.since }} &mdash; {% endif %}{#
#}<span itemprop="copyrightYear">{{ current }}</span>
  <span class="with-love">
    <i class="fa fa-{{ theme.footer.icon }}"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">{{ theme.footer.copyright || config.author }}</span>
…………(略)
  • 接下來,將社交媒體的源碼移動(dòng)到腳注部分的適當(dāng)位置唱逢,完成吴侦。

?修改打賞按鈕樣式及二維碼動(dòng)畫

  • 主題配置文件中解開# Reward項(xiàng)目下相應(yīng)的注釋即可開啟,付款二維碼自行準(zhǔn)備坞古。之后在每篇文章后备韧,會(huì)出現(xiàn)打賞按鈕,點(diǎn)擊則顯示支付二維碼痪枫。
# Reward
reward_comment: Donate comment here(打賞按鈕上方的描述性文字)
wechatpay: /images/wechatpay.jpg(微信)
alipay: /images/alipay.jpg(支付寶)
#bitcoin: /images/bitcoin.png(bitcoin)
  • 首先修改打賞按鈕樣式织堂。在themes/next/source/css下,使用通配符*.styl奶陈,以上例同樣的方式定位css如下易阳,按需修改即可。
#rewardButton {
    cursor: pointer;
    border: 0;
    outline: 0;
    border-radius: 5px;
    padding: 0;
    margin: 0;
    letter-spacing: normal;
    text-transform: none;
    text-indent: 0px;
    text-shadow: none;
}
#rewardButton span {
    display: inline-block;
    width: 80px;
    height: 35px;
    border-radius: 5px;
    color: #fff;
    font-weight: 400;
    font-style: normal;
    font-variant: normal;
    font-stretch: normal;
    font-size: 18px;
    font-family: "Microsoft Yahei";
    background: #F44336;
}
#rewardButton span:hover{
    background: #F7877F;
}
  • 接下來修改二維碼動(dòng)畫吃粒。通過F12潦俺,發(fā)現(xiàn)打賞按鈕直接在屬性里用js實(shí)現(xiàn)了click事件,二維碼出現(xiàn)時(shí)比較生硬徐勃,沒有動(dòng)畫過渡
<button id="rewardButton" disable="enable" onclick="var qr = document.getElementById('QR'); if (qr.style.display === 'none') {qr.style.display='block';} else {qr.style.display='none'}">
    <span>Donate</span>
  </button>
  • themes/next/source/js/src下事示,定位post-details.js,添加jQuery代碼即可實(shí)現(xiàn)動(dòng)畫效果的小幅優(yōu)化
$("#rewardButton").on("click",function(){
    var $btn=$("#QR");
    if ($btn.css('display') === 'none') {
        $btn.fadeIn("normal");
    }
    else {
        $btn.slideUp("normal");
    }
  });

?修改主題的文字對(duì)齊方式

  • 默認(rèn)有4個(gè)主題:
# Schemes
#scheme: Muse
#scheme: Mist
scheme: Pisces
#scheme: Gemini
  • Pisces主題界面比較簡(jiǎn)練僻肖,但是對(duì)齊方式為justify(兩端對(duì)齊)肖爵,多行內(nèi)容展示時(shí)很不美觀;Gemini主題的對(duì)齊方式為left(左對(duì)齊)臀脏,但是界面不如前者簡(jiǎn)練劝堪。基于此需求揉稚,下面要將Pisces主題的對(duì)齊方式修改為left(左對(duì)齊)幅聘。
  • themes/next/source/css/schemes下對(duì)應(yīng)各主題的版式,定位:Pisces/_posts.styl
  • 將默認(rèn)齊方式j(luò)ustify修改為left
.post-body {
  +mobile() {
    text-align: left;
  }
}

? hexo 3.0 以上版本引入圖片的原生方法

  • 修改 _config.yml 配置文件 post_asset_folder 項(xiàng)為 true窃植。
  • 使用 hexo new <name> 命令生成文章時(shí),在 source/_post 目錄里面就會(huì)出現(xiàn)同名文件夾用于存放圖片資源荐糜。對(duì)于已經(jīng)存在的文章巷怜,新建同名文件夾即可。
  • 引用圖片暴氏。例如延塑,要引用 test-pic.png 圖片文件,可插入如下內(nèi)容:
{% asset_img test-pic.png 圖片說明 %}

注:該方法支持 gif 動(dòng)圖答渔。

域名配置(需購買关带,可不備案。以阿里云為例)

  • 進(jìn)入阿里云的域名服務(wù),在解析設(shè)置添加CNAME解析宋雏,將記錄值為<githubUserName>.github.io芜飘,其他設(shè)置按需填寫即可。
添加CNAME解析
  • 在工作文件夾的source目錄新建CNAME文件(無擴(kuò)展名)磨总,文件內(nèi)容僅為購買的域名嗦明。
新建CNAME文件
  • 重新生成部署代碼到github,此時(shí)進(jìn)入<githubUserName>.github.io庫蚪燕,若在Settings中出現(xiàn)Your site is published at 域名的提示娶牌,說明配置成功
查看Setting

效果展示

MrDcheng's Notebook enters from here:http://www.dcheng.site

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市馆纳,隨后出現(xiàn)的幾起案子诗良,更是在濱河造成了極大的恐慌,老刑警劉巖鲁驶,帶你破解...
    沈念sama閱讀 212,332評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鉴裹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡灵嫌,警方通過查閱死者的電腦和手機(jī)壹罚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,508評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寿羞,“玉大人猖凛,你說我怎么就攤上這事⌒髂拢” “怎么了辨泳?”我有些...
    開封第一講書人閱讀 157,812評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)玖院。 經(jīng)常有香客問我菠红,道長(zhǎng),這世上最難降的妖魔是什么难菌? 我笑而不...
    開封第一講書人閱讀 56,607評(píng)論 1 284
  • 正文 為了忘掉前任试溯,我火速辦了婚禮,結(jié)果婚禮上郊酒,老公的妹妹穿的比我還像新娘遇绞。我一直安慰自己,他們只是感情好燎窘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,728評(píng)論 6 386
  • 文/花漫 我一把揭開白布摹闽。 她就那樣靜靜地躺著,像睡著了一般褐健。 火紅的嫁衣襯著肌膚如雪付鹿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,919評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音舵匾,去河邊找鬼俊抵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛纽匙,可吹牛的內(nèi)容都是我干的务蝠。 我是一名探鬼主播,決...
    沈念sama閱讀 39,071評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼烛缔,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼馏段!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起践瓷,我...
    開封第一講書人閱讀 37,802評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤院喜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后晕翠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喷舀,經(jīng)...
    沈念sama閱讀 44,256評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,576評(píng)論 2 327
  • 正文 我和宋清朗相戀三年淋肾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了硫麻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,712評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡樊卓,死狀恐怖拿愧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碌尔,我是刑警寧澤浇辜,帶...
    沈念sama閱讀 34,389評(píng)論 4 332
  • 正文 年R本政府宣布,位于F島的核電站唾戚,受9級(jí)特大地震影響柳洋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叹坦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,032評(píng)論 3 316
  • 文/蒙蒙 一熊镣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧募书,春花似錦轧钓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽弛房。三九已至道盏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荷逞。 一陣腳步聲響...
    開封第一講書人閱讀 32,026評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工媒咳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人种远。 一個(gè)月前我還...
    沈念sama閱讀 46,473評(píng)論 2 360
  • 正文 我出身青樓涩澡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親坠敷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子妙同,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,606評(píng)論 2 350

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