🎅挂件馆🌟铭牌馆✨️靓标库🧚‍♂️名人堂🦄宝可梦🍎水果机🥊猜拳🏧黑市🏧银行💹抽奖
   🎁
返回列表 发布新帖
查看: 422|回复: 1

[代码技巧] 优化discuz自带的Code代码区块功能

[复制链接]
神评新秀
UID: 10000 ChuanQi
社区贡献
30 72 3044
等级头衔
Icon组别 : 管理员
Icon等级 :

积分成就
   钻石 : 30 颗
   贡献 : 8651 点
   金币 : 9 枚
Icon在线时间 : 269 小时
Icon注册时间 : 2025-5-6
Icon最后登录 : 2026-6-8
送礼物:0 收礼物:0
UID:10000 ChuanQi vip 发表于 2025-9-6 17:00:13 来自手机端 | 查看全部 |阅读模式 北京

交易无需等待,成交就是现在,全面资源整合网络大咖云集,让你轻松玩转互联网!

您需要 登录 才可以下载或查看,没有账号?立即注册

×
作者:飞流管家原创,未经许可,严禁转载!
做为一个喜欢捣鼓美化和发布点技术文章的小站长,没有一个好的代码段去存放和展示的话,那真的是一大损失,但是偏偏discuz程序在这一方面做得就不是很好,具体表现在第一代码段容器样式简陋、第二没有语法高亮、第三一键复制代码功能在手机版上没有、第四没有定义高度导致代码太多就显得页面过长了。
针对这些问题我决定优化改造这个代码段容器。
在应用中心有一个类似插件,基本解决了上述问题prism代码高亮代码高亮,但是它却使用的是自定义语法标签来控制代码段显示。
为了保证后续效果兼容diacuz默认的标签,下面结合该插件功能,我进行效果合并,以满足在使用code标签的基础上,实现所有提到的效果。
[zspay=10]
第一步
前往资源中心下载prism代码高亮 代码高亮(bphp_code),上传解压该插件到plugins目录,无需安装,目的只是引用相关文件。
第二步(以我的N7和克米模版为例)
打开template/discuz_theme_n7/viewthread.php后,在头部位置加入以下代码
  1. <link rel="stylesheet" href="source/plugin/bphp_code/static/prism/prism.css" />
  2.                 <style type="text/css">
  3.                         .code-toolbar,.code-toolbar code{font-family: "PingFang SC","Microsoft YaHei",arial,"Hiragino Sans GB","Hiragino Sans GB W3"; }
  4.                         .code-toolbar pre::-webkit-scrollbar {width: 12px; height: 10px;}
  5.                         .code-toolbar pre::-webkit-scrollbar-thumb {border-radius: 2px; background-color: #999;}
  6.                         .toolbar-item{ margin-left:5px;color:#fff;}
  7.                         .toolbar-item:hover span{color:#fff;}
  8.                         .toolbar-item button{cursor: pointer;}
  9.                         .line-numbers .line-numbers-rows{border:none;}
  10.                 </style>
  11.                 <script type="text/javascript" src="source/plugin/bphp_code/static/prism/prism.js"></script>
复制代码
保存一下。
然后打开目录/template/default/forum/discuzcode.htm,大概在24行有段
  1. function tpl_codedisp($code) {
  2.         $randomid = 'code_'.random(3);
  3. -->
  4. <!--{/eval}-->
  5. <!--{block return}--><div class="blockcode"><div id="$randomid"><ol><li>$code</ol></div><em onclick="copycode($('$randomid'));">{lang discuzcode_copyclipboard}</em></div><!--{/block}-->
  6. <!--{eval}-->
  7. <!--
  8.         return $return;
  9. }
复制代码
我们整个替换为
  1. function tpl_codedisp($code) {
  2.         $randomid = 'code_'.random(3);
  3. -->
  4. <!--{/eval}-->
  5. <!--{block return}--><figure class="code-block"><pre style=" max-height:300px;"><code class="language-php line-numbers">$code</code></pre></figure><!--{/block}-->
  6. <!--{eval}-->
  7. <!--
  8.         return $return;
  9. }
复制代码

第二步(针对手机版)
打开目录template/comiis_app/touch/forum/viewthread.php在头部加入
  1. <link rel="stylesheet" href="source/plugin/bphp_code/static/prism/prism.css" />
  2.                 <style type="text/css">
  3.                         .code-toolbar,.code-toolbar code{font-family: "PingFang SC","Microsoft YaHei",arial,"Hiragino Sans GB","Hiragino Sans GB W3"; }
  4.                         .code-toolbar pre::-webkit-scrollbar {width: 12px; height: 10px;}
  5.                         .code-toolbar pre::-webkit-scrollbar-thumb {border-radius: 2px; background-color: #999;}
  6.                         .toolbar-item{ margin-left:5px;color:#fff;}
  7.                         .toolbar-item:hover span{color:#fff;}
  8.                         .toolbar-item button{cursor: pointer;}
  9.                         .line-numbers .line-numbers-rows{border:none;}
  10.                 </style>
  11.                 <script type="text/javascript" src="source/plugin/bphp_code/static/prism/prism.js"></script>
复制代码
然后打开目录/template/comiis_app/touch/forum/discuzcode.php大概在19行有一段
  1. function tpl_codedisp($code) {
  2. <!--{/eval}-->
  3. <!--{block return}-->
  4. <div class="comiis_blockcode comiis_bodybg b_ok f_b"><div class="bg_f b_l">$code</div></div>
  5. <!--{/block}-->
  6. <!--{eval}-->
  7.         return $return;
  8. }
复制代码
我们整段替换为
  1. function tpl_codedisp($code) {
  2. <!--{/eval}-->
  3. <!--{block return}--><figure class="code-block" style="margin:5px 0;"><pre style="max-height:300px;"><code class="language-php line-numbers">$code</code></pre></figure><!--{/block}-->
  4. <!--{eval}-->
  5.         return $return;
  6. }
复制代码

第三步
我们刷新网站后台和浏览器缓存即可显示效果。
1000222656.webp
提示一下
由于群组也可以使用code标签,但是群组页不能引用插件的文件,所以我们手动加入了。
[/zspay]
飞流客服官方账号,最懂社区规则,最爱活跃气氛。
社区贡献
0 4 55
等级头衔
Icon组别 : 菜鸟
Icon等级 :

积分成就
   钻石 : 0 颗
   贡献 : 436 点
   金币 : 0 枚
Icon在线时间 : 2 小时
Icon注册时间 : 2025-8-2
Icon最后登录 : 2025-10-3
送礼物:0 收礼物:0
UID:11007 发表于 2025-9-6 19:56:25 来自手机端 | 查看全部 山东德州
差不多得了,没必要优秀得这么惊人!
资源创造价值,诚信连接交易。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

飞流广播+ 发布

飞流这论坛到底有没有资本给我投资一下啊!
07-20 22:07
系统消息:飞流安卓客户端APP已上线,请在QQ群(123129)群文件内获取下载。
02-21 02:22
01-24 12:40
站内通告

📢 六月份后均不在线,请悉知

提供资源交易、信息共享、靓号交流、技术变现、学习问答、兴趣娱乐等全面服务。

1.丰富功能系统,扩展社区特色玩法,打造最好的互联网聚集圈子。

2.准确信息真实交易,安全快捷又方便,让虚拟交易面对面。

3. 天上不会掉馅饼,话术骗术迷人心,切勿脱离平台线下交易,被骗与平台无关!

4. 欺诈骗钱,违规违法将视情受到警告&禁言&封号甚至检举至👮🏻‍♀️处理!

官方Q群:1003810038钉推群:BAYR2383 站长QQ:3388700000

飞流论坛(FLLT.CN),一个专注于资源信息发布、虚拟网络交易、技术学习与娱乐社交的交流平台。
  • 钉钉新帖推送群
  • 官方交流QQ群
  • 站长唯一微信号

💥客户端|🧿小黑屋|📴手机页|飞流网 |网站地图

GMT+8, 2026-7-23 07:42 , Processed in 0.059402 second(s), 67 queries, MemCached On , Gzip On.

飞流论坛 HanAnalytics icp

Copyright © 2024-2026 飞流网 版权所有 All Rights Reserved. X3.5

快速回复 返回顶部 返回列表