今天突然想给博客搭建相册,浏览了不少关于hexo搭建相册教程,发现很多下面这样子的,还是很漂亮的。自己尝试了一番,相册需要缩略图和原图两个文件夹,其中缩略图都是裁剪好后的正方形,感觉不是自己想要的。
后来发现给hexo静态博客添加动态相册功能和hexo博客添加一级分类相册功能两位大佬的博客相册为两级结构,不用一下子加载整个网页的图片,很喜欢这种布局。于是花费两天时间,参考Hexo NexT主题添加多级相册功能,搭建了属于自己的相册。
整体结构
本文相册是根据腾讯COS实现的,先创建相册一级目录和相册模板, 运行编写好的blog_cos.py文件,自动将下载的图片数据存放到galleries.yaml文件中,并根据腾讯COS相册文件结构创建对应的的二级相册目录。
- /blog/source_data/galleries.yaml 存放所有图片数据
- /blog/source/photos 相册一级目录
- /blog/source/photos/index.md 相册一级目录对应的index.md
- /blog/source/photos/WLOP 相册二级目录
- /blog/source/photos/尼尔机械纪元 相册二级目录
- ...
- /blog/source/photos/blog_cos.py 从腾讯COS下载图片数据并创建相册二级目录
- /blog/themes/next/layout/photos.swig 一级相册模板
- /blog/themes/next/layout/photo.swig 二级相册模板
腾讯COS相册存储为两级结构,如我的腾讯COS在galleries文件夹下创建WLOP、尼尔机械纪元、大学生活等子文件夹。
准备工作
- 打开
/blog/themes/next/languages/zh-CN.yml
文档,menu下添加中文相册
1 | menu: |
- 修改主题配置文件
/blog/themes/next/config.yaml
1 | # 添加相册css风格,如果已有则不需要创建 |
- 在
source/_data/styles.styl
文件末尾添加相册css风格
1 | //相册风格 |
建立相册目录和模板
- 创建相册目录
/blog/source/photos
$ hexo new page photos
1 | --- |
- 创建一级相册模板
/blog/themes/next/layout/photos.swig
1 | {% extends '_layout.swig' %} |
- 创建二级相册模板
/blog/themes/next/layout/photo.swig
1 | <meta charset='utf-8'> |
下载图片数据并创建相应二级相册目录
首先在腾讯COS创建两级相册目录,并上传图片。再运行/blog/source/photos/blog_cos.py
文件,会自动将下载的图片数据存放到 galleries.yaml 文件中,并根据腾讯COS相册文件结构创建对应的的二级相册目录。
1 | # -*- coding=utf-8 |
- blog_cos.py必须放在
/blog/source/photos/
文件夹下。 - 运行blog_cos.py前需要安装
pip install -U cos-python-sdk-v5
- 设置用户属性, 包括secret_id, secret_key, region
- 可修改腾讯COS存储桶名称bucket_name、腾讯COS一级相册目录photos_name、图片数据文件名称json_name
腾讯COS跨域访问cors设置
在基础配置中找到cors设置
操作选择GET,其他默认都填成*,如下图:
一般情况下默认是共有读私有写,policy权限就不要设置了