您现在的位置是:首页 > 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设置广告位及广告投放规则的方法
discuz论坛的广告设置和优化可以通过以下步骤实现:1. 设置广告位:通过后台管理界面选择广告类型和位置,如首页顶部的图片广告。2. 设定投放规则:3. 优化和监测:
discuz解决手机端图片显示模糊的步骤方法
discuz如何解决手机端图片显示模糊问题,主要内容为discuz实现多图上传、图片大图显示、图片高质量显示discuz等功能。最终实现的实现多图上传
discuz修改admin.php的方法
discuz修改admin.php的方法:1、打开根目录,修改“admin.php”文件名为“study.php”;2、修改“header.htm”文件内容。
discuz控制弹框显示的方法
本文实现功能:控制弹框的显示与否在之前的一篇文章写道,discuz实现自动注册登录。但是我们又不想让那个提示信息出来。
相关源码
-
响应式电脑维修办公用品维护pbootcms网站模板模板介绍(自适应手机版)响应式电脑修理公司pbootcms网站模板-蓝色HTML5电脑修理维修店网站源码下载PbootCMS内核开发的营销型网站模板,该模查看源码 -
(自适应)蓝色基建施工工程建筑集团网站pbootcms模板下载为工程建筑、基建施工类企业打造的PbootCMS模板,采用现代化设计理念,突出企业实力与项目展示,帮助建筑类企业快速建立专业在线门户。查看源码 -
(PC+WAP)红色厨具厨房用品设备pbootcms模板源码下载为厨具设备企业设计的响应式网站模板,采用PbootCMS内核开发,适用于商用厨房设备、家用厨具、厨房用品等企业展示。模板包含产品展示、新闻动态、案例中心等标准模块,助您快速搭建专业级行业网站。查看源码 -
(自适应响应式)水墨风白酒酿制酒业酒文化酒类产品网站源码下载本模板基于PbootCMS内核开发,为酒类企业打造的水墨风响应式网站解决方案。采用传统东方美学设计语言,呈现白酒文化底蕴,自适应移动端展示效果,数据实时同步更新,助力酒企建立专业数字化形象。查看源码 -
帝国CMS7.5手游资讯下载综合门户免费网站模板本模板基于帝国CMS7.5内核开发,为手游打造的综合门户网站解决方案。模板设计充分考虑了手业的特性,包含游戏资讯发布、手游下载、礼包发放、开测信息等核心功能模块,满足手游门户网站的各项业务需求。查看源码 -
(自适应)营销型健身器材产品设备类pbootcms模板网站为健身器材企业打造的营销型网站模板,基于PbootCMS开源内核开发。采用HTML5响应式架构,PC与移动端数据实时同步,适配多终端展示场景。查看源码
| 分享笔记 (共有 篇笔记) |
