使用NexT主题的Hexo博客相册解决方案
喵肘子和猪主子
2020年05月28日 12:50
收录于文集
共1篇

看了好多文章,都找不到很满意的解决方案,于是自己参照已有的代码写了一个插件hexo-next-photos来解决相册的问题。

  • 该插件支持图床链接

  • 升级此插件请认真阅读本文后进行升级,避免出现不必要的麻烦,若有问题请在下方留言,我会认真查看

插件效果

https://jygzyc.github.io/photos/

如何使用

安装

  • 执行 npm install hexo-next-photos --save 命令

  • 然后需要你去修改NexT主题模板,添加如下内容至文件。

_config.yml

  • 在你的博客根目录,找到 _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'

next.yml

  • 方法一:在你的博客主题目录,找到 _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文件(图床模式使用)

  • 新建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

放入照片(repos模式使用)

  • 新建 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