开始搭建
首先看一看 matery 主题原有的相册效果吧,在个人页面内:

这种相册适用于展示少量的图片,如果用来展示数量较多的图片,或者是展示自己生活旅行的摄影的话,效果就不太好了,原因如下:
- 展示图片需要在主题配置文件下,一个一个的添加,太麻烦。添加配置看下图:

- 另外就是在这个关于我的页面来说,页面比较长,效果不好。
废话不多说,直接上教程。
新建相册目录
执行下面的命令:
然后到站点根目录的 source 目录下找名称为 galleries 的目录,打开目录下的 **index.md ** 文档,在原有基础上添加一下配置:
紧接着,在主题配置文件的 menu
属性添加关于相册的菜单
如果需要添加到二级菜单,添加格式为:
添加 ejs 文件和 css 文件
首先新建 gallery.css
,填写的代码内容如下:
然后保存,将此文件放在主题目录下,路径为 matery/source/css。
紧接着,新建 galleries.ejs
文件,添加以下代码:
将此文件放在 matery/layout 目录下,同时再此目录下接着新建 gallery.ejs
文件,添加以下代码:
注意:
- 需要几个文件,我把文件地址放在下面,用浏览器打开链接,就会显示出代码,然后复制粘贴到文加中去就行。开头的是文件路径,如果没有的话,就新建一个就 OK 了。
libs/fancybox/jquery.fancybox.css:
https://cdn.jsdelivr.net/gh/Yafine/cdn@3.3.4/source/libs/fancybox/jquery.fancybox.css
libs/justifiedGallery/justifiedGallery.min.css:
https://cdn.jsdelivr.net/gh/Yafine/cdn@3.3.4/source/libs/justifiedGallery/justifiedGallery.min.css
matery/source/js/crypto-js.js:
https://cdn.jsdelivr.net/gh/Yafine/cdn@3.3.4/source/js/crypto-js.js
matery/source/js/gallery-encrypt.js:
https://cdn.jsdelivr.net/gh/Yafine/cdn@3.3.4/source/js/gallery-encrypt.js
libs/fancybox/fancybox.js:
https://cdn.jsdelivr.net/gh/Yafine/cdn@3.3.4/source/libs/fancybox/fancybox.js
libs/justifiedGallery/justifiedGallery.min.js:
https://cdn.jsdelivr.net/gh/Yafine/cdn@3.3.4/source/libs/justifiedGallery/justifiedGallery.min.js
- 需要修改 galleries.ejs 和 gallery.ejs 文件的几处地方:
- galleries.ejs 文件
需要修改的代码如下:
修改方法:需要把这个链接,改为你存放图片所在位置的链接。
- gallery.ejs 文件
需要修改的代码如下:
修改方法:需要把上面的链接,改为你存放图片所在位置的链接。
**注意:**将你的图片链接地址修改完后,一定要在链接最后加上一个 / 斜杠。否则会导致图片地址错误,访问不到图片。
添加相册 json 配置文件
在站点
目录 source/_data/
下新建一个 galleries.json 的文件,json 代码如下:
字段含义:
name
是相册标题cover
是封面图片description
是相册介绍photos
是图片列表
配置文件建好了之后还没完,只剩最后一个步骤了,在 galleries 目录下建立对应的相册名称目录和文件,比如我这个相册需要新建名称为 2020 目录,然后下面再分别新建 index.md
文件,文件内容为:
查看效果
完成以上步骤,执行命令,在本地查看效果:
我的效果
图床相关事项 (可选)
GitHub 图床不需要这,所以我也没有折腾这个,看小伙伴们的需要,我也没实践,也不知道能不能成功。
为了减少 CDN 流量消耗 (针对七牛云这种有流量限制的),采用下面的方案:
一是手动生成图片的缩略图到另外一个新目录,保持与原相册目录结构一致。比如我一个图片路径为 /gallery/2020/XXX.jpg,缩略图结构应为 /gallery-tiny/2020/XXX.jpg。
在相册列表界面应使用缩略图而不是使用原图。上面代码中 a标签
里的地址是大图地址,点击弹出的时候才会加载,img
标签里的地址是缩略图地址。
缩略图大小我调整为 600px 宽度,这样每个图片体积可减少到 100KB 以下。这样一个 100 张图片的相册,缩略图也不超过 10MB。缩略图我使用 Light Image Resizer
软件批量生成。
上面对应的代码需要改为:
将上面的链接替换为你的链接
二是使用七牛自带的图片样式
功能,该功能提供简单快捷的图片格式转换、缩略、剪裁功能。只需要填写几个参数,即可对图片进行缩略操作,生成各种缩略图。比如我建立了一个名为 w33
的图片样式,该样式的功能就是生成原图 33% 大小的缩略图。假如一个 100×100 的图片,在图片地址后面加上这个样式后就变成 33×33 大小的了。对应代码需改为:
列表页使用 33% 大小的样式,查看大图使用 95% 大小的。上面的叹号是样式分隔符,七牛默认的分隔符有四个:
也可以改成下面的:
生成的图片地址是这样的,你可以复制到地址栏查看效果:
另外建议开启七牛的原图保护功能并配置 Referer 防盗链,防止被恶意刷流量。
加密相册
首先在站点配置文件下添加下面的配置:
在主题目录下新建一下目录和文件,scripts/helpers/encrypt.js,encrypt.js 内代码如下:
然后再主题目录的 source/css.my.css 内添加以下代码:
使用方法
在新建的 index.md 文章内添加 password 属性,后面写上你的密码即可,然后执行命令,查看本地效果即可

注意事项
加密相册需要用到 crypto-js.js 文件,这个文件是安装 hexo-blog-encrypt 插件,然后发布后才会生成的,如果不想安装这个插件,则需要手动安装,命令如下:
然后在插件目录下找到 crypto-js.js 文件,复制出来放到主题目录下的 source/js 目录下,引用路径也要改一下。
当然你也可以用我的,这些加密所需的文件在搭建相册页面时,我已经集成到文件里了。都在上面提到了。
查看加密效果如下

结束语
本次相册的搭建,我是以 Github 图床 为例的,当然你可以使用其他的链接,比如腾讯云,阿里云,七牛云等等,原理已经有了,只是改个链接而已。我实践已经成功,不知道小伙伴们能不能成功?如果教程有错误,请联系我,我会及时更改,谢谢搭建的支持! :smile: :smile: :smile: