Skip to content

Repository files navigation

Halo 网盘链接注入插件

一个优雅、无侵入的网盘资源分享插件,为 Halo 博客系统提供图形化的网盘链接管理功能。

功能特性

  • 所见即所得:图形化表单填写,无需手写代码
  • 🔗 数据解耦:链接数据存储在文章 Metadata 中,与正文分离
  • 🎨 美观展示:自动生成精美的网盘卡片,支持多种网盘类型
  • 📋 一键复制:支持提取码一键复制功能
  • 🚀 即插即用:卸载插件后文章内容不受任何污染
  • 📱 响应式设计:完美适配移动端和桌面端

支持的网盘类型

  • 百度网盘
  • 阿里云盘
  • 夸克网盘
  • 蓝奏云
  • 123云盘
  • Google Drive
  • Dropbox
  • OneDrive
  • 其他网盘

使用方法

1. 安装插件

将插件 JAR 文件上传到 Halo 后台的插件管理页面进行安装。

2. 在编辑器中插入网盘链接

  1. 在文章编辑器中,点击工具栏的"插入网盘链接"按钮(云朵图标)
  2. 在弹出的表单中填写:
    • 资源名称:必填,显示在卡片上的标题
    • 网盘类型:必填,选择对应的网盘类型
    • 链接地址:必填,网盘的分享链接
    • 提取码:可选,如果有提取码请填写
    • 描述信息:可选,可以填写额外的说明信息
  3. 点击确认后,编辑器会自动插入 [netdisk:id] 标签
  4. 保存文章时,网盘数据会自动保存到文章的 Metadata 中

3. 前端展示

插件会自动将文章中的 [netdisk:id] 标签转换为美观的网盘卡片,包含:

  • 网盘图标和类型标识
  • 资源名称
  • 描述信息(如果有)
  • 直达链接按钮
  • 复制提取码按钮(如果有提取码)

技术实现

架构设计

  1. 编辑器扩展:基于 Halo Console 的 editor:toolbox 扩展点,在编辑器中添加工具栏按钮
  2. 数据存储:网盘数据存储在 Post 的 spec.metadata['plugin.netdisk.items']
  3. 内容处理:通过 ReactivePostContentHandler 扩展点,将 [netdisk:id] 标签转换为 HTML
  4. 前端渲染:自动注入 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 build

扩展点

  • editor:toolbox:编辑器工具栏扩展
  • ReactivePostContentHandler:文章内容处理扩展
  • TemplateHeadProcessor:页面头部注入扩展

许可证

GPL-3.0

作者

ThemeNets

相关链接

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages