一个优雅、无侵入的网盘资源分享插件,为 Halo 博客系统提供图形化的网盘链接管理功能。
- ✨ 所见即所得:图形化表单填写,无需手写代码
- 🔗 数据解耦:链接数据存储在文章 Metadata 中,与正文分离
- 🎨 美观展示:自动生成精美的网盘卡片,支持多种网盘类型
- 📋 一键复制:支持提取码一键复制功能
- 🚀 即插即用:卸载插件后文章内容不受任何污染
- 📱 响应式设计:完美适配移动端和桌面端
- 百度网盘
- 阿里云盘
- 夸克网盘
- 蓝奏云
- 123云盘
- Google Drive
- Dropbox
- OneDrive
- 其他网盘
将插件 JAR 文件上传到 Halo 后台的插件管理页面进行安装。
- 在文章编辑器中,点击工具栏的"插入网盘链接"按钮(云朵图标)
- 在弹出的表单中填写:
- 资源名称:必填,显示在卡片上的标题
- 网盘类型:必填,选择对应的网盘类型
- 链接地址:必填,网盘的分享链接
- 提取码:可选,如果有提取码请填写
- 描述信息:可选,可以填写额外的说明信息
- 点击确认后,编辑器会自动插入
[netdisk:id]标签 - 保存文章时,网盘数据会自动保存到文章的 Metadata 中
插件会自动将文章中的 [netdisk:id] 标签转换为美观的网盘卡片,包含:
- 网盘图标和类型标识
- 资源名称
- 描述信息(如果有)
- 直达链接按钮
- 复制提取码按钮(如果有提取码)
- 编辑器扩展:基于 Halo Console 的
editor:toolbox扩展点,在编辑器中添加工具栏按钮 - 数据存储:网盘数据存储在 Post 的
spec.metadata['plugin.netdisk.items']中 - 内容处理:通过
ReactivePostContentHandler扩展点,将[netdisk:id]标签转换为 HTML - 前端渲染:自动注入 CSS 和 JS 文件,实现卡片样式和交互功能
插件使用 [netdisk:id] 格式的标签,其中 id 是自动生成的唯一标识符。
{
"plugin.netdisk.items": "[{\"id\":\"netdisk-xxx\",\"source\":\"baidu\",\"name\":\"资源名称\",\"link\":\"https://...\",\"password\":\"abcd\",\"description\":\"描述信息\"}]"
}plugin-netdisk/
├── src/main/java/ # Java 后端代码
│ ├── handler/ # 内容处理器
│ ├── extension/ # 扩展点实现
│ └── config/ # 配置类
├── src/main/resources/ # 资源文件
│ ├── static/ # 静态资源(CSS/JS)
│ └── plugin.yaml # 插件配置
└── ui/ # 前端代码
└── src/
├── components/ # Vue 组件
└── index.ts # 插件入口
# 构建前端
cd ui
pnpm install
pnpm build
# 构建后端
cd ..
./gradlew buildeditor:toolbox:编辑器工具栏扩展ReactivePostContentHandler:文章内容处理扩展TemplateHeadProcessor:页面头部注入扩展
GPL-3.0
ThemeNets