next的一点自定义
Contents
一、前言
之前的博客用的是jekyll
(基于ruby
)建的,但是后来发现有时有点问题。
查资料对比了一下,最终决定使用hexo
来重新搭建博客。
具体的搭建过程这里不再赘述,网上已有很多详细的资料。
强烈建议备份 markdown 的源文件,有多种方案:
- 使用 hexo-deployer-git,但是发现这种貌似每次提交都会清除原本所有 html 文件,导致 .git 越来越大,使用方法可以参照文档或这篇文章
- 在这篇文章 使用hexo,如果换了电脑怎么更新博客?,看到有人写了个 工具
- 或者在自己
./souce
目录下建个仓库
二、简介
这里简单介绍一下整个博客使用的东西:
- 使用基于
node.js
的hexo
来搭建静态博客 - 代码托管在
gitcafe
及github
上 - 域名是在
godaddy
购买: http://aevit.xyz - 使用
dns.la
转发,国内IP访问gitcafe
上的代码,国外IP访问github
上的代码,保证访问速度 - 使用
markdown
进行写作 - 主题最终采用的是
next
,风格比较喜欢
三、主题说明
主题地址: next
主题的一些官方修改这里不再介绍(配置_config.yml
等操作),具体可参考官网
下面记录一下对此主题的一点自定义修改:
以下修改除非有特别说明,不然前面的路径都是:
/theme/next/
3-1 图片浏览控件-fancybox
- 在移动端使用大图模式(撑满屏幕,浏览效果更好),PC端使用多缩略图模式(一行3张图)
修改
/layout/_layout.swig
,将jQuery
的加载放到head
标签里面
1 | <script type="text/javascript" src="{{ url_for(theme.vendors) }}/jquery/index.js?v=2.1.3"></script> |
- 新增
/source/js/fancybox-aevit.js
文件,代码如下:
1 | $(function() { |
- 新增
/source/css/_common/_component/fancybox-aevit.styl
文件,使PC端上图片每行显示3张,代码如下:
1 | .fancybox-aevit { |
- 在
/source/css/main.styl
,引进上面的css
文件
1 | @import "_common/_component/fancybox-aevit"; |
- 在需要使用九宫格样式的文章正文开头,引进 js 文件:
1 | <script type="text/javascript" src="/js/fancybox-aevit.js"></script> |
- 示例: 太古仓日落
3-2 搜索控件-swiftype
在根目录(注意不是主题的目录)的
_config.yml
里填写swiftype_key
拷贝(新版弄到本地会导致不能搜索)st.js
到/source/js/
(主题目录下的source
),加快js加载速度修改
/source/layout/_partials/search/swiftype.swig
,在input
标签添加placeholder="搜索"
(html5新特性)设置
分类页面
才显示搜索功能,修改/source/layout/_partials/header.swig
,增加is_current('categories')
判断有2处需要修改:
1 | {% if not theme.scheme and theme.swiftype_key and is_current('categories') %} |
1 | {% if hasSearch && is_current('categories') %} |
st.js
会自动加载swiftype
的CDN上的css文件(new_embed-85bc2d1b89a82e5a688394908a05bc0d.css
等),还未找到方法改为加载本地的css
3-3 404页面
- 添加
404.html
到/source/
目录下(注意是主题的source
),具体要做什么修改,直接去改动404.html
即可
3-4 主题的_config.yml
- 开启
categories
页面 - 开启
about
页面
然后修改
/layout/_partials/herder.swig
,给about
链接加target = "_blank"
1 | {% if itemName == "about" %} |
再然后将以前写好的
about.html
(使用impress.js
制作)放到主题目录下的source
目录
修改高亮规则
normal
为night
填写
duoshuo_info
里的admin_enable
、user_id
(在站点的_config.yml
增加duoshuo_user_key
,在/layout/_layout.swig
的多说代码增加data-author-key=""
)use_font_lato
为true
的话,会去http://fonts.googleapis.com
上加载;
不过由于The Great F**king Wall
的原因,加载会相当地慢;
1 | # 如果 不 需要`lato`字体的话,直接修改主题里的`_config.yml`里的`use_font_lato`为`false`即可 |
- 添加
use_local_file
,方便本地调试使用
1 | # 本地调试使用, true: 加载本地的jQuery、font-awesome等文件;false: 加载CDN上的文件 |
3-5 头像
- 在根目录(注意不是主题的根目录)的
/source/images
放一张default_avatar.jpg
图片
3-6 字体
- 修改
themes/next/source/css/_variables/base.styl
1 | $font-family-chinese = "Lantinghei SC", "PingFang SC", 'Microsoft YaHei', "微软雅黑" |
- PS:
OS X 10.12
的Chrome
下,字体会有点粗(Chrome
字体渲染跟Safari
Firefox
的不一样),所以现在$font-family-chinese
改为如下:
1 | "PingFang SC", "Lantinghei SC", 'Microsoft YaHei', "微软雅黑" |
并且修改 ./themes/next/source/css/_common/_core/scaffolding.styl
,给 body
的 css
增加以下代码:
1 | -webkit-font-smoothing: antialiased; |
3-7 标题
修改(现在默认是/next/layout/post.swig
,将//
改为-
|
了)
3-8 CDN
ps: 在
themes/next/_config.yml
里,我添加了use_local_file
,方便本地调试使用
- 修改
themes/next/layout/_layout.swig
, 让jQuery先从七牛CDN加载,加载失败再从本地加载
1 | {% if theme.use_local_file %} |
- 修改
themes/next/layout/_partials/head.swig
,将font-awesome.min.css
改为从七牛CDN加载
1 | {% if theme.use_local_file %} |
Author: Arvit
Link: https://arvit.xyz/2015/06/15/custom-hexo-theme-next/
License: 知识共享署名-非商业性使用 4.0 国际许可协议