Hexo
官网主题(模板): https://hexo.io/themes/
中文版官网:https://hexo.io/zh-cn/docs/
1.安装Node.js
2.安装Hexo
npm install -g hexo-cli
hexo init hexofolder
cd hexofolder
npm install
目录
.
├── _config.yml
├── package.json
├── scaffolds
├── source
| ├── _drafts
| └── _posts
└── themes
_config.yml
网站的 配置 信息,您可以在此配置大部分的参数。
package.json
应用程序的信息。EJS, Stylus 和 Markdown renderer 已默认安装,您可以自由移除。(具体看官方文档,这里就不赘述了)
scaffolds
模版 文件夹。当您新建文章时,Hexo 会根据 scaffold 来建立文件。
Hexo的模板是指在新建的markdown文件中默认填充的内容。例如,如果您修改scaffold/post.md中的Front-matter内容,那么每次新建一篇文章时都会包含这个修改。
source
资源文件夹是存放用户资源的地方。除 _posts 文件夹之外,开头命名为 _ (下划线)的文件 / 文件夹和隐藏的文件将会被忽略。Markdown 和 HTML 文件会被解析并放到 public 文件夹,而其他文件会被拷贝过去。
themes
主题 文件夹。Hexo 会根据主题来生成静态页面。
3.hexo命令
hexo g #hexo generate 生成
hexo s #启动本地web服务器
通过http://localhost:4000 ,访问页面。就可以看到,hexo默认带的主题landscap的效果
Hexo常用的几个命令:
hexo generate (hexo g) 生成静态文件,会在当前目录下生成一个新的叫做public的文件夹
hexo server (hexo s) 启动本地web服务,用于博客的预览
hexo deploy (hexo d) 部署播客到远端(比如github, heroku等平台)
另外还有其他几个常用命令:hexo new “postName” #新建文章
hexo new page “pageName” #新建页面
hexo n “我的博客” == hexo new “我的博客” #新建文章
hexo g == hexo generate #生成
hexo s == hexo server #启动服务预览
hexo d == hexo deploy #部署组合:
hexo d -g #生成部署
hexo s -g #生成预览
hexo server #Hexo会监视文件变动并自动更新,无须重启服务器
hexo server -s #静态模式
hexo server -p 5000 #更改端口
hexo server -i 192.168.1.1 #自定义 IP
hexo clean #清除缓存,若是网页正常情况下可以忽略这条命令
配置
添加其他主题
官网主题(模板): https://hexo.io/themes/,在上面选择自己喜欢的模板,进入它对应的git页面,获得clone的链接。
这里以主题Hexo-theme-zilan为例进行说明, 我这个主题增加了。
安装主题
1 | hexo clean |
启用主题
修改Hexo目录下的_config.yml配置文件中的theme属性,将其设置为Hexo-theme-zilan。
1 | cd themes/Hexo-theme-zilan |
主题
https://www.ccyh.xyz/archives/
add next主题
https://github.com/theme-next/hexo-theme-next
打开站点的_config.yml配置文件,修改主题为next
打开主题的_config.yml配置文件,不是站点主题文件,找到Scheme Settings
https://github.com/WordZzzz/hexo-next
1 | 开始正式发布上线博客文章,在命令行中输入: |
增加侧栏菜单条目
默认的侧栏菜单条目有:首页、归档、标签、关于、搜索等。如果你想要增加其他的菜单条目,修改主题配置文件_config.yml里的Menu Settings中的menu和menu_icons两个地方
自动部署
ssh-keygen -f hexo-deploy-key
https://razeen.me/posts/use-github-action-to-deploy-your-hexo-blog/
https://dreamhomes.top/posts/202111101556/
文章使用
写作
1 | hexo new [layout] <title> |
在命令中指定文章的布局(layout),默认为 post
,可以通过修改 _config.yml
中的 default_layout
参数来指定默认布局。
布局
Hexo 有三种默认布局:post
、page
和 draft
。在创建者三种不同类型的文件时,它们将会被保存到不同的路径;而您自定义的其他布局和 post
相同,都将储存到 source/_posts
文件夹。
布局 | 路径 |
---|---|
post |
source/_posts |
page |
source |
draft |
source/_drafts |
如果你不想你的文章被处理,你可以将 Front-Matter 中的layout:
设为 false
。
文件名称
Hexo 默认以标题做为文件名称,但您可编辑 new_post_name
参数来改变默认的文件名称,举例来说,设为 :year-:month-:day-:title.md
可让您更方便的通过日期来管理文章。
变量 | 描述 |
---|---|
:title |
标题(小写,空格将会被替换为短杠) |
:year |
建立的年份,比如, 2015 |
:month |
建立的月份(有前导零),比如, 04 |
:i_month |
建立的月份(无前导零),比如, 4 |
:day |
建立的日期(有前导零),比如, 07 |
:i_day |
建立的日期(无前导零),比如, 7 |
草稿
Hexo 的一种特殊布局:draft
,这种布局在建立时会被保存到 source/_drafts
文件夹,您可通过 publish
命令将草稿移动到 source/_posts
文件夹,该命令的使用方式与 new
十分类似,您也可在命令中指定 layout
来指定布局。
1 | hexo publish [layout] <title> |
草稿默认不会显示在页面中,您可在执行时加上 --draft
参数,或是把 render_drafts
参数设为 true
来预览草稿。
模版(Scaffold)
在新建文章时,Hexo 会根据 scaffolds
文件夹内相对应的文件来建立文件,例如:
1 | hexo new photo "My Gallery" |
在执行这行指令时,Hexo 会尝试在 scaffolds
文件夹中寻找 photo.md
,并根据其内容建立文章,以下是您可以在模版中使用的变量:
变量 | 描述 |
---|---|
layout |
布局 |
title |
标题 |
date |
文件建立日期 |
支持的格式
Hexo 支持以任何格式书写文章,只要安装了相应的渲染插件。
例如,Hexo 默认安装了 hexo-renderer-marked
和 hexo-renderer-ejs
,因此你不仅可以用 Markdown 写作,你还可以用 EJS 写作。如果你安装了 hexo-renderer-pug
,你甚至可以用 Pug 模板语言书写文章。
只需要将文章的扩展名从 md
改成 ejs
,Hexo 就会使用 hexo-renderer-ejs
渲染这个文件,其他格式同理。
Front-matter
Front-matter 是文件最上方以 ---
分隔的区域,用于指定个别文件的变量
1 |
|
以下是预先定义的参数,您可在模板中使用这些参数值并加以利用。
参数 | 描述 | 默认值 |
---|---|---|
layout |
布局 | |
title |
标题 | 文章的文件名 |
date |
建立日期 | 文件建立日期 |
updated |
更新日期 | 文件更新日期 |
comments |
开启文章的评论功能 | true |
tags |
标签(不适用于分页) | |
categories |
分类(不适用于分页) | |
permalink |
覆盖文章网址 |
分类和标签
只有文章支持分类和标签,您可以在 Front-matter 中设置。在其他系统中,分类和标签听起来很接近,但是在 Hexo 中两者有着明显的差别:分类具有顺序性和层次性,也就是说 Foo, Bar
不等于 Bar, Foo
;而标签没有顺序和层次。
1 | categories: |
1 | categories: |
会使分类Life
成为Diary
的子分类,而不是并列分类。因此,有必要为您的文章选择尽可能准确的分类。
如果你需要为文章添加多个分类,可以尝试以下 list 中的方法。
1 | categories: |
此时这篇文章同时包括三个分类: PlayStation
和 Games
分别都是父分类 Diary
的子分类,同时 Life
是一个没有子分类的分类。
添加标签(标签云)
hexo new page tags
1 |
|
可以打开scaffolds/post.md文件,在tages:上面加入categories:,保存后,之后执行hexo new 文章名
命令生成的文件,页面里就有categories:
项了。
scaffolds目录下,是新建页面的模板,执行新建命令时,是根据这里的模板页来完成的,所以可以在这里根据你自己的需求添加一些默认值。
1 | npm i hexo-tag-cloud --save |
next下config修改配置
tagcloud:
# All values below are same as default, change them by yourself.
min: 14 # Minimun font size in px
max: 30 # Maxium font size in px
start: “#ccc” # Start color (hex, rgba, hsla or color keywords)
end: “#111” # End color (hex, rgba, hsla or color keywords)
amount: 200 # Amount of tags, change it if you have more than 200 tags
theme/next/layout/_macro/sidebar.swig添加如下代码(放在endmacro中)
1 | {% if site.tags.length > 1 %} |
ist_tags()这块儿依据个人情况而定,近千个tag,最后出来的效果让人看了头皮发麻,可改成了list_categories()
文章摘要和截断
more方法
在文章中使用 <!-- more -->
手动进行截断,Hexo 提供的方式 推荐
在文章的 front-matter 中添加 description
,并提供文章摘录
自动形成摘要,在 主题配置文件 中添加:
1 | auto_excerpt: |
默认截取的长度为 150
字符,可以根据需要自行设定
建议使用
<!-- more -->
(即第一种方式),除了可以精确控制需要显示的摘录内容以外, 这种方式也可以让 Hexo 中的插件更好的识别。
next V7.6之后去掉这个功能,推荐插件hexo-excerpt
1 | npm install hexo-excerpt --save |
hexo-excerpt插件
npm install hexo-excerpt –save
打开站点配置文件,加入
1 | excerpt: |
打开主题配置文件,将下面两项设置为 true
1 | excerpt_description: true |
引用块
在文章中插入引言,可包含作者、来源和标题。
别号: quote
1 | {% blockquote [author[, source]] [link] [source_link_title] %} |
插入视频
1 | { youtube video_id [type] [cookie] } |
其他
部署到github pages
把在本地web环境下预览到的博客部署到github上
使用hexo deploy部署
hexo deploy可以部署到很多平台,具体可以参考这个链接. 如果部署到github,需要在配置文件_config.xml中作如下修改:
1 | deploy: |
注意部署到git需要提前安装一个扩展:
npm install hexo-deployer-git –save
然后在命令行中执行
hexo d
即可完成部署
网站搜索
local search
安装
hexo-generator-searchdb
,在站点的根目录下执行以下命令:1
$ npm install hexo-generator-searchdb --save
编辑 站点配置文件,新增以下内容到任意位置:
1
2
3
4
5search:
path: search.xml
field: post
format: html
limit: 10000编辑 主题配置文件,启用本地搜索功能:
1
2
3# Local search
local_search:
enable: true
评论系统
Next 可以支持多种评论系统,多说 友言等等,一番了解后,还是决定使用Hypercomments.支持google登陆
HyperComments注册得到Hypercomments_id配置
Hypercomments在2018开始收费
如需取消某个 页面/文章 的评论,在 md 文件的 front-matter 中增加 comments: false
访问次数阅读量(热度)
leancloud
valine修改为评论数,zh-CN.yml中post下新增comments.valine: 评论数 #可以自定义
在leancloud上设置并在hexo中新增热度
阅读时长
npm install hexo-symbols-count-time –save
需要hexo clean再进行本地测试。
在站点配置文件添加如下配置
symbols_count_time:
symbols: true # 文章字数统计
time: true # 文章阅读时长
total_symbols: true # 站点总字数统计
total_time: true # 站点总阅读时长
exclude_codeblock: false # 排除代码字数统计
在NexT主题配置文件添加如下配置(NexT主题已支持该插件,有的话无需再添加)
Post wordcount display settings
Dependencies: https://github.com/theme-next/hexo-symbols-count-time
symbols_count_time:
separated_meta: true # 是否另起一行(true的话不和发表时间等同一行)
item_text_post: true # 首页文章统计数量前是否显示文字描述(本文字数、阅读时长)
item_text_total: false # 页面底部统计数量前是否显示文字描述(站点总字数、站点阅读时长)
awl: 4 # Average Word Length
wpm: 275 # Words Per Minute(每分钟阅读词数)
suffix: mins.
版权声明
next配置中creative_commons
1 | creative_commons: |
sidebar参数表示在侧边栏有一个版权的图片链接,post参数表示在每一篇文章末尾自动增加本文作者、本文链接、版权声明三个信息,language参数表示点击链接后显示的版权信息的语言。
如果想个性化配置版权信息,可修改配置文件(./themes/next/layout/_partials/post/post-copyright.swig),如果想修改显示的样式可修改配置文件(./themes/next/source/css/_common/components/post/post-copyright.styl) 。
文章生成永久唯一链接
1 | npm install hexo-abbrlink --save |
如果出错缺少什么包,继续安装。
修改根目录站点配置文件config.yml
,改为:
1 | permalink: posts/:abbrlink.html # 此处可以自己设置,也可以直接使用 :/abbrlink |
设置RSS
1 | npm install hexo-generator-feed --save |
然后在_config.yml
文件中配置该插件
1 | feed: |
参数的含义:
type
:RSS
的类型(atom/rss2
)path
: 文件路径,默认是atom.xml/rss2.xml
limit
: 展示文章的数量,使用0或则false代表展示全部hub
:content
: 在RSS
文件中是否包含内容 ,有3个值true/false
默认不填为false
content_limit
: 指定内容的长度作为摘要,仅仅在上面content
设置为false
和没有自定义的描述出现
content_limit_delim
: 上面截取描述的分隔符,截取内容是以指定的这个分隔符作为截取结束的标志.在达到规定的内容长度之前最后出现的这个分隔符之前的内容,,防止从中间截断.
数据统计与分析
google analytics
注册analytics把userid拷贝就可以。
分享功能
addthis
注册(G),可以使用 Google/Facebook/Twitter 账号进行第三方登陆
从下面菜单获得 AddThis id:More.. --> General --> ID
。
在 主题配置文件 中,把#Share
下的 #add_this_id
取消注释, 改为add_this_id: put_your_add_this_id_here
add share button
add_this_id: ra-5e8315ca5fd61bd3
公益404
hexo new page 404
默认在 Hexo 文件夹根目录下 /source/404/index.md ,输入以下代码:
1 | --- |
需要部署上传才可以看到。
about
hexo new page “about”
近期文章
1 | {% if theme.recent_posts %} |
将此代码贴在next/layout/_macro/sidebar.swig
中的if theme.links
对应的endif
后面
在主题的_config.yml
中添加了几个变量,如下:
1 | recent_posts_title: 近期文章 |
相关文章
1 | npm install hexo-related-popular-posts --save |
在 themes/next/_config.yaml 中配置:
1 | related_posts: |
hexo-related-popular-posts 默认展示位置是在页面底部
设置favicon图标
友链
文章置顶
npm uninstall hexo-generator-index –save
npm install hexo-generator-index-pin-top –save
在新增文章的开头中加入top: true,比如:
title: Hello World
abbrlink: 4a17b156
top: true
设置置顶标志
打开\themes\your theme\layout_macro\post.swig
找到
- 原始链接: https://hellolinux.xyz/posts/8c1a34bd.html
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!