魔扣论坛

魔扣源码论坛业务
查看: 1129|回复: 5

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

[复制链接]
  • TA的每日心情
    慵懒
    14 小时前
  • 签到天数: 2957 天

    [LV.Master]开坛老将

    7万

    主题

    227

    回帖

    27万

    积分

    管理员

    Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

    魔扣币
    745759
    贡献
    157915
    威望
    32799

    最佳新人活跃会员热心会员推广达人宣传达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2019-5-31 21:29:20 | 显示全部楼层 |阅读模式
    魔扣币兑换比例:【 50以下 : ¥1 = 10 魔扣币 】丨【 50 - 100 :¥1 = 20 魔扣币】丨【 100以上:¥1 = 30 魔扣币 】

    本帖子中包含更多资源

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

    x
          在discuz二次开发中调用discuz的编辑器是一件在所难免的事情,然而discuz的开发文档少得可怜;因此在二次开发的时候查看源码和各种莫名其妙的问题着实令人摸不着头脑。前面讲解了一下调用discuz编辑器的实例 调用discuz编辑器再也不是问题了。然而这只是一个粗糙的例子,而discuz帖子存储在数据库的却是自定义的bbcode而不是正常的html代码。这也就导致直接调用discuz的编辑器发帖显示出来的帖子成了html源码。  
      网上找了很久也没找到相应的问题,最后通过数据库的字段对比才知道问题的所在。
      1、问题所在
      调用编辑器编辑的源码
    顶顶顶顶顶<b><i>的顶顶顶顶顶</i></b>顶顶顶顶的的<ahref="http://127.0.0.1:8080/data/attachment/album/201507/22/112816z1znnm01wmozpvgb.png"target="_blank"><imgsrc="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、完整的调用方式
    <scripttype="text/javascript"src="{$_G['setting']['jspath']}forum_post.js?{VERHASH}"></script>  
    <scriptsrc="static/js/bbcode.js?{VERHASH}"type="text/javascript"></script>  
    <scripttype="text/JavaScript">  
    var fid  = {$_G['fid']};//插件所在版块ID  
    </script>  
    <!--{subtemplate home/editor_image_menu}-->  
    <textareaclass="userData"name="content"id="uchome-ttHtmlEditor"style="height: 100%; width: 100%; display: none; border: 0px"></textarea>  
    <iframesrc='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=0frameborder=0></iframe>  
    </br>  
    <inputtype="hidden"name="formhash"id="formhash"value="{FORMHASH}"/>  
    <inputtype="hidden"name="posttime"id="posttime"value="{$posttime}"/>  
    <inputtype="hidden"name="wysiwyg"id="e_mode"value="1"/>  
    <inputtype="hidden"name="special"value="127"/>  
    <inputtype="hidden"name="specialextra"value="plugin_test"/>  
    <inputtype="hidden"id="message"name="message"value=""/>  
    <inputid='submit_editsubmit'class='btn'type='button'value='提交'name='editsubmit'onClick='validate(this);'>  
    </form>  
    <scripttype="text/javascript"src="static/image/editor/editor_base.js?{VERHASH}"></script>  
    <scripttype="text/javascript"src="static/image/editor/editor_function.js?{VERHASH}"></script>  
    <scripttype="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>  
    <scripttype="text/JavaScript">  
    functionvalidate(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();   
    returnfalse;   
    }
    </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);  

                                                        
    会员购买:>> 点击购买 << | 魔扣币购买:>> 点击购买 <<
    承接业务:服务器代维丨网站托管丨SEO
    联系客服:微信:morko-net | QQ:1367681973

    该用户从未签到

    1

    主题

    263

    回帖

    528

    积分

    高级魔扣

    Rank: 4

    魔扣币
    263
    贡献
    263
    威望
    1
    发表于 2019-5-31 21:41:13 | 显示全部楼层
    既然选择离开,就不要说不会忘记;既然你我没有缘分,就不需要誓言,因为誓言再多也没有用。今天的一切,魔扣源码论坛就像水流过一样不留痕迹。明天、以后,等我们再见的时候,就变成了陌生人。

    该用户从未签到

    2

    主题

    247

    回帖

    496

    积分

    中级魔扣

    Rank: 3Rank: 3

    魔扣币
    247
    贡献
    247
    威望
    0
    发表于 2019-7-15 10:02:15 来自手机 | 显示全部楼层
    人生就是一首歌,要懂得这首歌的音符,才会唱好这首歌,所以,要学习。人生就一个旋转的陀螺,只有不停的旋转,才会专一,所以,要努力。在前进的路上,要相信前面的风景更美好,丢失了什么不必在意,所以,魔扣源码论坛要乐观,任何时候都要乐观。这样,人生走的才不会累,才有意义。

    该用户从未签到

    2

    主题

    255

    回帖

    513

    积分

    高级魔扣

    Rank: 4

    魔扣币
    256
    贡献
    256
    威望
    0
    发表于 2019-9-25 19:32:57 | 显示全部楼层
    一句祝福,浓缩着真挚的情感,犹如芳香四溢的美酒,恰似柔润馨香的春风…一份感动,一份甜美,一份陶醉,一份深情,浓郁成这千丝万缕的情愫,荡起心海涟漪重重…谢谢你,亲爱的朋友。将这浓郁的情感嵌入荧屏,捧出一颗心的真诚祝福。魔扣源码论坛愿快乐与幸福永远相伴你的每一天

    该用户从未签到

    1

    主题

    256

    回帖

    514

    积分

    高级魔扣

    Rank: 4

    魔扣币
    257
    贡献
    257
    威望
    0
    发表于 2019-10-7 22:49:12 来自手机 | 显示全部楼层
    叶子的离开,是因为风的追求还是树的不挽留?-魔扣源码论坛   

    该用户从未签到

    2

    主题

    245

    回帖

    492

    积分

    中级魔扣

    Rank: 3Rank: 3

    魔扣币
    245
    贡献
    245
    威望
    0
    发表于 2020-3-14 16:36:24 来自手机 | 显示全部楼层
    支持你哈...................................
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    • 联系我们
    • 新浪微博 :
    • 在线客服 :魔扣科技 
    • 源码QQ群 :魔扣源码论坛官方总群
    • 联系邮箱 :charlin#morko.net
    • 微信扫一扫
    快速回复 返回顶部 返回列表