看了好多文章,都找不到很满意的解决方案,于是自己参照已有的代码写了一个插件hexo-next-photos来解决相册的问题。
该插件支持图床链接
升级此插件请认真阅读本文后进行升级,避免出现不必要的麻烦,若有问题请在下方留言,我会认真查看
https://jygzyc.github.io/photos/
执行 npm install hexo-next-photos --save 命令
然后需要你去修改NexT主题模板,添加如下内容至文件。
在你的博客根目录,找到 _config.yml 文件然后添加如下的配置项,并且配置相应的URL
repos例子:
hexo_next_photos:
modes: repository
pictureUrl: https://dev.tencent.com/u/username/p/repos/git/raw/master/photos/ # photos url
pictureDirPath: photoDir # photo dir path is 'Your blog path/photoDir/'
图床例子:
# hexo-next-photos
hexo_next_photos:
modes : figureBed
pictureUrl :
pictureDirPath: testDir # your linkList file is 'Your blog path/testDir/linkList.txt'
方法一:在你的博客主题目录,找到 _config.yml 文件然后添加如下的配置项
方法二(推荐):在/source/_data/目录下新建next.yml,并将主题配置文件的内容全部复制过来,然后再修改下列配置项(之前已经新建过next.yml的直接修改就可以了)
custom_file_path:
- #bodyEnd: source/_data/body-end.swig
+ bodyEnd: source/_data/body-end.swig
- #style: source/_data/styles.styl
+ style: source/_data/styles.styl
...
# ---------------------------------------------------------------
# Third Party Plugins & Services Settings
# See: https://theme-next.org/docs/third-party-services/
# You may need to install dependencies or set CDN URLs in `vendors`
# There are two different CDN providers by default:
# - jsDelivr (cdn.jsdelivr.net), works everywhere even in China
# - CDNJS (cdnjs.cloudflare.com), provided by cloudflare
# ---------------------------------------------------------------
- fancybox: false
+ fancybox: true
...
- lazyload: false
+ lazyload: true
...
vendors:
# FancyBox
# jquery: //cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js
# fancybox: //cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.js
# fancybox_css: //cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.css
jquery:
fancybox: # choose a faster CDN
fancybox_css: # choose a faster CDN
# Lazyload
# lazyload: //cdn.jsdelivr.net/npm/lozad@1/dist/lozad.min.js
# lazyload: //cdnjs.cloudflare.com/ajax/libs/lozad.js/1.9.0/lozad.min.js
lazyload: # choose a faster CDN
新建照片页面 hexo new page photos,新建 /source/photos/index.md, 添加如下代码:
---
title: Photos
type: photos
---
<div class="ImageGrid"></div>
添加如下代码至主题配置文件(前面提到的next.yml)
menu:
+ photos: /photos/ || fa fa-camera
新建linkList.txt文件在config指定的目录下,若没有指定,默认为pictureDir,填入图床中图片的链接,样例如下:
https://s1.ax1x.com/2020/05/21/YbueyT.jpg
https://s1.ax1x.com/2020/05/21/YbuZlV.jpg
https://s1.ax1x.com/2020/05/21/YbuVS0.jpg
https://s1.ax1x.com/2020/05/21/YbukYn.jpg
https://s1.ax1x.com/2020/05/21/YbuFFs.jpg
https://s1.ax1x.com/2020/05/21/YbuPoj.jpg
https://s1.ax1x.com/2020/05/21/YbuCwQ.jpg
https://s1.ax1x.com/2020/05/21/Ybu9eg.jpg
https://s1.ax1x.com/2020/05/21/YbuSOS.jpg
https://s1.ax1x.com/2020/05/21/Ybnzy8.jpg
https://s1.ax1x.com/2020/05/21/YbnxQf.jpg
https://s1.ax1x.com/2020/05/21/YbnvSP.jpg
https://s1.ax1x.com/2020/05/21/YbnXWt.jpg
新建 originPhotos 文件夹,放在博客根目录
放入照片
blog
└───node_modules/
└───scaffolds/
│ ...
│ _config.yml
└───oringinPhotos/
│ │ Put your photos here, please keep your photos names same as your URL photos names
| | ...
| package.json
| ...
这样,我们就可以使用插件了。
图床模式下,图床的响应速度同图床本身有关,存在速度较慢的情况
hexo-tag-cloud