当前位置: 首页 > 站长资讯 > 正文页面

调用discuz编辑器发布帖子显示html代码的解决办法

在discuz二次开发中调用discuz的编辑器是一件在所难免的事情,然而discuz的开发文档少得可怜;因此在二次开发的时候查看源码和各种莫名其妙的问题着实令人摸不着头脑。前面讲解了一下调用discuz编辑器的实例 调用discuz编辑器再也不是问题了 。然而这只是一个粗糙的例子,而discuz帖子存储在数据库的却是自定义的bbcode而不是正常的html代码。这也就导致直接调用discuz的编辑器发帖显示出来的帖子成了html源码。jWy网站目录_网站网址收录与提交入口

网上找了很久也没找到相应的问题,最后通过数据库的字段对比才知道问题的所在。jWy网站目录_网站网址收录与提交入口

1、问题所在jWy网站目录_网站网址收录与提交入口

调用编辑器编辑的源码jWy网站目录_网站网址收录与提交入口

顶顶顶顶顶<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>jWy网站目录_网站网址收录与提交入口

而默认发帖的源码为jWy网站目录_网站网址收录与提交入口

顶顶顶顶顶[b][i][u]的顶顶顶顶顶[/u][/i][/b]顶顶顶顶的的[url=data/attachment/album/201507/22/112816z1znnm01wmozpvgb.png][img]data/attachment/album/201507/22/112816z1znnm01wmozpvgb.png[/img][/url]jWy网站目录_网站网址收录与提交入口

于是网上找了一通,最后才知道这是discuz的特色。对html代码进行了特殊的处理,其采用了bbcode的方式进行二次编码,显示帖子的时候再将bbcode编码转换成正常的html代码。discuz这么做的目的也显而易见,最终是为了提高整个应用的安全性。jWy网站目录_网站网址收录与提交入口

2、提交前对html进行bbcode编码jWy网站目录_网站网址收录与提交入口

static/js/bbcode.js中的html2bbcode可以讲正常的html编码转换成discuz自定义的bbcode编码jWy网站目录_网站网址收录与提交入口

最后在./static/image/editor/editor_function.js中的edit_save()找到了获取编辑器内容,并设置编码jWy网站目录_网站网址收录与提交入口

var p = window.frames['uchome-ifrHtmlEditor'];jWy网站目录_网站网址收录与提交入口

var obj = p.window.frames['HtmlEditor'];jWy网站目录_网站网址收录与提交入口

var status = p.document.getElementById('uchome-editstatus').value;jWy网站目录_网站网址收录与提交入口

$('uchome-ttHtmlEditor').value = p.document.getElementById('sourceEditor').value;jWy网站目录_网站网址收录与提交入口

3、完整的调用方式jWy网站目录_网站网址收录与提交入口

<script type="text/javascript" src="{$_G['setting']['jspath']}forum_post.js?{VERHASH}"></script>jWy网站目录_网站网址收录与提交入口

<script src="static/js/bbcode.js?{VERHASH}" type="text/javascript"></script>jWy网站目录_网站网址收录与提交入口

<script type="text/JavaScript">jWy网站目录_网站网址收录与提交入口

var fid = {$_G['fid']};//插件所在版块IDjWy网站目录_网站网址收录与提交入口

</script>jWy网站目录_网站网址收录与提交入口

<!--{subtemplate home/editor_image_menu}-->jWy网站目录_网站网址收录与提交入口

<textarea class="userData" name="content" id="uchome-ttHtmlEditor" style="height: 100%; width: 100%; display: none; border: 0px"></textarea>jWy网站目录_网站网址收录与提交入口

<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>jWy网站目录_网站网址收录与提交入口

</br>jWy网站目录_网站网址收录与提交入口

<input type="hidden" name="formhash" id="formhash" value="{FORMHASH}" />jWy网站目录_网站网址收录与提交入口

<input type="hidden" name="posttime" id="posttime" value="{$posttime}" />jWy网站目录_网站网址收录与提交入口

<input type="hidden" name="wysiwyg" id="e_mode" value="1" />jWy网站目录_网站网址收录与提交入口

<input type="hidden" name="special" value="127" />jWy网站目录_网站网址收录与提交入口

<input type="hidden" name="specialextra" value="plugin_test" />jWy网站目录_网站网址收录与提交入口

<input type="hidden" id="message" name="message" value="" />jWy网站目录_网站网址收录与提交入口

<input id='submit_editsubmit' class='btn' type='button' value='提交' name='editsubmit' onClick='validate(this);'>jWy网站目录_网站网址收录与提交入口

</form>jWy网站目录_网站网址收录与提交入口

<script type="text/javascript" src="static/image/editor/editor_base.js?{VERHASH}"></script>jWy网站目录_网站网址收录与提交入口

<script type="text/javascript" src="static/image/editor/editor_function.js?{VERHASH}"></script>jWy网站目录_网站网址收录与提交入口

<script type="text/javascript">jWy网站目录_网站网址收录与提交入口

var textobj = $('uchome-ttHtmlEditor');jWy网站目录_网站网址收录与提交入口

var wysiwyg = (BROWSER.ie || BROWSER.firefox || (BROWSER.opera >= 9)) && parseInt('1') == 1 ? 1 : 0;jWy网站目录_网站网址收录与提交入口

var allowswitcheditor = parseInt('1');jWy网站目录_网站网址收录与提交入口

var allowhtml = parseInt('0');jWy网站目录_网站网址收录与提交入口

var allowsmilies = parseInt('1');jWy网站目录_网站网址收录与提交入口

var allowbbcode = parseInt('1');jWy网站目录_网站网址收录与提交入口

var allowimgcode = parseInt('1');jWy网站目录_网站网址收录与提交入口

var simplodemode = parseInt('0');jWy网站目录_网站网址收录与提交入口

var fontoptions = new Array("宋体", "新宋体", "黑体", "微软雅黑", "Arial", "Verdana", "Mingliu", "Helvetica", "Trebuchet MS", "Tahoma", "Impact", "Times New Roman", "仿宋,仿宋_GB2312", "楷体,楷体_GB2312");jWy网站目录_网站网址收录与提交入口

var smcols = 8;jWy网站目录_网站网址收录与提交入口

var custombbcodes = new Array();jWy网站目录_网站网址收录与提交入口

</script>jWy网站目录_网站网址收录与提交入口

<script type="text/JavaScript">jWy网站目录_网站网址收录与提交入口

function validate(obj) {jWy网站目录_网站网址收录与提交入口

var mcpp = window.frames['uchome-ifrHtmlEditor'];jWy网站目录_网站网址收录与提交入口

var mcpobj = mcpp.window.frames['HtmlEditor'];jWy网站目录_网站网址收录与提交入口

edit_save();jWy网站目录_网站网址收录与提交入口

jQuery("#message").val(html2bbcode(mcpobj.document.body.innerHTML));jWy网站目录_网站网址收录与提交入口

window.onbeforeunload = null;jWy网站目录_网站网址收录与提交入口

obj.form.submit();jWy网站目录_网站网址收录与提交入口

return false;jWy网站目录_网站网址收录与提交入口

}jWy网站目录_网站网址收录与提交入口

</script>jWy网站目录_网站网址收录与提交入口

其中jQuery("#message").val(html2bbcode(mcpobj.document.body.innerHTML));是将html转成bbcode。jWy网站目录_网站网址收录与提交入口

4、这里只是web前端进行了bbcode的编码。然而如果有需要也可以在php处理函数中进行bbcode的转换jWy网站目录_网站网址收录与提交入口

$str = "<b><i>的的顶顶顶顶顶的顶顶顶顶顶顶顶顶顶的的</i></b>";jWy网站目录_网站网址收录与提交入口

//html转成bbcodejWy网站目录_网站网址收录与提交入口

require_once libfile('function/editor');jWy网站目录_网站网址收录与提交入口

echo html2bbcode($str);jWy网站目录_网站网址收录与提交入口

echo "</br>";jWy网站目录_网站网址收录与提交入口

$str2 = '[b][i]的的顶顶顶顶顶的顶顶顶顶顶顶顶顶顶的的[/i][/b]';jWy网站目录_网站网址收录与提交入口

//将bbcode转成htmljWy网站目录_网站网址收录与提交入口

require_once libfile('function/discuzcode');jWy网站目录_网站网址收录与提交入口

echo discuzcode($str2, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0);jWy网站目录_网站网址收录与提交入口

  

此文由 网站目录_网站网址收录与提交入口 编辑,未经允许不得转载!:

相关文章