搭建Hexo博客進階篇--API和一些小部件(四)

本文續接 Hexo主題自定義篇javascript

這一篇的內容大體爲:css

  • API 說明html

  • 其餘小玩意java

終於要寫完了,Hexo現就這樣吧!node

終點線,我喜歡的人,就在那。git

Hexo API如何使用

其實官方文檔有API的介紹,可是,那寫的都是些什麼東西呀,我感受徹底沒有操做性,因而我本身實踐了一下,整理成文。github

概述

本文件提供您更豐富的 API 信息,使您更容易修改 Hexo 源代碼或編寫插件。在開始以前,請注意本文件僅適用於 Hexo 3 及以上版本。web

搞了大半天,本身也沒有徹底弄明白api怎麼操做,這個仍是先留在這,下次搞清楚了再補上去!npm

這裏有個教程,我以爲講的不太清楚,下次再來吧 json

Hexo高級教程及插件開發

Hexo其餘內容總結

提交搜素引擎

先確認博客是否被收錄

百度,google首頁輸入 site:smallant.top 獲得以下圖所示:

百度收錄狀況

clipboard.png

谷歌收錄狀況

clipboard.png

上面能夠看出,百度尚未將個人網站收錄,google收錄了,百度真的是比較慢~~
驗證網站:
兩個入口:

驗證網站

  • 爲何要驗證網站  站長平臺推薦站長添加主站(您網站的連接也許會使用www 和非 www 兩種網址,建議添加用戶可以真實訪問到的網址),添加並驗證後,可證實您是該域名的擁有者,能夠快捷批量添加子站點,查看全部子站數據,無需再一一驗證您的子站點。

  • 如何驗證網站 首先若是您的網站已使用了百度統計,您可使用統計帳號登陸平臺,或者綁定站長平臺與百度統計帳號,站長平臺支持您批量導入百度統計中的站點,您不須要再對網站進行驗證。

百度站長平臺爲未使用百度統計的站點提供三種驗證方式:文件驗證、html標籤驗證、CNAME驗證。

  1. 文件驗證:您須要下載驗證文件,將文件上傳至您的服務器,放置於域名根目錄下。

  2. html標籤驗證:將html標籤添加至網站首頁html代碼的標籤與標籤之間。

  3. CNAME驗證:您須要登陸域名提供商或託管服務提供商的網站,添加新的DNS記錄。

驗證完成後,咱們將會認爲您是網站的擁有者。爲使您的網站一直保持驗證經過的狀態,請保留驗證的文件、html標籤或CNAME記錄,咱們會去按期檢查驗證記錄。

clipboard.png

只要把文件,放在source根目錄下,部署就ok了,

站點地圖是一種文件,您能夠經過該文件列出您網站上的網頁,從而將您網站內容的組織架構告知Google和其餘搜索引擎。Googlebot等搜索引擎網頁抓取工具會讀取此文件,以便更加智能地抓取您的網站。

咱們要先安裝一下,打開你的hexo博客根目錄,分別用下面兩個命令來安裝針對谷歌和百度的插件

npm install hexo-generator-sitemap --save
npm install hexo-generator-baidu-sitemap --save

在博客目錄的_config.yml中添加以下代碼(我不加也能夠)

# 自動生成sitemap
sitemap:
path: sitemap.xml
baidusitemap:
path: baidusitemap.xml

編譯你的博客

hexo g

若是你在你的博客根目錄的public下面發現生成了sitemap.xml以及baidusitemap.xml就表示成功了。
這時候sitemap.xmlbaidusitemap.xml裏面的內容同樣 部署後你分別訪問

http://smallant.top/sitemap.xml
http://smallant.top/baidusite...

效果以下圖:

clipboard.png

clipboard.png

讓谷歌收錄咱們的網站

谷歌操做比較簡單,就是向Google站長工具提交sitemap

登陸Google帳號,添加了站點驗證經過後,選擇站點,以後在抓取——站點地圖中就能看到添加/測試站點地圖,以下圖:

clipboard.png

這是我最近一次提交狀況

讓百度收錄咱們的網站

谷歌很好搞定,百度就感受很難,我從提交百度到如今寫這篇博客,在百度那邊也只能搜索到一條個人博客,真不容易。
正常狀況,是要等百度爬蟲來爬到你的網站,纔會被收錄。
可是github屏蔽了百度爬蟲目前,因此咱們要主動出擊,咱們本身把網站提交給百度。
這就要使用到百度站長平臺
看下面這張圖:

clipboard.png

咱們獲得四種方式提交百度 , 如何選擇連接提交方式?

  1. 主動推送:最爲快速的提交方式,推薦您將站點當天新產出連接當即經過此方式推送給百度,以保證新連接能夠及時被百度收錄。

  2. 自動推送:最爲便捷的提交方式,請將自動推送的JS代碼部署在站點的每個頁面源代碼中,部署代碼的頁面在每次被瀏覽時,連接會被自動推送給百度。能夠與主動推送配合使用。

  3. sitemap:您能夠按期將網站連接放到sitemap中,而後將sitemap提交給百度。百度會週期性的抓取檢查您提交的sitemap,對其中的連接進行處理,但收錄速度慢於主動推送。

  4. 手動提交:一次性提交連接給百度,可使用此種方式。

通常主動提交比手動提交效果好,這裏介紹主動提交的三種方法

從效率上來講:

主動推送>自動推送>sitemap

下面是我提交的狀況:

clipboard.png

爲何自動推送能夠更快的將頁面推送給百度搜索?

基於自動推送的實現原理問題,當新頁面每次被瀏覽時,頁面URL會自動推送給百度,無需站長彙總URL再進行主動推送操做。
藉助用戶的瀏覽行爲來觸發推送動做,省去了站長人工操做的時間。

自動推送和連接提交有什麼區別?已經在使用連接提交的網站還須要再部署自動推送代碼嗎?

兩者之間互不衝突,互爲補充。已經使用主動推送的站點,依然能夠部署自動推送的JS代碼,兩者一塊兒使用。

什麼樣的網站更適合使用自動推送?

自動推送因爲實現便捷和後續維護成本低的特色,適合技術能力相對薄弱,無能力支持全天候實時主動推送程序的站長。
站長僅需一次部署自動推送JS代碼的操做,就能夠實現新頁面被瀏覽即推送的效果,低成本實現連接自動提交。
同時,咱們也支持主動推送和自動推送代碼配合使用,兩者互不影響。

插入音樂

插入音樂其實很簡單啦,由於markdown是兼容部分html標籤的,因此直接加入iframe就能夠了

<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=186018&auto=1&height=66"></iframe>
//其中的width=298 height=52 均改成0就看不到了,依然能夠播放音樂

有的連接沒有用呢,嗚嗚嗚~
網易雲不讓直接拿鏈接了,請看此文:

如何拿到網易雲的外鏈

emoji插件

如何讓markdown能夠解析emoji呢?實際上咱們發現,在編輯器中輸入 :blush: 並無表情出現,是爲何呢? 這是markdown渲染引擎的問題 ,
Hexo默認是採用hexo-renderer-marked,這個渲染器不支持插件擴展,固然就不行了,還有一個支持插件擴展的是 hexo-renderer-markdown-it,因此咱們可使用這個渲染引擎來支持emoji表情,具體實現過程以下:

  • 更換渲染器
    進入blog跟目錄,執行以下命令

npm un hexo-renderer-marked --save
npm i hexo-renderer-markdown-it --save
  • 安裝emoji插件,執行以下命令

npm install markdown-it-emoji --save
  • 編輯站點配置文件
    就是編輯根目錄的_config.yml文件,添加以下內容

# Markdown-it config
## Docs: https://github.com/celsomiranda/hexo-renderer-markdown-it/wiki
markdown:
  render:
    html: true
    xhtmlOut: false
    breaks: true
    linkify: true
    typographer: true
    quotes: '「」‘’'
  plugins:
    - markdown-it-abbr
    - markdown-it-footnote
    - markdown-it-ins
    - markdown-it-sub
    - markdown-it-sup
    - markdown-it-emoji  # add emoji
  anchors:
    level: 2
    collisionSuffix: 'v'
    permalink: true
    permalinkClass: header-anchor
    permalinkSymbol: ¶

hexo-renderer-markdown-it詳細配置請進: Advanced Configuration

  • 添加emoji表情
    先安裝emoji npm install emoji

安裝完以後,編輯node_modules/markdown-it-emoji/index.js文件,最終文件像:

'use strict';
var emojies_defs      = require('./lib/data/full.json');
var emojies_shortcuts = require('./lib/data/shortcuts');
var emoji_html        = require('./lib/render');
var emoji_replace     = require('./lib/replace');
var normalize_opts    = require('./lib/normalize_opts');
var twemoji           = require('twemoji')  //添加twemoji
module.exports = function emoji_plugin(md, options) {
  var defaults = {
    defs: emojies_defs,
    shortcuts: emojies_shortcuts,
    enabled: []
  };

  var opts = normalize_opts(md.utils.assign({}, defaults, options || {}));

  md.renderer.rules.emoji = emoji_html;
  //使用 twemoji 渲染
  md.renderer.rules.emoji = function(token, idx) {
    return twemoji.parse(token[idx].content);
  };
  md.core.ruler.push('emoji', emoji_replace(md, opts.defs, opts.shortcuts, opts.scanRE, opts.replaceRE));
};
  • 最後一步,css控制表情

只須要在主題CSS中添加你的CSS代碼就好了

.emoji{
   //your style
}

關於圖片被綁定這個問題,須要本身去排查,每一個主題的寫法有差別,經過dom追蹤來查看,進行排除
個人修改在 theme/source/js/main.js

clipboard.png

哈哈,如今能夠顯示了吧,我先來一個

代碼空行問題

問題提出:

代碼1

代碼2

代碼3

顯示是這樣的:

clipboard.png

問題在於:中間的空行,全在兩邊啦,這就致使,代碼塊渲染的時候,中間不能有空行,這顯然是不合理的
爲何在兩邊呢?
由於空行渲染爲

<div class="line"></div>

內容爲空,高度爲零了,注意到前面的標號從1到n的,因此出現這種狀況,知道狀況,修改就有不少辦法了,下面是我用的一種辦法
必須修改Hexo源碼了,修改以下:

clipboard.png

我是採用了,把div的高度固定在20px;這樣解決了代碼塊中間空行的問題

好了,Hexo 的解說到此結束了,若是之後有更新的話,博文也會同步的喲,歡迎大神提出意見!!

參考資料

  1. Hexo官方網站 : https://hexo.io/

  2. Hexo建立我的博客 : http://www.jianshu.com/p/a52b68794a6b

  3. Hexo提交搜素引擎百度和谷歌 : http://www.cnblogs.com/tengj/p/5357879.html

  4. Hexo官方網站 : https://hexo.io/

  5. Hexo添加emoji : http://very9s.net/post/hexo-support-emoji/

相關文章
相關標籤/搜索