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

本文续接 Hexo主题自定义篇

这一篇的内容大致为:

  • API 说明
  • 其他小玩意

终于要写完了,Hexo现就这样吧!

终点线,我喜欢的人,就在那。

Hexo API如何使用

其实官方文档有API的介绍,但是,那写的都是些什么东西呀,我感觉完全没有操作性,于是我自己实践了一下,整理成文。

概述

本文件提供您更丰富的 API 信息,使您更容易修改 Hexo 源代码或编写插件。在开始之前,请注意本文件仅适用于 Hexo 3 及以上版本。

搞了大半天,自己也没有完全弄明白api怎么操作,这个还是先留在这,下次搞清楚了再补上去!

这里有个教程,我觉得讲的不太清楚,下次再来吧 :sob:

Hexo高级教程及插件开发

Hexo其他内容总结

提交搜素引擎

先确认博客是否被收录

百度,google首页输入 site:smallant.top 得到如下图所示:

百度收录情况

百度收录

谷歌收录情况

谷歌收录

上面可以看出,百度还没有将我的网站收录,google收录了,百度真的是比较慢~~
验证网站:
两个入口:

验证网站

  • 为什么要验证网站  站长平台推荐站长添加主站(您网站的链接也许会使用www 和非 www 两种网址,建议添加用户能够真实访问到的网址),添加并验证后,可证明您是该域名的拥有者,可以快捷批量添加子站点,查看所有子站数据,无需再一一验证您的子站点。
  • 如何验证网站 首先如果您的网站已使用了百度统计,您可以使用统计账号登录平台,或者绑定站长平台与百度统计账号,站长平台支持您批量导入百度统计中的站点,您不需要再对网站进行验证。

百度站长平台为未使用百度统计的站点提供三种验证方式:文件验证、html标签验证、CNAME验证。

  1. 文件验证:您需要下载验证文件,将文件上传至您的服务器,放置于域名根目录下。
  2. html标签验证:将html标签添加至网站首页html代码的标签与标签之间。
  3. 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.xmlbaidusitemap.xml里面的内容一样 部署后你分别访问

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

效果如下图:

BaiduSiteMap
GoogleSiteMap

让谷歌收录我们的网站

谷歌操作比较简单,就是向Google站长工具提交sitemap

登录Google账号,添加了站点验证通过后,选择站点,之后在抓取——站点地图中就能看到添加/测试站点地图,如下图:

谷歌提交

这是我最近一次提交情况

让百度收录我们的网站

谷歌很好搞定,百度就感觉很难,我从提交百度到现在写这篇博客,在百度那边也只能搜索到一条我的博客,真不容易。
正常情况,是要等百度爬虫来爬到你的网站,才会被收录。
但是github屏蔽了百度爬虫目前,所以我们要主动出击,我们自己把网站提交给百度。
这就要使用到百度站长平台
看下面这张图:

百度提交

我们得到四种方式提交百度 , 如何选择链接提交方式?

  1. 主动推送:最为快速的提交方式,推荐您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录。
  2. 自动推送:最为便捷的提交方式,请将自动推送的JS代码部署在站点的每一个页面源代码中,部署代码的页面在每次被浏览时,链接会被自动推送给百度。可以与主动推送配合使用。
  3. sitemap:您可以定期将网站链接放到sitemap中,然后将sitemap提交给百度。百度会周期性的抓取检查您提交的sitemap,对其中的链接进行处理,但收录速度慢于主动推送。
  4. 手动提交:一次性提交链接给百度,可以使用此种方式。

一般主动提交比手动提交效果好,这里介绍主动提交的三种方法

从效率上来说:

主动推送>自动推送>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就看不到了,依然可以播放音乐

有的链接没有用呢,呜呜呜~~~~~
网易云不让直接拿连接了,请看此文:

如何拿到网易云的外链

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

change

哈哈,现在可以显示了吧,我先来一个 :blush:

代码空行问题

问题提出:

代码1

代码2

代码3

显示是这样的:

image.png

问题在于:中间的空行,全在两边啦,这就导致,代码块渲染的时候,中间不能有空行,这显然是不合理的
为什么在两边呢?
因为空行渲染为

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

内容为空,高度为零了,注意到前面的标号从1到n的,所以出现这种情况,知道情况,修改就有很多办法了,下面是我用的一种办法
必须修改Hexo源码了,修改如下:

change

我是采用了,把div的高度固定在20px;这样解决了代码块中间空行的问题

好了,Hexo 的解说到此结束了,如果以后有更新的话,博文也会同步的哟,欢迎大神提出意见!!

参考资料

  1. <b>Hexo官方网站 : https://hexo.io/</b>
  2. <b>Hexo创建个人博客 : http://www.jianshu.com/p/a52b68794a6b</b>
  3. <b>Hexo提交搜素引擎百度和谷歌 : http://www.cnblogs.com/tengj/p/5357879.html</b>
  4. <b>Hexo官方网站 : https://hexo.io/</b>
  5. <b>Hexo添加emoji : http://very9s.net/post/hexo-support-emoji/</b>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容