hexo(matery主题)美化,超详细
Hexo-Matery主题美化
网上教程都过于老旧,因此本人决定写一篇2022年的美化教程,所有美化都由本人测试过,可以正常使用。
注意:
首先需要明白什么是站点配置文件,什么是主题配置文件,站点配置文件就是根目录下的配置文件,比如我的博客文件在F:\blog下,那么站点配置文件就是F:\blog_config.yml,主题配置文件就是F:\blog\themes\matery_config.yml。
另外注意,配置文件中的标点符号不要出现中文格式的标点符号,不然运行会出错。
添加 emoji 表情支持
需要安装插件 hexo-filter-github-emojis
1 | npm install hexo-filter-github-emojis --save |
然后在 Hexo 根目录下的 _config.yml 文件中,新增以下的配置项:
1 | githubEmojis: |
执行 hexo clean && hexo g 重新生成博客文件,然后就可以在文章中对应位置看到你用emoji语法写的表情了。
效果::smile::heartbeat::sparkling_heart::cupid::v::whale2::dromedary_camel::dragon_face::crocodile::leopard::poodle::herb:
在网址 🎁 Emoji cheat sheet for GitHub, Basecamp, Slack & more (webfx.com) 中可以找到你想要的表情,然后点击即可复制。
代码高亮
原本的代码显示行号和内容分开了,不美观。代码美化需要安装hexo-prism-plugin 插件
1 | npm i -S hexo-prism-plugin |
修改 Hexo 根目录下 _config.yml 文件中 highlight.enable 的值为 false,并新增 prism 插件相关的配置,主要配置如下:
1 | highlight: #代码块的设置 |
| 参数KEY | 可选值 |
|---|---|
| mode | realtime (Parse code on browser in real time) preprocess (Preprocess code in node) |
| theme | default coy dark funky okaidia solarizedlight tomorrow twilight |
| line_number | true (Show line numbers) false (Default, Hide line numbers) true(显示行号)false(默认情况下,隐藏行号) |
| no_assets | true (Stop loading asset files) false (Default, load script and stylesheets files) |
主题的搜索功能
需要安装hexo-generator-search插件
1 | npm install hexo-generator-search --save |
在Hexo 根目录下的 _config.yml 文件中,新增以下的配置项:
1 | search: |
文章字数统计插件
需要安装 hexo-wordcount 插件
1 | npm i --save hexo-wordcount |
主题下的 _config.yml 文件中,激活以下配置项即可:
1 | wordCount: |
中文链接转拼音
如果你的文章名称是中文的,那么 Hexo 默认生成的永久链接也会有中文,这样不利于 SEO,且 gitment 评论对中文链接也不支持。我们可以用 hexo-permalink-pinyin Hexo 插件使在生成文章时生成中文拼音的永久链接。
安装命令如下:
1 | npm i hexo-permalink-pinyin --save |
在 Hexo 根目录下的 _config.yml 文件中,新增以下的配置项:
1 | permalink_pinyin: |
**注:**除了此插件外,hexo-abbrlink 插件也可以生成非中文的链接。
添加 RSS 订阅支持
安装命令如下:
1 | npm install hexo-generator-feed --save |
在 Hexo 根目录下的 _config.yml 文件中,新增以下的配置项:
1 | feed: |
执行 hexo clean && hexo g 重新生成博客文件,然后在 public 文件夹中即可看到 atom.xml 文件,说明你已经安装成功了。
修改页脚
页脚信息可能需要做定制化修改,而且它不便于做成配置信息,所以可能需要你自己去再修改和加工。修改的地方在主题文件的 /layout/_partial/footer.ejs 文件中,包括站点、使用的主题、访问量等。
修改社交链接
在主题的 config.yml文件中,默认支持 QQ、GitHub 和邮箱等的配置。
你可以在主题文件的/layout/_partial/social-link.ejs 文件中,新增、修改你需要的社交链接地址,增加链接可参考如下代码:
1 | <% if (theme.socialLink.github) { %> |
其中,社交图标(如:fa-github)你可以在 Font Awesome 中搜索找到。以下是常用社交图标的标识,供你参考:
Facebook: fab fa-facebook
Twitter: fab fa-twitter
Google-plus: fab fa-google-plus
Linkedin: fab fa-linkedin
Tumblr: fab fa-tumblr
Medium: fab fa-medium
Slack: fab fa-slack
Sina Weibo: fab fa-weibo
Wechat: fab fa-weixin
QQ: fab fa-qq
Zhihu: fab fa-zhihu
修改打赏的二维码图片
在主题文件的 source/medias/reward 文件中,你可以替换成你的的微信和支付宝的打赏二维码图片。
配置音乐播放器
支持接入第三方音乐,如 QQ 音乐,网易云音乐,酷狗音乐等等
主题的 _config.yml 配置文件中激活 music 配置即可:
1 | # Whether to display the musics. |
server 可选 netease(网易云音乐),tencent(QQ 音乐),kugou(酷狗音乐),xiami(虾米音乐),baidu(百度音乐)。
type 可选 song(歌曲),playlist(歌单),album(专辑),search(搜索关键字),artist(歌手)
id 获取示例:浏览器打开网易云音乐,点击我喜欢的音乐歌单,地址栏有一串数字,playlist 的 id 即为这串数字。
文章 Front-matter 介绍
Front-matter 选项中的所有内容均为非必填的。但原作者建议至少填写 title 和 date 的值。
| 配置选项 | 默认值 | 描述 |
|---|---|---|
| title | Markdown 的文件标题 | 文章标题,强烈建议填写此选项 |
| date | 文件创建时的日期时间 | 发布时间,强烈建议填写此选项,且最好保证全局唯一 |
| author | 根 _config.yml 中的 author | 文章作者 |
| img | featureImages 中的某个值 | 文章特征图,推荐使用图床 |
| top | true | 推荐文章(文章是否置顶),如果 top 值为 true,则会作为首页推荐文章 |
| cover | false | v1.0.2 版本新增,表示该文章是否需要加入到首页轮播封面中 |
| coverImg | 无 | v1.0.2 版本新增,表示该文章在首页轮播封面需要显示的图片路径,如果没有,则默认使用文章的特色图片 |
| password | 无 | 文章阅读密码,如果要对文章设置阅读验证密码的话,就可以设置 password 的值,该值必须是用 SHA256 加密后的密码,防止被他人识破。前提是在主题的 config.yml 中激活了 verifyPassword 选项 |
| toc | true | 是否开启 TOC,可以针对某篇文章单独关闭 TOC 的功能。前提是在主题的 config.yml 中激活了 toc 选项 |
| mathjax | false | 是否开启数学公式支持 ,本文章是否开启 mathjax,且需要在主题的 _config.yml 文件中也需要开启才行 |
| summary | 无 | 文章摘要,自定义的文章摘要内容,如果这个属性有值,文章卡片摘要就显示这段文字,否则程序会自动截取文章的部分内容作为摘要 |
| categories | 无 | 文章分类,本主题的分类表示宏观上大的分类,只建议一篇文章一个分类 |
| tags | 无 | 文章标签,一篇文章可以多个标签 |
| reprintPolicy | cc_by | 文章转载规则, 可以是 cc_by, cc_by_nd, cc_by_sa, cc_by_nc, cc_by_nc_nd, cc_by_nc_sa, cc0, noreprint 或 pay 中的一个 |
注意:
- 如果 img 属性不填写的话,文章特色图会根据文章标题的 hashcode 的值取余,然后选取主题中对应的特色图片,从而达到让所有文章都的特色图各有特色。
- date 的值尽量保证每篇文章是唯一的,因为本主题中 Gitalk 和 Gitment 识别 id 是通过 date 的值来作为唯一标识的。
- 如果要对文章设置阅读验证密码的功能,不仅要在 Front-matter 中设置采用了 SHA256 加密的 password 的值,还需要在主题的 _config.yml 中激活了配置。有些在线的 SHA256 加密的地址,可供你使用:开源中国在线工具、chahuo、站长工具。
- 您可以在文章 md 文件的 front-matter 中指定 reprintPolicy 来给单个文章配置转载规则
首先为了新建文章方便,我们可以修改一下文章模板,可以将/scaffolds/post.md修改为如下代码:
1 |
|
这样新建文章后 一些Front-matter参数不用你自己补充了,修改对应信息就可以了。
最简示例
1 |
|
最全示例
1 |
|
博客自定义修改
修改主题颜色
在主题文件的 /source/css/matery.css 文件中修改
1 | /* 整体背景颜色,包括导航、移动端的导航、页尾、标签页等的背景颜色. */ |
修改 banner 图和文章特色图
在 /source/medias/banner 文件夹中更换你喜欢的 banner 图片,主题代码中是每天动态切换一张,只需 7 张即可。如果你会 JavaScript 代码,可以修改成你自己喜欢切换逻辑,如:随机切换等,banner 切换的代码位置在 /layout/_partial/bg-cover-content.ejs 文件的 代码中:
1 | $('.bg-cover').css('background-image', 'url(/medias/banner/' + new Date().getDay() + '.jpg)'); |
在 /source/medias/featureimages 文件夹中默认有 24 张特色图片,你可以再增加或者减少,并需要在 _config.yml 做同步修改。
如果想改为每小时或者每分钟切换 banner 图的话,需要将 getDay() 改为 getHours() 或者 getMinutes() 即可。
修改网站相关信息
1.网站信息的修改
1 | # 这是根目录下的配置文件信息 |
1 | # 这是主题配置文件的相关信息 |
注意:
网站打字效果副标题默认有两个,即sub1和sub2,如果想写多个,则需要修改两处地方,首先修改配置文件,如上面所示,在sub1和sub2后面继续添加即可,然后在去主题目录下的layout文件夹下的_partial文件夹,修改bg-cover-content.ejs文件,大约在12行左右,如下面所示:
1 | <div class="description center-align"> |
2.社交链接的修改
默认的配置信息为:
1 |
|
如果想添加简书,CSDN,掘金,博客园等等,需要在主题配置文件添加相关配置,可以进行如下配置(例如):
1 | socialLink: |
其中的weixin我是用的图片链接,会跳转到一个新的标签页,之后还需要修改ejs文件,文件在主题目录下的layout文件夹下的_partial文件夹,修改social-link.ejs,添加相关的配置,个人添加的配置如下(例如):
1 | <% if (theme.socialLink.jianshu) { %> |
动态标题
实现方法,直接在themes/matery/layout/layout.ejs文件中添加如下代码:
1 | <script type="text/javascript"> |
修改导航栏颜色以及透明效果
打开themes/matery/source/css/matery.css文件,大约在250行,有一个.bg-color属性,修改其属性值即可,代码如下:
1 | .bg-color { |
鼠标点击文字特效
实现方法,引入js文件,在主题文件下的/source/js/下新建click_show_text.js,其代码如下:
1 | var a_idx = 0; |
修改网站背景图
主题配置文件_config.yml
1 | background: |
外链跳转插件
hexo-external-link是一个跳转外链相关插件。自动为所有html文件中外链的a标签生成对应的属性。 比如 设置target=’_blank’, rel=’external nofollow noopener noreferrer’ 告诉搜索引擎这是外部链接,不要将该链接计入权重。 同时自动生成外链跳转页面,默认在根目录下 go.html;
使用 npm 安装
1 |
|
之后再hexo博客站点根目录下添加如下配置:
1 | hexo_external_link: |
1 | enable - 是否开启hexo_external_link插件 - 默认 false |
添加动态科技线条背景
在themes/matery/layout/layout.ejs文件中添加如下代码:
1 | <!--动态线条背景--> |
其中:
**color:**表示线条颜色,三个数字分别为(R,G,B),默认:(0,0,0)
**opacity:**表示线条透明度(0~1),默认:0.5
**count:**表示线条的总数量,默认:150
**zIndex:**表示背景的z-index属性,css属性用于控制所在层的位置,默认:-1
添加鼠标点击烟花爆炸效果
首先在themes/matery/source/js目录下新建fireworks.js文件,打开这个网址连接,将内容复制粘贴到fireworks.js即可。
然后再themes/matery/layout/layout.ejs文件内添加下面的内容:
1 | <canvas class="fireworks" style="position: fixed;left: 0;top: 0;z-index: 1; pointer-events: none;" ></canvas> |
然后hexo clean && hexo g && hexo s即可,就可以看到效果了。
添加樱花飘落效果
在themes/matery/source/js目录下新建sakura.js文件,打开这个网址连接,将内容复制粘贴到sakura.js即可。
然后再themes/matery/layout/layout.ejs文件内添加下面的内容:
1 | <script type="text/javascript"> |
添加雪花飘落效果
跟樱花类似
在themes/matery/source/js目录下新建snow.js文件,打开这个网址,将内容复制粘贴到cursor.js即可。
然后再themes/matery/layout/layout.ejs文件内添加下面的内容:
1 | <script src="/js/snow.js"></script> |
添加鼠标彩虹星星掉落跟随效果
在themes/matery/source/js目录下新建cursor.js文件,打开这个网址,将内容复制粘贴到cursor.js即可。
然后再themes/matery/layout/layout.ejs文件内添加下面的内容:
1 | <script src="/js/cursor.js"></script> |
添加自定义页面
首先在站点目录下的source文件夹下新建aboutme文件,文件名可自定义,然后编写一个index.html放入aboutme文件夹下,然后在主题配置文件下的导航配置信息添加下面的配置:
1 | About: |
然后在站点配置文件下,找到skip_render,在后面添加属性,如下:
1 | skip_render: aboutme/** # 其意思为在对文件进行渲染时跳过aboutme文件下的所有文件 |
知道方法后,你可以添加你自己想要添加的页面,让你的博客内容更加充实。
文章生成永久链接
主题默认的文章链接配置是
1 | premalink: :year/:month/:day/:title |
这种生成的链接地址很长,文章版权的链接地址会出现一大串字符编码,一点也不好看。因此需要修改文章生成链接的格式。
首先在根目录下执行下面的命令:
1 | npm install hexo-abbrlink --save |
然后再站点配置文件下添加如下配置:
1 | abbrlink: |
再将站点配置文件的permalink的值修改为:
1 | permalink: posts/:abbrlink.html |
生成文章的链接格式就会是如下样例(官方样例):
1 | crc16 & hex |
生成完后,原md文件的Front-matter 内会增加abbrlink 字段,值为生成的ID 。这个字段确保了在我们修改了Front-matter 内的博客标题title或创建日期date字段之后而不会改变链接地址。
看板娘模块的安装和使用
模块安装:
1 | cnpm install --save hexo-helper-live2d |
下载完成后,可以在node_modules文件夹中找到自己安装的插件。
然后下载你想要的看板娘模块(可以自己到网上找哪个合心意的),执行命令:
1 | cnpm install {packagename} |
最后,打开hexo根目录下的 _config.yml 添加如下代码
1 | live2d: |
这样在左下角有看板娘啦!
优化网站加载速度
1.修改轮播图图片格式为Webp
你可以直接在 /source/medias/banner 文件夹中更换你喜欢的 banner 图片,主题代码中是每天动态切换一张,只需 7 张即可。默认的图片格式为Jpg,为了加快网站加载速度,可以将jpg格式修改为webp从而加快网站加载。
在/layout/_partial/bg-cover-content.ejs 文件的 <script></script> 代码中进行以下修改:
1 | //修改前 |
2.修改文章封面图片格式为Webp
在 /source/medias/featureimages 文件夹中默认有 24 张特色图片,你可以再增加或者减少,并需要在 _config.yml 做同步修改。
打开主题配置文件themes\hexo-theme-matery\_config.yml中的_config.yml文件,之后在文本编辑器内搜索featureimages,将图片后缀的jpg文件替换成Webp即可!
添加ICP/公网安备案号
打开hexo/themes/matery/layout/_partial路径下的footer.ejs文件,在合适的未知插入如下代码:
1 | <img src="https://gitee.com/marmalade0/images/blob/master/www.marmalade.vip/beian.png"> <a href="http://www.beian.miit.gov.cn/" style="color:#f72b07" target="_blank">你自己的备案号,如鲁公网安备xxxxxx号</a> |
自定义字体
全局字体自定义
1.博客站点根目录下的 source 文件夹内创建一个名为 font 的文件夹,即文件夹路径为 /source/font/ ,用来统一存放你要用到的字体。
2.将你要用到的字体放入上述创建的文件夹内,字体名称最好为英文,如 /source/font/myFont.ttf
3.找到主题文件夹下的 my.css 文件,路径为 /themes/matery/source/css/my.css ,填入下面的代码:
1 |
|
将上面的
myFont改成你自己的字体名称即可
局部字体自定义
如果你不想全局字体自定义的话,就可以尝试一下局部字体自定义。
1.与全局字体自定义一样,我们需要创建 font 文件夹,将需要的字体放入,与上面的第 1、2 步一样,可以参考一下
2.找到主题文件夹下的 my.css 文件,路径为 /themes/matery/source/css/my.css ,并将下面的代码填入文件中。
1 |
|
**注意:**这里是创建了一个
diyFont的类,注意与全局字体自定义相区别
当想要指定某个地方的字体自定义时候,可以通过右键审查元素找到那个字体的类,给于类或者在原有的类下面给于属性即可。
例子:
找到你要自定义的区域,如我要自定义博客主页的标题字体,那么就要找到相应的文件,也就是 /themes/matery/layout/_partial/bg-cover-content.ejs ,在相应的地方加入我刚刚自定义的 diyFont 类。如将下面的:
1 | <div class="title center-align"> |
改为
1 | <div class="title center-align diy-font"> |
修改方法也就是在 <div class="title center-align"> 中增加自己定义的 CSS 类名,什么是类名,有些小伙伴也许不知道其含义,自行百度吧,也就是在 class="" 中添加自己自定义的名称。
之后的方法跟全局自定义字体一样,只不过需要将原本直接给 body 的属性变成给你设置的类,比如:
1 | @font-face{ |
然后执行命令,查看本地效果即可。
给卡片区添加背景
进入主题文件的 /source/css/matery.css文件中,有个 body 选择器,加了中间两行之后长这样:
1 | body { |
也可以加 url 用图片做背景:
1 | body { |
添加天气小插件
首先打开和风天气插件网站,注册完成后,配置自己的插件,选择自定义插件 ——> 自定义样式 ——> 生成代码,然后会生成一段代码,复制粘贴到 themes/matery/layout/layout.ejs 即可。






