零、准备工作
开始之前,你应该预先理解下列标签的意义:
- 代码对比
1 | This is a diff block. |
- 信息提示
这是一个info提示
这是一个success提示
这是一个warning提示
这是一个danger提示
- 名词约定
序号 | 名词 | 说明 | 目录 |
---|---|---|---|
1 | 站点配置文件 | 站点目录下的_config.yml 文件 |
hexo/_config.yml |
2 | 主题配置文件 | 主题目录下的_config.yml 文件 |
hexo/themes/Annie/_config.yml |
3 | 页头背景 | 网页页头背景 | html/header(网页标签) |
一、LOGO和FAVICON
编辑主题配置文件,设置favicon
和logo
的路径即可。当然,你可以使用文字logo或图片logo,即logo
的值为空时,主题使用title
的值作为logo!
1 | # favicon & logo |
二、页头背景图片
文章详情页的页头背景图片为该文章的封面图,其他页的页头背景图片为随机图片或固定图片。原则上,使用固定图片时,应将参数mode
设为normal
,然后设置normal_url
的路径;使用随机图片时,应将参数mode
设为random
,然后设置random_url
的路径。
warning!
注意跨域问题,尽量不使用跨域的图片(即背景图片和网页最好托管在一起,存放于同一服务器)
- 使用固定图片,请确保参数
mode
设为normal
,然后设置参数normal_url
的值
1 | # background_image |
- 使用unplash随机图片,请确保参数
mode
设为normal
,然后设置参数normal_url
的值
1 | # background_image |
- 使用自定义随机图片,请确保参数
mode
设为random
,然后设置参数random_max
、random_url
的值
- 第一步、fork 随机图片集 ;
- 第二步、开启你所fork的仓库的page服务;
- 第三步、获取相对地址;
- 第四步、设置
random_url
为获得的相对地址。
1 | # background_image |
你可以将随机图片集上传到图床(腾讯云、七牛云等),然后获取https://....../Random-img/
格式的地址,最后将random_url
的值设置为该地址。
你也可以在主题目录下的img文件夹中新建Random-img文件夹,将0.jpg
、1.jpg
、2.jpg
、3.jpg
……110.jpg
命名格式的图片放入其中,然后将random_url
的值设置为/img/Random-img/
。
warning!
图片的命名使用连续的整数,
random_max
的值小于等于(0、1、2、3…..110)的最大整数。(ps:如你偏爱访问速度🙃,尽可能使用固定图片)
三、随机名言与当地时间
每次刷新网页,网页页头展示一条随机名言,获取并展示该时区的标准时间。
1 | # show motto |
四、预加载遮罩
预加载遮罩的作用为,确保背景图片加载完成和背景构造完成。当背景加载并构造完成时,主题立即移除遮罩。预加载行为的超时时间默认设为10s,即最多10s左右后,不管背景是否加载并构造完成,主題都移除遮罩。你可以决定是否使用:
1 | # 02-PROLOADER |
五、首页的使用
首页文章展示有两种模式:图文模式cart
和纯净模式pure
。默认图文模式(cart
),你只需编辑主题配置文件,设置index-style
的参数,即可使用或扩展指定的主页文章展示模式。
1 | # 03-INDEX |
5.1文章封面图
1 | title: Annie主题使用说明 |
cover
参数值即为图片路径,路径可为相对路径或绝对路径。
5.2首页的分页
hexo博客默认首页分页,编辑站点配置文件,置参数per_page
为1、2、3…..以达到分页目的,0则不分页。
1 | # Home page setting |
5.3文字的截断
1 | # post_excerpt for index page |
excerpt_cart
为图文模式的截取字数,推荐小于等于100。excerpt_pure
为纯净模式的截取字数,推荐字数为300。excerpt_link
为阅读更多按钮展示与否的开关。
六、归档页的使用
Annie主题的归档页按年归档,不分页。当然,可以置参数archive_generator.per_page
(站点配置文件)为1、2、3…..以达到分页目的。
warning!
Annie主题中无效,分页是对该页面[主页、归档页、标签页、分类页]的文章进行分页,即每次(每页)展示指定数量的文章
1 | archive: 1 |
七、分类页的使用
执行命令,创建分类页
1 | $ hexo new page categories |
然后编辑站点目录下的source/categories/index.md,添加如下Front-matter
1 | title: categories |
八、标签页的使用
执行命令,创建标签页
1 | $ hexo new page tags |
然后编辑站点目录下的source/tags/index.md,添加如下Front-matter
1 | title: tags |
九、关于页的使用
执行命令,创建关于页
1 | $ hexo new page about |
然后编辑站点目录下的source/about/index.md
,添加如下Front-matter
1 | title: about |
十、相册页的使用
执行命令,创建相册页
1 | $ hexo new page gallery |
然后编辑站点目录下的source/gallery/index.md
,添加如下Front-matter
1 | title: gallery |
打开文件data.json(Annie/source/plugin/gallerypage/data.json), 按照json语法在数组[……]中添加gallery的图片数据,请设置合适的eWidth
、eHeight
的值。
warning!
注意:下列注释在json文件中无效,使用时请去掉注释。(注释仅为说明)
1 | [ |
当然,你可以将该文件data.json移至其他目录,相应地修改路径gallery_data
。
1 | # gallery page |
十一、关于站内搜索
若此时仍未配置站内搜索,则执行命令,安装插件hexo-generator-search-zip
1 | $ npm install hexo-generator-search-zip --save |
编辑站点目录下的_config.yml
,添加如下语句
1 | search: |
编辑主题目录下的_config.yml
,添加如下语句
1 | # Local search |
十二、文章页问题
12.1分类和标签
1 | title: Annie主题使用说明 |
分类页的HEXO博客
字段来源于文章Front-matter中的categories
参数值,标签页的说明
字段来源于文章Front-matter中的tags
参数值。hexo博客框架只支持一个同级分类,支持多个同级标签。
12.2相关的文章
文章页将展示与当前文章具有相同分类、相同标签的系列文章,排序规则:分类>标签>时间>不相关文章。你可以决定是否使用该模块,posts_limit
为显示的文章篇数,posts_excerpt
为每篇文章的文字截取数量。
1 | # 04-POST |
info!
只有全站博客文章篇数大于1且
relate.enable
为真时,该模块有效。
12.3阅读量计数
对于leancloud_count
,你必须设置appid、appkey;对于busuanzi_count
,你只需要开启它即可。
- leancloud计数
1 | # post_count |
如果你使用过Valine评论插件,那么leancloud_count的使用十分简单。如果你没有使用过,请参考文章Hexo博客next主题添加文章阅读量统计功能创建leancloud应用,创建counter类,并获取其appid、appkey,且设置上面的appid、appkey为相应的值,最后开启visit_post
。
- 卜蒜子计数
1 | # post_count |
该模块放置于页脚,文章页面只显示文章的阅读量,其他页面只显示总访问量和访客数(等待完善)
12.4文章点赞
如果你完成了12.3阅读量计数的leancloud计数的设置,那么只需要开启like_post
。
1 | # post_count |
12.5 文章排行
1 | # post_count |
如果你完成了12.3阅读量计数的leancloud计数的设置,那么只需要开启topN_post
。(文章阅读排行依赖于12.3阅读量计数)
info!
该模块放置于搜索页面,你可按需定制
12.6文章目录
若一篇文章的正文存在h1、h2、h3等标题,则文章页展示目录按钮。点击目录按钮,页面左侧展示文章目录。当屏幕宽度小于1024px或页面滚动高度大于文章正文高度时,页面隐藏文章目录。
1 | # post_toc |
12.7数学公式
请先设置主题配置文件的mathjax
参数,再于文章的Front-matter中添加mathjax: true
1 | # post_mathJax |
1 | title: Annie主题使用说明 |
12.8代码块高亮
综合考虑hexo自身的代码高亮插件和hexo-pism-plugin高亮插件的特性及代码块解析规则,2019-04-27日更新后,主题弃用hexo-prism-plugin插件,参考&使用了next主题的代码高亮风格。
- 编辑主题配置文件,选择并设置
highlight_theme
的值
1 | # post_code |
- 编辑站点配置文件,设置
highlight
的值
1 | # Writing |
warning!
请尽可能地指定相应代码块的语言类型(html、js、c++、java……),以使高亮风格有效。
12.9代码块复制
只有theme.code_copy.enable
为真且config.highlight.enable
为真时,代码块的复制功能才有效。
1 | # post_code |
12.10文章评论功能
Hexo-theme-Annie主题集成了gitalk、DesertsP版的valine、livere评论插件。
序号 | 评论插件 | 使用方法 |
---|---|---|
1 | gitalk | 正式文档、Annie主题使用Gitalk |
2 | valine | 正式文档、加个Valine评论系统 |
3 | livere | 为Hexo博客添加LiveRe评论系统 |
warning!
对于gitalk,你必须设置clientID、clientSecret;对于Valine,你必须设置appid、appkey;对于livere,你必须设置livere_uid。
12.11文章分享功能
Hexo-theme-Annie主题集成了addThis、baiduShare、shareThis、socialShare分享插件。
序号 | 分享插件 | 使用方法 |
---|---|---|
1 | addThis | 登录addThis获取应用的账户id |
2 | baiduShare | 直接使用 |
3 | shareThis | 登录shareThis获取应用的账户id |
4 | socialShare | 直接使用 |
info!
使用addThis、shareThis时,应注意关闭浏览器的内容拦截插件。
十三、站点分析
序号 | 分析插件 | 使用方法 |
---|---|---|
1 | 卜算子分析 | 直接使用 |
2 | baidu_analytics | 需获取账户id |
3 | cnzz_analytics | 需获取账户id |
4 | google_analytics | 需获取账户id |
5 | tencent_analytics | 需获取账户id |
十四、其他的问题
14.1社交链接
直接增加相应的社交图标、社交链接即可。
1 | # social |
14.2RSS订阅
主题将使用到 hexo-generator-feed 插件来生成atom.xml 文件。执行命令安装该插件:
1 | npm install hexo-generator-feed --save |
编辑站点配置文件,添加相应的参数:
1 | +feed: |
执行 hexo clean & hexo g
重新生成博客文件,你将在 hexo/public/ 目录下看到 atom.xml
文件,说明你已经安装成功了。 (rss的社交链接见于上一节:1. 社交链接)
14.3版权声明
对于copyright ,since
为站点建立年份,cotent_author
为站点作者。
1 | # copyright |
14.4点击页面浮现桃心
1 | # when click, emerge heart |
对于love
,若设置为true,则点击页面时,会出现随机颜色的桃心💚💛💕。对于totop
,若设置为true,则启用返回顶部按钮。
十五、开发定制问题
15.1主题项目结构
1 | ANNIE |
Annie主题基于hexo 3.8.0、ejs、styl开发而成。一般来说,如果你想修改页面的html结构,请到layout目录下添加或修改相应的ejs文件; 如果你想修改页面元素的css样式,请到source/css目录下添加或修改相应的styl文件;如果你想添加一些js代码,原则上,自定义代码片段应添加于source/js/main.js文件中,引入的js文件应放置于source/plugin目录下。
15.2主题字体问题
主题整体字体大小,修改html标签的font-size
属性
1 | html { |
主题整体字体族,修改body标签的font-family
属性
1 | body { |
文章详情页字体族,修改#layout-post类的font-family
属性
1 | #layout-post { |
你可以检索styl文件,查询相应的标签或类,进而设置相应元素的屬性。
15.3页头菜单颜色
页头菜单颜色会根据背景的主题色变化非黑即白。亦即主题色为浅色时,字体为黑;主题色为深色时,字体为白。你可以参考main.js中函数Annie_ColorExtraction(img)
。(修改、完善它)