随心所欲调用discuz编辑器

这些天百度和google了不知道多少遍,发现discuz的官方文档和二次开发资料少得可怜。调用个编辑器这样采用的功能官方文档居然没有,网友的分享多少也有些不完整;中途差点放弃。最后实在没办法兼不甘心,自己啃源码去。最后的最后,你们也知道了,问题解决了,也就有了这篇文章。解决个调用编辑框的问题居然耗费了我一整天,不可思议。好了,这里记录下如何调用discuz的编辑器吧,如有误,请指出。

  环境:discuz! x2.5
1、模板文件添加内容
  1. <!--{subtemplate home/editor_image_menu}-->
    内容:<textarea class=userData name=content id=uchome-ttHtmlEditor style=height: 100%; width: 100%; display: none; border: 0px></textarea>
    <iframe src='home.php?mod=editor&charset={CHARSET}&allowhtml=1&isportal=1' name='uchome-ifrHtmlEditor' id='uchome-ifrHtmlEditor'  scrolling='no' style='width:85%;height:400px;border:1px solid #C5C5C5;position:relative;' border=0 frameborder=0 ></iframe>
    <iframe id=uploadframe name=uploadframe width=0 height=0 marginwidth=0 frameborder=0 src=about:blank></iframe>
    <input id='submit_editsubmit' class='btn' type='submit' value='提交'  name='editsubmit' onClick='validate(this);'>
    <script type=text/javascript src=static/image/editor/editor_function.js></script>  
    <script type=text/JavaScript>  
    function validate(obj) {  
        edit_save();  
        window.onbeforeunload = null;  
        obj.form.submit();  
        return false;  
    }
    </script>
复制代码 然而这中间需要注意的是:
  1. <!--{subtemplate home/editor_image_menu}-->
复制代码 是用于调用图片上传功能的,少了的话图片上传功能也就用不了了。
  1. <script type=text/javascript src=static/image/editor/editor_function.js></script>  
    <script type=text/JavaScript>  
    function validate(obj) {  
        edit_save();  
        window.onbeforeunload = null;  
        obj.form.submit();  
        return false;  
    }
    </script>
复制代码  这段js是编辑框传值和校验用,少了也就没法传值了。很多资料到这一步也就完了,此时图片上传功能却无法使用。百度和google了不知道多少遍也没有找到,资料少得可怜。但是少了图片上传功能,这个编辑器也就不完整了;再者编辑框大部分情况下都是需要上传图片的。因此,不得不查看源码,一步步调试了。

2、查找问题

  上传图片的时候,出现以下的现象,然后就毫无反应了。
 
于是找来misc.php查看源码。最后一句是这样的
  1. require DISCUZ_ROOT.'./source/module/misc/misc_'.$mod.'.php';
复制代码 将$mod输出,发现时swfupload。于是找来misc_swfupload.php文件。第一行的判断是这样的。
  1. if((empty($_G['uid']) && $_GET['operation'] != 'upload') || $_POST['hash'] != md5(substr(md5($_G['config']['security']['authkey']),8).$_G['uid'])) {
        exit();
    }
复制代码 于是将分别将
  1. $_POST['hash']
复制代码 和
  1. md5(substr(md5($_G['config']['security']['authkey']),8).$_G['uid'])
复制代码
分别输出来,发现hash是空的,完全对不上。于是找出页面的hash,在页面
/template/default/home/editor_image_menu.htm

中找到了如下代码

  1. <script type=text/javascript>
        var attachUpload = new SWFUpload({
            // Backend Settings
            upload_url: {$_G[siteurl]}misc.php?mod=swfupload&action=swfupload&operation=<!--{if $_G['basescript'] == 'portal'}-->portal<!--{else}-->album<!--{/if}-->,post_params: {uid : $_G[uid],hash:$swfconfig[hash]<!--{if $_G['basescript'] == 'portal'}-->,aid:$aid,catid:$catid<!--{/if}-->},// File Upload Settings
            file_size_limit : $swfconfig[max],// 100MB
            <!--{if $_G['basescript'] == 'portal'}-->
            file_types : $swfconfig[attachexts][ext],file_types_description : $swfconfig[attachexts][depict],<!--{else}-->
            file_types : $swfconfig[imageexts][ext],file_types_description : $swfconfig[imageexts][depict],<!--{/if}-->
            file_upload_limit : 0,file_queue_limit : 0,// Event Handler Settings (all my handlers are in the Handler.js file)
            swfupload_preload_handler : preLoad,swfupload_load_failed_handler : loadFailed,file_dialog_start_handler : fileDialogStart,file_queued_handler : fileQueued,file_queue_error_handler : fileQueueError,file_dialog_complete_handler : fileDialogComplete,upload_start_handler : uploadStart,upload_progress_handler : uploadProgress,upload_error_handler : uploadError,upload_success_handler : uploadSuccess,upload_complete_handler : uploadComplete,// Button Settings
            button_image_url : {IMGDIR}/uploadbutton.png,button_placeholder_id : spanButtonPlaceholder,button_width: 100,button_height: 25,button_cursor:SWFUpload.CURSOR.HAND,button_window_mode: transparent,custom_settings : {
                progressTarget : fsUploadProgress,uploadSource: 'portal',uploadType: 'attach',imgBoxObj: $('attachlist')
                //thumbnail_height: 400,//thumbnail_width: 400,//thumbnail_quality: 100
            },// Debug Settings
            debug: false
        });
    
    </script>
复制代码 hash是由
$swfconfig[hash]

进行赋值的。于是又搜索了一遍源码,发现了这么两句。
  1. <p>require_once libfile('function/upload');</p><p>$swfconfig = getuploadconfig($_G['uid'],true);</p>
复制代码 二话不说,复制过来测试。试了一下,尼玛的还是不行。于是找呀找呀找,发现是前面调试时的输出影响了ajax的处理。于是将调试语句去掉,果不其然,可以成功上传了。一阵欣喜若狂。
 

 

 

对于无法加载相册之类的,一律如法炮制。最后,其实是php代码初始化时添加如下代码即可。

3、解决问题的代码

  1. <p>require_once libfile('function/upload');</p><p>$swfconfig = getuploadconfig($_G['uid'],true);//编辑框上传图片初始化</p><p>require_once libfile('function/spacecp');</p><p></p><p>$albums = getalbums($_G['uid']);//获取登陆用户相册</p>
复制代码 两行代码,耗费了一整天,我也是醉了。

最后想说的是,在开发资料不完整或者急缺的情况下;查看源码也许是解决问题的最快捷的方式。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


1、想好字段名! 这里取一个test 商品发布模板:post_trade.htm 在商品发布模板贴内新建一个文本框!
一、后台 → 全局 → 关闭站点(为了不影响数据库备份) 二、数据备份
<?php /** [Discuz!] (C) 2001-2099 Comsenz Inc. config_global.php Build at 2012-07-06 10:16:22 */
今天给大家讲讲 如何把已经切割好的html页面或者模仿的页面转换成可供DIY的页面
打开网站根目录下/template/default/common header_common.htm文件找到 <title><!--{if !empty($navtitle)}-->$navtitle - <!--{/if}--><!--{if empty($nobbname)}--> $_G['se
打开网站根目录/source/module/portal/portal_list.php搜 category_get_list 在里面加入以下代码:添加一下代码
请问discuz的右侧工具栏(有回到顶部,返回板块),但是我想再添加点东西,可是我百度了,也从源码里找了好久,都没找到解决方法,请问可以教一下吗?
这里建议直接使用163邮箱,因为 我测试了 qq邮箱,yeah邮箱 均不能用。 第一步 去163注册一个邮箱,具体怎么注册 想必大家都会。注册好进入163 看下图
这些天百度和google了不知道多少遍,发现discuz的官方文档和二次开发资料少得可怜。调用个编辑器这样采用的功能官方文档居然没有,网友的分享多少也有些不完整;中途差点放弃。最后实在没办法兼不甘心,自己啃源码去
UPDATE `表名称` SET `click` = click+ROUND(RAND() * 6666+ 666) WHERE `click` <5000 复制代码
discuz在数据库批量更新(替换)板块id(fid/gid) UPDATE `fx_forum_thread` SET `fid` = replace(fid,'2','52') WHERE `fid` =2
想在自己的写上置顶的帖子    <div class="announcement_con"> <ul>
进入网站目录:/source/include/post 找到:post_newthread.php备份:post_newthread.php编辑:post_newthread.php搜索:
C::t('forum_attachment')->fetch_all_by_id('aid',$v['tid'] ); 执行上面的代码,会返回对应帖子的附件信息!
版本 dx 3.3 估计3.4一样有这个问题,ie内核的浏览器下在上传后,缩略图都是显示xx。这个问题主要还是https下,对图片输出的时候 不能使用
论坛人气弱?想改阅读数的站长可以围观! 找到:source/module/forum/forum_viewthread.php文件搜索代码:
<!--{if $allowpostreply && !$_G['forum_thread']['archiveid']}--> <a id="post_reply" onclick="showWindow('reply','forum.php?mod=post
SQL语句 UPDATE 表名称 SET 字段名 = REPLACE( 字段名,  '旧字符串',  '新的字符串' )
discuz 帖子内容页面的,上一篇,下一篇代码 上一篇: <a href="forum.php?mod=redirect&goto=nextoldset&tid=$_G[tid]" title="{lang last_thread}"><img src=&quo
1.php文件内判断 if(!$_G['uid']) {                         showmessage('to_login','',arra