给博客添加一个相册页面,以展示自己拍摄的一些照片 (≖ᴗ≖)✧
_config.yml
首先新建hexo new page photos
相册页面,将会在source/
下创建photos/index.md
,在其中添加type: photos
之后在主题_config.yml
文件中对应位置menu
里添加Photos: /photos/ || image
,这样生成后就能在页面的对应页面选项中有该相册Tab。
json
在博客根目录下新建uploadPhotos
文件夹,里面将会存放照片以及相关js文件。
新建uploadPhotos/Images/
文件夹,然后在其中存放需要在页面中展示的照片集(后续需将该文件夹上传至GitHub相册库,若没有对应库,可新建,并上传图片)。
新建uploadPhotos/tool.js
文件,里面内容如下,主要功能是访问照片文件夹,获取每张照片的size和name,并生成对应的json文件:
命令:Git Bash
中键入 node tool.js
生成json
注:若出现Error: Cannot find module 'image-size'
问题,请在Git Bash
中键入对应命令npm install image-size
进行安装。
json文件样例如下:
photo.js
新建themes/next/source/photos/photo.js
文件,其中photos
文件夹是自己创建的。
photos.js
内容如下,主要功能是访问json文件内容,遍历每行数据,并在页面对应位置上放置代码,展示图片(其中图片链接为自个GitHub相册库中图片的链接):
photos.swig
新建themes/next/layout/photos.swig
文件,其内容模仿tag.swig
中内容(直接复制粘贴),然后将其中的tag
全部替换为photos
。
photos.css
新建themes/next/source/photos/photos.css
样式文件,内容如下:
page.swig
修改themes/next/layout/page.swig
文件,添加下面代码中中间page.type === "photos"
那两行。
依旧是该文件中,添加page.type === "photos"
那两行:
_config.yml
在主题配置文件_config.yml
中相关部分,进行相关的配置(lazyload、fancybox):
首先确保_config.yml
中Fancybox
部分是否开启:
之后亦在该文件_config.yml
的末尾部分,找到
在这个vendors
的选项下面,有对应的fancybox
、lazyload
配置区域,填写相应的URL即可:
之后在_layout.swig
中相关信息配置:
重新生成访问,查看成果。
总结
以上就是添加相册功能大概流程,因为步骤比较多,且是通过后期回忆步骤进行记录,所以可能存在些许问题,还请原谅,并请把出现的问题在本文下面的评论中点出,我会进行修改。
后续的实现:
- 将照片上传至GitHub相册库时,由于照片分辨率较高,其都达到了两三M以上,上传速度较慢,导致上传进度缓慢。后期想通过代码将照片进行压缩后再上传至相册库。
- 相册展示整个操作流程为:先上传照片到git库,再生成json文件,之后便是正常的clean、g、d,后期想把压缩、上传照片和生成json文件整合到一起。
- 目前的照片展示都是所有照片一整块放一起进行瀑布流显示,后期想将照片根据其旅游场景或类别、时间不同进行分类至对应文件夹,并根据类别或时间线显式展示出不同文件夹下的照片。