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

解决安知鱼主题相册加密无效
lkii前言
并非从代码上彻底解决,因为博主代码基础为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主题
前往你的 Hexo 博客的根目录
在 Hexo 博客根目录
[blog]下打开终端,输入hexo new page album
你会找到
source/album/index.md这个文件修改这个文件: 记得添加
type: "album"---
title: 相册集
date: 2022-10-23 15:57:51
aside: false
top_img: false
type: "album"
---主题配置文件中开启
menu中我的和相册集的注释,注意缩进!!!
menu: |
新建文件[blog]\source\_data\album.yml,没有_data文件夹的话也请自己新建。打开[blog]\source\_data\album.yml,输入:
- class_name: 加密 |
| 参数 | 备选值/类型 | 解释 |
|---|---|---|
| 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 |
将这两个文件夹移动到source/album/下
你会找到 source/album/noencrypt/index.md 和source/album/encrypt/index.md两个文件,这两个为相册集详情页
然后内容为以下内容:
- 不加密的需在详情页加上
type: "album_detail"
--- |
- 加密的不加
type: "album_detail",填写这样一段html实现定向跳转
--- |
butterfly主题相册
hexo n page album2 创建你的页面
然后使用标签外挂 galleryGroup,具体用法请查看对应的内容。
<div class="gallery-group-main"> |
hexo n page encrypt 创建你的页面,将encrypt文件夹移动到source/album2/下
你会找到 source/album2/encrypt/index.md
然后使用标签外挂 gallery,具体用法请查看对应的内容。
--- |
大功告成
可以执行hexo三连查看效果
