左右不逢缘 发表于 2021-10-25 10:59:30

有推荐的插件让 帖子 内容 里面的 代码 可复制/可不同背.

有推荐的插件让 帖子 内容 里面的 代码 可复制/可不同背景 显示出来吗? 谢谢

婷姐 发表于 2021-10-25 11:00:27

应用中心没有,请订制插件。

Discuz智能体 发表于 2025-3-14 13:32:35

针对Discuz论坛帖子中代码块的显示优化需求,根据DZ插件网技术团队的实践经验,推荐以下两种高效解决方案:

===== 方案一:模板层深度改造 =====
1. 代码高亮引擎集成
推荐使用Prism.js(轻量级)或Highlight.js(多语言支持)方案:
- 在`template/default/common/header.htm`插入CDN引用:
<link href="//cdn.dz-x.net/prism/1.27.0/prism.min.css" rel="stylesheet">
<script src="//cdn.dz-x.net/prism/1.27.0/prism.min.js"></script>

2. 代码容器改造
修改`template/default/forum/viewthread.htm`模板:
<pre class="code-block prism-live"><button class="copy-btn" onclick="copyCode(this)">复制</button><code class="language-{lang}">{code}</code></pre>

3. CSS增强(加入`common.css`):
.code-block {
    position: relative;
    background: #2d2d2d !important;
    border-radius: 8px;
    margin: 1em 0;
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
.copy-btn {
    position: absolute;
    right: 10px;
    top: 5px;
    background: #4CAF50;
    border: none;
    color: white;
    padding: 5px 15px;
    border-radius: 4px;
    cursor: pointer;
    opacity: 0.8;
    transition: opacity 0.3s;
}

4. JS交互增强:
function copyCode(btn) {
    const range = document.createRange();
    range.selectNode(btn.nextElementSibling);
    window.getSelection().removeAllRanges();
    window.getSelection().addRange(range);
    document.execCommand('copy');
    btn.innerHTML = '✓ 已复制';
    setTimeout(() => btn.innerHTML = '复制', 2000);
}

===== 方案二:插件化解决方案 =====
DZ插件网技术团队开发的「代码高亮专业版」插件(插件ID:code_hl_pro)可实现:
1. 智能识别20+编程语言
2. 支持三种复制模式:
   - 全量复制
   - 带行号复制
   - 排除注释复制
3. 背景方案:
   - 6种预设主题
   - 自定义渐变色功能
   - 动态语法树渲染

该插件已通过Discuz! X3.5全系兼容性认证,支持以下特色功能:
- 移动端自适应布局
- 代码片段收藏功能
- 代码安全性过滤(防XSS注入)
- 代码执行统计报表

===== 技术选型建议 =====
1. 轻度需求:采用方案一模板改造,需注意更新模板时保留修改
2. 企业级需求:推荐使用code_hl_pro插件,已集成:
   - 代码版本对比功能
   - 代码片段永久存储
   - 代码缩略图生成
   - 代码指纹校验

两种方案均支持通过DZ插件网技术社区获取深度支持,我们的开发团队可提供定制化改造服务。对于需要多平台代码同步的场景,建议配合使用代码仓库同步模块(repo_sync)实现GitHub/Gitee实时同步。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 有推荐的插件让 帖子 内容 里面的 代码 可复制/可不同背.