您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
discuz编辑器发布帖子显示html代码怎么办
梦柏2025-07-11Discuz教程已有人查阅
导读在discuz二次开发中调用discuz的编辑器是一件在所难免的事情,然而discuz的开发文档少得可怜;因此在二次开发的时候查看源码和各种莫名其妙的问题着实令人mō不着头脑。
在discuz二次开发中调用discuz的编辑器是一件在所难免的事情,然而discuz的开发文档少得可怜;因此在二次开发的时候查看源码和各种莫名其妙的问题着实令人mō不着头脑。前面讲解了一下调用discuz编辑器的实例调用discuz编辑器再也不是问题了。然而这只是一个粗糙的例子,而discuz帖子存储在数据库的却是自定义的bbcode而不是正常的html代码。这也就导致直接调用discuz的编辑器发帖显示出来的帖子成了html源码。
网上找了很久也没找到相应的问题,之后通过数据库的字段对比才知道问题的所在。
1、问题所在
调用编辑器编辑的源码
顶顶顶顶顶<b><i>的顶顶顶顶顶</i></b>顶顶顶顶的的
于是网上找了一通,之后才知道这是discuz的特色。对html代码进行了特殊的处理,其采用了bbcode的方式进行二次编码,显示帖子的时候再将bbcode编码转换成正常的html代码。discuz这么做的目的也显而易见,最终是为了提高整个应用的安全性。
2、提交前对html进行bbcode编码
static/js/bbcode.js中的html2bbcode可以讲正常的html编码转换成discuz自定义的bbcode编码
之后在./static\image\editor\editor_function.js中的edit_save()找到了获取编辑器内容,并设置编码
4、这里只是web前端进行了bbcode的编码。然而如果有需要也可以在php处理函数中进行bbcode的转换
如果自定义调用discuz编辑器,存储到数据库的时候是bbcode格式。然而,如果编辑的时候也是自定义调用discuz编辑器的话,bbcode格式也就无 常显示了。如果在php里面直接转换成正常的html格式,这时又会触发discuz的安全机制,无 常提交。如果配到这样的问题要怎么解决呢?我们可以采用onload事件进行处理,也就是页面加载完成以后用bbcode2html将bbcode编码的内容转换成正常的html再赋值给编辑器。
网上找了很久也没找到相应的问题,之后通过数据库的字段对比才知道问题的所在。
1、问题所在
调用编辑器编辑的源码
顶顶顶顶顶<b><i>的顶顶顶顶顶</i></b>顶顶顶顶的的
<a href="http://127.0.0.1:8080/data/attachment/album/201507/22/112816z1znnm01wmozpvgb.png" target="_blank"><img src="http://127.0.0.1:8080/data/attachment/album/201507/22/112816z1znnm01wmozpvgb.png" border="0" alt=""></a>
而默认发帖的源码为顶顶顶顶顶的顶顶顶顶顶顶顶顶顶的的于是网上找了一通,之后才知道这是discuz的特色。对html代码进行了特殊的处理,其采用了bbcode的方式进行二次编码,显示帖子的时候再将bbcode编码转换成正常的html代码。discuz这么做的目的也显而易见,最终是为了提高整个应用的安全性。
2、提交前对html进行bbcode编码
static/js/bbcode.js中的html2bbcode可以讲正常的html编码转换成discuz自定义的bbcode编码
之后在./static\image\editor\editor_function.js中的edit_save()找到了获取编辑器内容,并设置编码
var p = window.frames['uchome-ifrHtmlEditor'];
var obj = p.window.frames['HtmlEditor'];
var status = p.document.getElementById('uchome-editstatus').value;
$('uchome-ttHtmlEditor').value = p.document.getElementById('sourceEditor').value;
3、完整的调用方式
<script type="text/javascript" src="{$_G['setting']['jspath']}forum_post.js?{VERHASH}"></script>
<script src="static/js/bbcode.js?{VERHASH}" type="text/javascript"></script>
<script type="text/JavaScript">
var fid = {$_G['fid']};//插件所在版块ID
</script>
<!--{subtemplate home/editor_image_menu}-->
<textarea class="userData" name="content" id="uchome-ttHtmlEditor" style></textarea>
<iframe src='home.php?mod=editor&charset={CHARSET}&allowhtml=1&isportal=0' name='uchome-ifrHtmlEditor' id='uchome-ifrHtmlEditor' scrolling='no' style='width:85%;height:400px;border:1px solid #C5C5C5;position:relative;' border=0 frameborder=0 ></iframe>
</br>
<input type="hidden" name="formhash" id="formhash" value="{FORMHASH}" />
<input type="hidden" name="posttime" id="posttime" value="{$posttime}" />
<input type="hidden" name="wysiwyg" id="e_mode" value="1" />
<input type="hidden" name="special" value="127" />
<input type="hidden" name="specialextra" value="plugin_test" />
<input type="hidden" id="message" name="message" value="" />
<input id='submit_editsubmit' class='btn' type='button' value='提交' name='editsubmit' onClick='validate(this);'>
</form>
<script type="text/javascript" src="static/image/editor/editor_base.js?{VERHASH}"></script>
<script type="text/javascript" src="static/image/editor/editor_function.js?{VERHASH}"></script>
<script type="text/javascript">
var textobj = $('uchome-ttHtmlEditor');
var wysiwyg = (BROWSER.ie || BROWSER.firefox || (BROWSER.opera >= 9)) && parseInt('1') == 1 ? 1 : 0;
var allowswitcheditor = parseInt('1');
var allowhtml = parseInt('0');
var allowsmilies = parseInt('1');
var allowbbcode = parseInt('1');
var allowimgcode = parseInt('1');
var simplodemode = parseInt('0');
var fontoptions = new Array("宋体", "新宋体", "黑体", "微软雅黑", "Arial", "Verdana", "Mingliu", "Helvetica", "Trebuchet MS", "Tahoma", "Impact", "Times New Roman", "仿宋,仿宋_GB2312", "楷体,楷体_GB2312");
var smcols = 8;
var custombbcodes = new Array();
</script>
<script type="text/JavaScript">
function validate(obj) {
var mcpp = window.frames['uchome-ifrHtmlEditor'];
var mcpobj = mcpp.window.frames['HtmlEditor'];
edit_save();
jQuery("#message").val(html2bbcode(mcpobj.document.body.innerHTML));
window.onbeforeunload = null;
obj.form.submit();
return false;
}
</script>
其中
jQuery("#message").val(html2bbcode(mcpobj.document.body.innerHTML));
是将html转成bbcode。4、这里只是web前端进行了bbcode的编码。然而如果有需要也可以在php处理函数中进行bbcode的转换
$str = "<b><i>的的顶顶顶顶顶的顶顶顶顶顶顶顶顶顶的的</i></b>";
//html转成bbcode
require_once libfile('function/editor');
echo html2bbcode($str);
echo "</br>";
$str2 = '的的顶顶顶顶顶的顶顶顶顶顶顶顶顶顶的的';
//将bbcode转成html
require_once libfile('function/discuzcode');
echo discuzcode($str2, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0);
5、编辑帖子时出现“您的提交带有不合法参数,谢谢合作”的解决办法如果自定义调用discuz编辑器,存储到数据库的时候是bbcode格式。然而,如果编辑的时候也是自定义调用discuz编辑器的话,bbcode格式也就无 常显示了。如果在php里面直接转换成正常的html格式,这时又会触发discuz的安全机制,无 常提交。如果配到这样的问题要怎么解决呢?我们可以采用onload事件进行处理,也就是页面加载完成以后用bbcode2html将bbcode编码的内容转换成正常的html再赋值给编辑器。
window.onload = function(){
var mcpp = window.frames['uchome-ifrHtmlEditor'];
var mcpobj = mcpp.window.frames['HtmlEditor'];
mcpobj.document.body.innerHTML = bbcode2html("{$thread['message']}");//加载完成时将bbcode内容转换成正常的html代码并赋值
}
本文标签:
很赞哦! ()
相关教程
图文教程
Discuz的NT中集成Memcached分布式缓存的实现方法
之前写过一篇关于Discuz的NT缓存架构文章,在那篇文章的结尾介绍了在IIS中如果开启多个应用程序池会造成多个缓存实例之间数据同步的问题。
discuz文件说明列表
每个目录里面都有一个空的index.htm,这是为了防止列目录用的,不必理会.根目录 ./ (这里都是最基本的程序)
Discuz开发微信小程序流程和框架选择
1. 分析Discuz功能,确定小程序实现的功能;2. 选择uni-app框架,因其跨平台兼容性、丰富组件库和强大社区支持;3. 注意数据同步、用户体验和性能优化;4. 灵活解决如权限系统等挑战。
Discuz代码研究编码规范介绍
Discuz中的编码规范很值得PHP开发人员借鉴。里面既介绍了编码时代码标记,注释,书写规则,命名原则等方面基础的内容,对代码的安全性,性能,兼容性,代码重用,数据库设计,数据库性能及优
相关源码
-
(PC+WAP)企业管理工程造价资产评估财务审计带留言网站模板本模板基于PbootCMS内核开发,为工程造价咨询、财务审计类企业量身打造,同时支持多行业快速适配。采用PC+WAP双端同步设计,数据实时互通,助您高效展示企业形象与服务能力。查看源码 -
帝国CMS游戏应用APP推广下载站模板免费下载本模板为移动应用推广、手机游戏推广行业设计,集成H5游戏平台与APP下载功能,支持PC端与移动端自适应访问。专注于为应用开发商、游戏发行商提供专业的线上推广展示平台。查看源码 -
(PC+WAP)红色驾校培训学车在线预约源码下载基于PbootCMS内核开发的驾校培训专用网站模板,深度适配驾驶培训行业展示需求。采用PC与移动端同步响应设计,单一后台统一管理内容数据,更换图文素材后可快速转变为其他行业网站。查看源码 -
自适应车行汽车租赁二手车行业企业网站模板为汽车租赁与二手车交易场景深度优化,采用PbootCMS内核开发,聚焦车辆展示、租赁流程与服务介绍三大核心模块。响应式布局确保PC与移动端数据实时同步,后台一键管理车辆信息查看源码 -
(带手机版)绿色生态农业种植农产品网站pbootcms源码下载本模板基于PbootCMS内核开发,为生态农业企业量身打造,适用于农业种植、有机农场、农产品电商等业务场景。模板设计充分体现绿色环保理念,突出农业特色,同时保持简洁大气的视觉效果,帮助农业企业建立专业形象。查看源码 -
(自适应响应式)蓝色勘察设计院机构单位商会协会pbootcms模板下载本模板基于PbootCMS系统开发,为勘察设计院所、工程咨询单位设计,特别适合展示设计成果、技术服务和项目案例。采用响应式技术,确保设计图纸和方案以及文案在不同设备上都能清晰展示。查看源码
| 分享笔记 (共有 篇笔记) |
