当我换一个新主题时

Hexo 的很多特性都与主题密切相关,由于主题的高度独立性,导致使用者切换一个主题时可能要重新配置很多东西。

前段时间不小心手贱手残执行了一次 hexo init (欢迎作死尝试),结果所有配置相关的文件都被初始化了,只有一些 page 文件夹和 post 文件夹免受于害。于是所有对主题的修改和编辑都得重新弄一次(这里也由于我的疏忽大意,之前虽然有备份博客的源文件夹,不过因为阴差阳错居然 ignore 了主题文件夹,所以一切还是白搭)。

根据我的日常使用,总共有这几个部分是需要首先修改的:

有言评论插件

虽然大多数人用多说,但是我感觉多说不仅样式丑,而且迁移起来难出翔,后台管理各种 bug,虽然有言也不完美,但至少界面简洁安装简单并且不用配置什么 key path 什么的,自动识别 url。关于有言的安装十分简单,只要将官方提供的一段 js 添加到 article.ejs 文件中即可。位置可参考一般主体自带的多说或者 disqus 的代码。

百度统计

百度统计也好办,参考 Google 分析代码即可,一般主题都有。

微博秀

添加一个文件到 widget ,代码从微博秀地址获得。

友情链接

这个很简单,一般主题提供配置。不过我觉得这个是主题不想关的,完全可以放到主配置文件中。这个可以根据自己需求把 theme.links 改成 config.links

fancybox

由于我有在某些图片上不使用 fancybox 效果的需求,所以最好更改一下,更改方法参考以前博文:http://twiceyuan.com/2014/08/12/disable-fancybox/

文章目录

参考 http://twiceyuan.com/2015/01/12/%E4%B8%BAHexo%E4%B8%BB%E9%A2%98%E6%B7%BB%E5%8A%A0%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95/

Hexo升级3.0啦

Hexo 最近也升级 3.0 了。3.0 所有插件貌似都进行了模块化,在配置时附带了一些最基本的,其他的需要用户单独安装,比如 git 部署工具、RSS 生成工具。

详细的还是参考官方文档吧,现在中文也支持的很好。

另外,之前的添加的 hexo new 之后打开文件的脚本也失效,新的脚本为:

1
2
3
4
5
var spawn = require('child_process').spawn;
// Hexo 3
hexo.on('new', function(data){
spawn('open', [data.path]);
});

为Hexo添加文章目录

Hexo在2.4.1添加了文章目录(Table Of Contents)功能,但是一些主题里可能默认并没有集成,下午搜索学习了一下,把方法做个总结(以Landscape为例):

在某些图片上禁用 fancybox

fancybox 这玩意儿挺不错的,不开启它的话,在点击图片的时候,时常会突兀的跳转到一个图片的页面上,体验很不好。

但是有些情况下,也希望 某些图片不使用 fancybox 的幻灯片效果(比如本博个人简介中的头像),在 hexo 中可以这样实现:

找到 主题文件夹下的 script 文件,比如 landscape-plus 就是 themes/landscape-plus/source/js/script.js,找到这段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Caption
$('.article-entry').each(function(i){
$(this).find('img').each(function(){
if ($(this).parent().hasClass('fancybox')) return;
var alt = this.alt;
if (alt) $(this).after('<span class="caption">' + alt + '</span>');
$(this).wrap('<a href="' + this.src + '" title="' + alt + '" class="fancybox"></a>');
});
$(this).find('.fancybox').each(function(){
$(this).attr('rel', 'article' + i);
});
});
if ($.fancybox){
$('.fancybox').fancybox();
}

if ($(this).parent().hasClass('fancybox')) return;下插入if ($(this).hasClass('nofancybox')) return;意思为如果遇到 nofancybox 类则跳过,这样在不需要 fancybox 显示 img 标签上的 class 改为 nofancybox 就可以禁用 fancybox 了。

Hexo 自动添加 Read More 标记

hexo 在写作的时候,如果在文中添加<!--more-->则该标记之前的部分就会成为该文章的简述,显示在首页里。但自己一直感觉如果可以自行截取会更好,Google 了一下也有人有这样的需求,太没有贴出来具体的方法,在简单的学习了一下 JS 之后贴出自己的解决方案。

怎么在 hexo new 的时候自动打开创建的文档?

看到作者 github 上有人问这个问题,然后作者给的方案:

在 script 文件夹下创建脚本文件,内容为:

var exec = require('child_process').exec;

hexo.on('new', function(target){
  exec('open -a Mou ' + target);
});

我习惯使用 Mou 作为 markdown 的编辑器,当然你也可以换成自己喜欢的。这样在使用 hexo new创建新文档时就可以使用脚本中设置的编辑器自动打开了。

Hexo 3.0 之后失效,请参考 http://twiceyuan.com/2015/03/15/Hexo%E5%8D%87%E7%BA%A73-0/