hexo-next主题相册功能搭建

logo

之前想说除了写点东西外,也能放些自己觉得不错的照片(自己拍的)到blog上就完美了,网上看着教程搬砖搞了一下午算是弄了个样子出来(笑哭😂)。

如果还没有搭建hexo-next主题的可以参考

https://www.jianshu.com/p/cbf8ba8af532

主要部分

  1. 相册图片应该存储在哪里(这里我们放在github上)、图片裁剪处理(别人用python写好的😝)
  2. 在next主题中进行相关的配置和实现。

具体步骤

第一步

  1. 使用github创建一个新项目(作为相册存储及处理的仓库),本文项目名统一为album (自己取名都行),并clone到本地
  2. 在项目album目录下建立两个特点名称的文件夹:
    1. min_photos (空即可)
    2. photos(添加自己的美图,图片命名规则:yyyy-mm-dd_filename.jpg/png)filename里面不能有” _ “
  3. 继续在album项目目录下添加如下两个python文件用于图片处理的:
    ImageProcess.py
    tool.py

    1. tool.py 文件修改为博客位置:with open(“My_Blog_PATH/themes/next/source/lib/album/data.json”,”w”) as fp: json.dump(final_dict, fp, ensure_ascii=False)
    2. 在个人博客项目中的/themes/next/source/lib/ 下建立一个文件夹album。(目的是存储图片的链接)
  4. 终端执行 python3 tool.py 失败的话可能要安装Pillow

    python3 -m pip install Pillow

    成功的话输出如下:

    This program helps compress many image files

    you can choose which scale you want to compress your img(jpg/png/etc)

    1) normal compress(4M to 1M around)

    2) small compress(4M to 500K around)

    3) smaller compress(4M to 300K around)

    (若min_photos文件夹出现了图片即处理成功,同时在/themes/next/source/lib/album/路径下出现data.json文件)

第一步end

第二步

  1. 在自己的博客根目录下执行:hexo n page photos
  2. 在theme/next/_config.yml配置文件中menu选项添加photos:相册:/photos/ || camera
  3. 在根目录下 source/photos 文件夹中的index.md 替换为index.md(注意要修改里面博客地址为自己的博客地址)
  4. 添加一系列文件

    1. 在在themes/next/source/lib/album/下添加文件 修改ins.js文件中121和122行图片的路径:

      例如:https://raw.githubusercontent.com/你的github名称/存图片的存库名称/master/min_photos/
      例如:https://raw.githubusercontent.com/你的github名称/存图片的存库名称/master/photos/

      (注意:域名是固定的https://raw.githubusercontent.com)

  5. 配置文件代码

    1. 在文件next/layout/_layout.swig的head标签添加对js文件引用:
      1
      2
      <script src="{{ url_for(theme.js) }}/src/photoswipe.min.js?v={{ theme.version }}"></script>
      <script src="{{ url_for(theme.js) }}/src/photoswipe-ui-default.min.js?v={{ theme.version }}"></script>
  1. 在文件next/layout/_layout.swig的body标签下添加
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
       {% if page.type === "photos" %}
    <!-- Root element of PhotoSwipe. Must have class pswp. -->
    <div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
    <div class="pswp__bg"></div>
    <div class="pswp__scroll-wrap">
    <div class="pswp__container">
    <div class="pswp__item"></div>
    <div class="pswp__item"></div>
    <div class="pswp__item"></div>
    </div>
    <div class="pswp__ui pswp__ui--hidden">
    <div class="pswp__top-bar">
    <div class="pswp__counter"></div>
    <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
    <button class="pswp__button pswp__button--share" title="Share"></button>
    <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
    <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
    <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
    <!-- element will get class pswp__preloader--active when preloader is running -->
    <div class="pswp__preloader">
    <div class="pswp__preloader__icn">
    <div class="pswp__preloader__cut">
    <div class="pswp__preloader__donut"></div>
    </div>
    </div>
    </div>
    </div>
    <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
    <div class="pswp__share-tooltip"></div>
    </div>
    <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
    </button>
    <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
    </button>
    <div class="pswp__caption">
    <div class="pswp__caption__center"></div>
    </div>
    </div>
    </div>
    </div>
    {% endif %}

第二步end

提交博客修改:

hexo clean
hexo g
hexo d

最后可以看看效果了。

您的支持将鼓励我继续创作!