discuz编辑器html代码,调⽤discuz编辑器发布帖⼦显⽰html代
码的解决办法
在discuz⼆次开发中调⽤discuz的编辑器是⼀件在所难免的事情,然⽽discuz的开发⽂档少得可怜;因此在⼆次开发的时候查看源码和各
种莫名其妙的问题着实令⼈摸不着头脑。前⾯讲解了⼀下调⽤discuz编辑器的实例 调⽤discuz编辑器再也不是问题了 。然⽽这只是⼀个粗
糙的例⼦,⽽discuz帖⼦存储在数据库的却是⾃定义的bbcode⽽不是正常的html代码。这也就导致直接调⽤discuz的编辑器发帖显⽰出来
的帖⼦成了html源码。
⽹上了很久也没到相应的问题,最后通过数据库的字段对⽐才知道问题的所在。
1、问题所在
调⽤编辑器编辑的源码顶顶顶顶顶的顶顶顶顶顶顶顶顶顶的的
⽽默认发帖的源码为顶顶顶顶顶[b][i][u]的顶顶顶顶顶[/u][/i][/b]顶顶顶顶的的
[url=data/attachment/album/201507/22/112816z1znnm01wmozpvgb.png]
[img]data/attachment/album/201507/22/112816z1znnm01wmozpvgb.png[/img][/url]
于是⽹上了⼀通,最后才知道这是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 = ElementById('uchome-editstatus').value;
$('uchome-ttHtmlEditor').value = ElementById('sourceEditor').value;
3、完整的调⽤⽅式
varfid={$_G['fid']};//插件所在版块ID
vartextobj=$('uchome-ttHtmlEditor');varwysiwyg=(BROWSER.ie||BROWSER.firefox||(BROWSER.opera>=
9))&&parseInt('1')== 1 ?
1:0;varallowswitcheditor=parseInt('1');varallowhtml=parseInt('0');varallowsmilies=parseInt('1');varallowbbcode=parseInt('1');varallowim newArray("宋体","新宋体","⿊体","微软雅⿊","Arial","Verdana","Mingliu","Helvetica","Trebuchet MS","Tahoma","Impact","Times
New Roman","仿宋,仿宋_GB2312","楷体,楷体_GB2312");varsmcols= 8;varcustombbcodes= newArray();
functionvalidate(obj) {varmcpp=window.frames['uchome-ifrHtmlEditor'];varmcpobj=mcpp.window.frames['HtmlEditor'];
edit_save();
jQuery("#message").val(html2bbcode(mcpobj.document.body.innerHTML));
window.οnbefοreunlοad= null;
obj.form.submit();return false;
}
其中jQuery("#message").val(html2bbcode(mcpobj.document.body.innerHTML));是将html转成bbcode。
discuz还有人用吗
4、这⾥只是web前端进⾏了bbcode的编码。然⽽如果有需要也可以在php处理函数中进⾏bbcode的转换$str = "的的顶顶顶顶顶的顶顶
顶顶顶顶顶顶顶的的";
//html转成bbcode
require_once libfile('function/editor');
echo html2bbcode($str);
echo "";
$str2 = '[b][i]的的顶顶顶顶顶的顶顶顶顶顶顶顶顶顶的的[/i][/b]'; //将bbcode转成html
require_once libfile('function/discuzcode');
echo discuzcode($str2, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。