使用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 &#​39;Your blog path/photoDir/'

图床例子:

# hexo-next-photos hexo_next_photos:   modes         : figureBed    pictureUrl    :    pictureDirPath: testDir   # your linkList file is &#​39;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&#​34;></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