本文續接 Hexo主題自定義篇javascript
這一篇的內容大體爲:css
API 說明html
其餘小玩意java
終於要寫完了,Hexo現就這樣吧!node
終點線,我喜歡的人,就在那。git
其實官方文檔有API的介紹,可是,那寫的都是些什麼東西呀,我感受徹底沒有操做性,因而我本身實踐了一下,整理成文。github
本文件提供您更豐富的 API 信息,使您更容易修改 Hexo 源代碼或編寫插件。在開始以前,請注意本文件僅適用於 Hexo 3 及以上版本。web
搞了大半天,本身也沒有徹底弄明白api怎麼操做,這個仍是先留在這,下次搞清楚了再補上去!npm
這裏有個教程,我以爲講的不太清楚,下次再來吧 json
百度,google首頁輸入 site:smallant.top
獲得以下圖所示:
百度收錄狀況
谷歌收錄狀況
上面能夠看出,百度尚未將個人網站收錄,google收錄了,百度真的是比較慢~~
驗證網站:
兩個入口:
爲何要驗證網站
站長平臺推薦站長添加主站(您網站的連接也許會使用www 和非 www 兩種網址,建議添加用戶可以真實訪問到的網址),添加並驗證後,可證實您是該域名的擁有者,能夠快捷批量添加子站點,查看全部子站數據,無需再一一驗證您的子站點。
如何驗證網站
首先若是您的網站已使用了百度統計,您可使用統計帳號登陸平臺,或者綁定站長平臺與百度統計帳號,站長平臺支持您批量導入百度統計中的站點,您不須要再對網站進行驗證。
百度站長平臺爲未使用百度統計的站點提供三種驗證方式:文件驗證、html標籤驗證、CNAME驗證。
文件驗證:您須要下載驗證文件,將文件上傳至您的服務器,放置於域名根目錄下。
html標籤驗證:將html標籤添加至網站首頁html代碼的標籤與標籤之間。
CNAME驗證:您須要登陸域名提供商或託管服務提供商的網站,添加新的DNS記錄。
驗證完成後,咱們將會認爲您是網站的擁有者。爲使您的網站一直保持驗證經過的狀態,請保留驗證的文件、html標籤或CNAME記錄,咱們會去按期檢查驗證記錄。
只要把文件,放在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.xml
跟baidusitemap.xml
裏面的內容同樣 部署後你分別訪問
http://smallant.top/sitemap.xml
http://smallant.top/baidusite...
效果以下圖:
谷歌操做比較簡單,就是向Google站長工具提交sitemap
登陸Google帳號,添加了站點驗證經過後,選擇站點,以後在抓取——站點地圖中就能看到添加/測試站點地圖,以下圖:
這是我最近一次提交狀況
谷歌很好搞定,百度就感受很難,我從提交百度到如今寫這篇博客,在百度那邊也只能搜索到一條個人博客,真不容易。
正常狀況,是要等百度爬蟲來爬到你的網站,纔會被收錄。
可是github屏蔽了百度爬蟲目前,因此咱們要主動出擊,咱們本身把網站提交給百度。
這就要使用到百度站長平臺
看下面這張圖:
咱們獲得四種方式提交百度 , 如何選擇連接提交方式?
主動推送:最爲快速的提交方式,推薦您將站點當天新產出連接當即經過此方式推送給百度,以保證新連接能夠及時被百度收錄。
自動推送:最爲便捷的提交方式,請將自動推送的JS代碼部署在站點的每個頁面源代碼中,部署代碼的頁面在每次被瀏覽時,連接會被自動推送給百度。能夠與主動推送配合使用。
sitemap:您能夠按期將網站連接放到sitemap中,而後將sitemap提交給百度。百度會週期性的抓取檢查您提交的sitemap,對其中的連接進行處理,但收錄速度慢於主動推送。
手動提交:一次性提交連接給百度,可使用此種方式。
通常主動提交比手動提交效果好,這裏介紹主動提交的三種方法
從效率上來講:
主動推送>自動推送>sitemap
下面是我提交的狀況:
爲何自動推送能夠更快的將頁面推送給百度搜索?
基於自動推送的實現原理問題,當新頁面每次被瀏覽時,頁面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就看不到了,依然能夠播放音樂
有的連接沒有用呢,嗚嗚嗚~
網易雲不讓直接拿鏈接了,請看此文:
如何讓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
哈哈,如今能夠顯示了吧,我先來一個
問題提出:
代碼1 代碼2 代碼3
顯示是這樣的:
問題在於:中間的空行,全在兩邊啦,這就致使,代碼塊渲染的時候,中間不能有空行,這顯然是不合理的
爲何在兩邊呢?
由於空行渲染爲
<div class="line"></div>
內容爲空,高度爲零了,注意到前面的標號從1到n的,因此出現這種狀況,知道狀況,修改就有不少辦法了,下面是我用的一種辦法
必須修改Hexo源碼了,修改以下:
我是採用了,把div的高度固定在20px;這樣解決了代碼塊中間空行的問題
好了,Hexo 的解說到此結束了,若是之後有更新的話,博文也會同步的喲,歡迎大神提出意見!!
Hexo官方網站 : https://hexo.io/
Hexo建立我的博客 : http://www.jianshu.com/p/a52b68794a6b
Hexo提交搜素引擎百度和谷歌 : http://www.cnblogs.com/tengj/p/5357879.html
Hexo官方網站 : https://hexo.io/
Hexo添加emoji : http://very9s.net/post/hexo-support-emoji/