惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
The Last Watchdog
The Last Watchdog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cybersecurity and Infrastructure Security Agency CISA
T
Threatpost
C
Cisco Blogs
WordPress大学
WordPress大学
小众软件
小众软件
量子位
P
Palo Alto Networks Blog
Project Zero
Project Zero
T
Threat Research - Cisco Blogs
T
Tor Project blog
P
Proofpoint News Feed
T
The Exploit Database - CXSecurity.com
博客园 - 聂微东
P
Privacy International News Feed
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Hacker News
The Hacker News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
大猫的无限游戏
大猫的无限游戏
博客园_首页
Hugging Face - Blog
Hugging Face - Blog
B
Blog RSS Feed
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
博客园 - 三生石上(FineUI控件)
Y
Y Combinator Blog
Attack and Defense Labs
Attack and Defense Labs
C
CERT Recently Published Vulnerability Notes
AI
AI
Hacker News - Newest:
Hacker News - Newest: "LLM"
NISL@THU
NISL@THU
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
K
Kaspersky official blog
Webroot Blog
Webroot Blog
宝玉的分享
宝玉的分享
W
WeLiveSecurity
Recorded Future
Recorded Future
Stack Overflow Blog
Stack Overflow Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Latest news
Latest news
爱范儿
爱范儿
H
Hacker News: Front Page
AWS News Blog
AWS News Blog
博客园 - 【当耐特】
月光博客
月光博客
博客园 - Franky

Halo - 强大易用的开源建站工具 | 应用市场

Kaze 域名主题路由 氢·简 文章组件 Floating Particles Huohuo Weather Glass Vahlok AstraHub 星链 全局私密 业余无线电 QSL卡片管理系统 Bark 推送 微信读书(WeRead)信息展示 自定义社交分享卡片 Halorum 文章加密 KMath 轻言 Navidrome 播放器 家庭私厨 页面转换器 Sky Blog 3(macOS) 在线显示 邀请码注册 安全跳转助手 日程日历 Cartly 商城主题
代码增强(高亮+折叠+长图折叠)
2026-06-15 · via Halo - 强大易用的开源建站工具 | 应用市场

PluginCodeEnhance

Halo 博客平台的代码增强插件,提供代码高亮、代码折叠、长图折叠、行号显示和标题栏等功能。

1.1.2版本后基本稳定了,除非还有其他有意思的玩法加入进来,大家一起来玩呀~

更新版本内容请到该文章查看:代码增强插件 — PluginCodeEnhance发布

✨ 功能特性

  • 代码高亮:基于 Highlight.js 11.11.1,支持 14 种高亮主题(7 个亮色 + 7 个暗色)
  • 代码折叠:自动检测长代码块,超过指定行数自动折叠,支持展开/收起
  • 长图折叠:自动折叠超过指定高度的图片,优化文章排版
  • 行号显示:为代码块添加行号,方便代码引用
  • 标题栏:代码块顶部显示语言标识、复制按钮和折叠按钮
  • 暗色模式:支持 Halo 暗色主题切换,配色自动匹配
  • 移动端适配:按钮尺寸优化,支持触摸事件
  • 性能优化:使用 IntersectionObserver 延迟初始化,提升首屏加载速度

📦 安装方法

方法一:手动安装

  1. 下载最新版本的插件 JAR 文件
  2. 登录 Halo 管理后台
  3. 进入「插件管理」→「安装插件」
  4. 选择下载的 JAR 文件上传安装
  5. 安装完成后启用插件

方法二:构建安装

# 克隆仓库
git clone https://github.com/NoEggEgg/plugin-code-enhance.git
cd plugin-code-enhance

# 构建插件
gradle build -x test

# 构建产物位于 build/libs/plugin-code-enhance-x.x.x.jar

⚙️ 配置选项

插件安装后,可在 Halo 管理后台进行配置:

配置项 说明 默认值
enableCodeHighlight 是否启用代码高亮 true
hljsTheme 亮色主题 github.min.css
hljsDarkTheme 暗色主题 github-dark.min.css
enableCodeFold 是否启用代码折叠 true
codeFoldLine 代码折叠阈值(行数) 20
enableImgFold 是否启用长图折叠 true
imgFoldHeight 图片折叠阈值(像素) 400

🎨 支持的主题

亮色主题

  • GitHub Light
  • Atom One Light
  • Solarized Light
  • VS Light
  • Tomorrow
  • Ascetic
  • Foundation

暗色主题

  • GitHub Dark
  • Atom One Dark
  • VS 2015 Dark
  • Monokai
  • Solarized Dark
  • Obsidian
  • Dracula

🚀 使用说明

插件安装启用后,会自动对文章中的代码块和图片进行处理:

适用范围:当前仅支持文章(post)和页面(page)模板,Moments / Docsme 等插件页面暂不支持。

V1.1.0 版本扩展模板匹配范围,支持 Moments 和 Docsme 插件页面

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

代码块会自动显示:

  • 顶部标题栏(显示语言名称 "Java")
  • 复制按钮(一键复制代码)
  • 折叠按钮(收起/展开代码块)
  • 行号显示
  • 语法高亮

🛠️ 技术栈

  • Halo:2.20.x
  • Highlight.js:11.11.1
  • Java:17
  • Gradle:8.5

📁 项目结构

plugin-code-enhance/
├── src/main/java/run/halo/codeenhance/
│   ├── CodeEnhancePlugin.java        # 插件主类
│   └── CodeEnhanceHeadProcessor.java # 扩展点实现(PropertyPlaceholderHelper)
├── src/main/resources/
│   ├── extensions/
│   │   ├── extension-head.yaml       # 扩展点定义
│   │   ├── settings.yaml             # 设置表单定义
│   │   └── reverseProxy.yaml         # 静态资源代理配置
│   ├── static/
│   │   ├── js/
│   │   │   ├── code-enhance.js       # 前端核心逻辑
│   │   │   └── highlight.min.js      # Highlight.js 库
│   │   └── styles/
│   │       ├── code-enhance.css      # 插件样式
│   │       └── *.min.css             # 高亮主题样式(14个)
│   └── plugin.yaml                   # 插件元数据
├── .gitignore                        # Git 忽略规则
├── build.gradle                      # Gradle 配置
└── README.md                         # 项目说明

🔧 核心实现

后端实现

插件使用 PropertyPlaceholderHelper 实现高效的静态资源注入,避免模板引擎开销:

static final PropertyPlaceholderHelper PROPERTY_PLACEHOLDER_HELPER =
    new PropertyPlaceholderHelper("${", "}");

// 动态注入脚本和样式
properties.setProperty("name", pluginContext.getName());
properties.setProperty("version", pluginContext.getVersion());
String script = PROPERTY_PLACEHOLDER_HELPER.replacePlaceholders(template, properties);

前端实现

前端采用模块化设计,包含以下核心模块:

  • Config:配置加载和管理
  • Highlight:代码高亮处理(自动检测 Shiki,避免冲突)
  • CodeDecor:代码装饰(行号、标题栏、复制按钮)
  • CodeFold:代码折叠逻辑
  • ImgFold:长图折叠逻辑