解决安知鱼主题相册加密无效

前言

并非从代码上彻底解决,因为博主代码基础为0,不可能实现通过修改插件代码或主题代码达到相互兼容。只是一个能用上加密的思路,如果有更彻底的方法请评论,感谢!

需要解决的问题

安知鱼主题中,hexo-blog-encrypt插件对相册页面的加密无效。
hexo-blog-encrypt的仓库上有人提过相关issues:
Issue #225 · D0n9X1n/hexo-blog-encrypt

问题分析

  • 安知鱼主题是一个开源hexo主题,基于hexo-theme-butterfly修改,相册的页面配置见官方文档:
    相册页面配置 | 安知鱼主题官方文档
  • hexo-blog-encrypt是一款hexo插件,是 Hexo 生态圈中 最好的 博客加密插件,可以实现对文章的加密,GitHub仓库地址:
    D0n9X1n/hexo-blog-encrypt
  • butterfly主题中,相册页面的实现方式是通过标签外挂,相册和图库页面仍为普通页面。
    具体见官方文档:
    Butterfly 文檔(二) 主題頁面 | Butterfly
    Butterfly 文檔(四) 標簽外挂 | Butterfly
  • anzhiyu主题中,相册页面是通过在Front-matter中添加页面类型type: "album_detail",对特殊页面进行渲染实现的。
    对于butterfly的相册页面,可以用插件加密。对于anzhiyu主题,加了type: "album_detail"就无法加密页面,不加type: "album_detail"就无法加载图片,具体原因未知。

突破口

因为安知鱼主题基于hexo-theme-butterfly修改,也可以用butterfly的官方文档教程、用标签外挂的方式建相册页面。
可是这样就是为了加密效果舍弃了好看好用的anzhiyu相册页面了,有无鱼和熊掌兼得的方法呢?

思路

我们将相册页面分为两类:私有(需要加密的)和公开。相册集两类都建:anzhiyu主题和butterfly主题。
公开的就正常按照anzhiyu主题配置加type: "album_detail";私密的先按照butterfly主题配置并加密,再按照anzhiyu主题配置不加type: "album_detail"不加密并且在index.md中添加一个重定向到对应的加密页面路径的html代码。
最后通过album.yml添加所有的anzhiyu主题相册页面到相册集。

具体操作

假设我要建立两个相册页面,一个加密(encrypt)一个不加密(noencrypt)

anzhiyu主题

  1. 前往你的 Hexo 博客的根目录

  2. 在 Hexo 博客根目录 [blog]下打开终端,输入

    hexo new page album
  3. 你会找到 source/album/index.md 这个文件

  4. 修改这个文件: 记得添加 type: "album"

    ---
    title: 相册集
    date: 2022-10-23 15:57:51
    aside: false
    top_img: false
    type: "album"
    ---
  5. 主题配置文件中开启menu中我的和相册集的注释,注意缩进!!!

menu:
# 文章:
# 隧道: /archives/ || icon-box-archive
# 分类: /categories/ || icon-shapes
# 标签: /tags/ || icon-tags

友链:
友人帐: /link/ || icon-link
# 朋友圈: /fcircle/ || icon-artstation
# 留言板: /comments/ || icon-envelope

我的:
音乐馆: /music/ || icon-music
# 追番页: /bangumis/ || icon-bilibili1
相册集: /album/ || icon-images
# 小空调: /air-conditioner/ || icon-fan

关于:
# 关于本人: /about/ || icon-zhifeiji
闲言碎语: /essay/ || icon-lightbulb
# 随便逛逛: javascript:toRandomPost() || icon-shoe-prints

新建文件[blog]\source\_data\album.yml,没有_data文件夹的话也请自己新建。打开[blog]\source\_data\album.yml,输入:

- class_name: 加密
path_name: /album/encrypt
type: 2
description: 需要加密的相册
cover:
top_background:
rowHeight: 220
limit: 10
lazyload: true
btnLazyload: false
url:
top_link: /album
top_btn_text: 返回
- class_name: 不加密
path_name: /album/noencrypt
type: 2
description: 因为到不了世界各地,所以请网友们发来了各地的夕阳与风景🌇。
cover: https://upload-bbs.miyoushe.com/upload/2025/06/13/125766904/2cf2b6aea07bba089d0d17c4fea72d1b_5366629137934368264.png
top_background: https://bu.dusays.com/2023/06/30/649e546ada7dd.webp
rowHeight: 220
limit: 10
lazyload: true
btnLazyload: false
url: false
top_link: /album
top_btn_text: 返回
album_list:
- date: 2022/10/26 01:00:00
content: 湘潭的一角。
address: 湖南湘潭
from: 再吃一口就减肥
image:
- https://bu.dusays.com/2023/04/09/64329399db122.webp
- date: 2022-10-25
content: 洛阳暴雨后的天空。
address: 河南洛阳
from: 紫菜卷
image:
- https://bu.dusays.com/2023/04/09/64329399db122.webp
- https://bu.dusays.com/2023/04/09/64329399db2e1.webp

参数 备选值/类型 解释
class_name string 【必须】页面类
path_name url 【必须】当前相册路径
type number 【必须】当前相册页面样式类型
description string 【必须】当前相册描述
cover url 【必须】当前相册 cover 图片
rowHeight number 【可选】仅当 type 为 2 时有效,当前相册 rowHeight
limit number 【可选】仅当 type 为 2 时有效,当前相册 一次懒加载的数量
lazyload boolean 【可选】仅当 type 为 2 时有效,当前相册 lazyload 是否开启懒加载,默认懒加载为滚动懒加载,type 为 1 时懒加载不可关闭。
btnLazyload boolean 【可选】仅当 type 为 2 且 lazyload 开启 时有效,当前相册 lazyload 懒加载的方式,默认为滚动懒加载,开启本选项后为按钮点击懒加载。
album_list list 【必须】当前相册内图片列表
url url 【可选】仅当 type 为 2 时有效,可以加载远程的 json 数据。
album_list.date date 【必须】当前图片创建时间
album_list.content string 【必须】当前图片描述内容
album_list.image list 【必须】当前图片集,可以多张
album_list.from string 【可选】当前图片的创建人,未填写则不显示
album_list.address string 【必须】当前图片地址

由于相册页面需要很多的 page,所以在写数据的时候自行写入路径path_name,示例数据中有两个path_name,所以需要再创建两个页面

注意新建的页面必须与path_name一致。

hexo new page noencrypt
hexo new page encrypt

将这两个文件夹移动到source/album/

你会找到 source/album/noencrypt/index.md 和source/album/encrypt/index.md两个文件,这两个为相册集详情页

然后内容为以下内容:

  • 不加密的需在详情页加上type: "album_detail"
---
title: 不加密
date: 2022-10-23 15:57:51
aside: false
top_img: false
type: "album_detail"
---
  • 加密的不加type: "album_detail",填写这样一段html实现定向跳转
---
title: 加密
date: 2022-10-23 15:57:51
aside: false
top_img: false
type: "album_detail"
---
<html>
<head>
<script>
window.onload = function() {
window.location.href = "/album2/encrypt"; <!-- 这里填写的就是要跳转的加密相册页面 -->
};
</script>
</head>
<body>
<p>页面加载后将自动跳转,如未跳转请手动点击<a href="/album2/encrypt">此处</a></p>
</body>
</html>

butterfly主题相册

hexo n page album2 创建你的页面
然后使用标签外挂 galleryGroup,具体用法请查看对应的内容。

<div class="gallery-group-main">
{% galleryGroup '加密' '需要加密的相册' '/album2/encrypt' https://example.com/pic.png %}
</div>

hexo n page encrypt 创建你的页面,将encrypt文件夹移动到source/album2/

你会找到 source/album2/encrypt/index.md

然后使用标签外挂 gallery,具体用法请查看对应的内容。

---
title: 加密
date: 2025-05-02 16:12:46
cover:
aside: false
comments: true
password: 这部分根据加密插件设置就行
message: 这部分根据加密插件设置就行
wrong_pass_message: 这部分根据加密插件设置就行
wrong_hash_message: 这部分根据加密插件设置就行
---
{% gallery %}
![](https://i.loli.net/2019/12/25/Fze9jchtnyJXMHN.jpg)
![](https://i.loli.net/2019/12/25/ryLVePaqkYm4TEK.jpg)
![](https://i.loli.net/2019/12/25/gEy5Zc1Ai6VuO4N.jpg)
![](https://i.loli.net/2019/12/25/d6QHbytlSYO4FBG.jpg)
![](https://i.loli.net/2019/12/25/6nepIJ1xTgufatZ.jpg)
![](https://i.loli.net/2019/12/25/E7Jvr4eIPwUNmzq.jpg)
![](https://i.loli.net/2019/12/25/mh19anwBSWIkGlH.jpg)
![](https://i.loli.net/2019/12/25/2tu9JC8ewpBFagv.jpg)
{% endgallery %}

大功告成

可以执行hexo三连查看效果