自从昨天把dede的文本编辑器换成了ueditor后,发现管理员不能回复留言。
在留言文本框内内容也是写了的,点击提交的时候,它也是提示回复成功,但是前台就是不显示留言的回复。我这里把游客回复权限是关了的,所以这个BUG不管是用户还是管理员应该都是存在的。
小插曲:
在解决这个BUG中,发现dede代码写的太不严谨,我们来看看代码。
最开始我都在纠结,系统提示成功,但在数据库里就是看到不数据,看了这条代码才明白了,所以我果断把这代码改了。至于怎么改,看国人了。
正文:
打开管理员留言回复页面templets/plus/guestbook-admin.htm的代码,可以看到一条PHP调用代码:
<?php GetEditor("remsg", "<font color=red>管理员回复:</font>", 250, "MemberLit"); ?>
要想知道是留言哪里出了问题了,可以像我图片中注释的地方一样,写个文本域去测试一下,留言能正常回复不。当然,我用了文本域之后我的留言是正常回复的,所以,我就把所以问题放在了editor编辑器了。
打开文件路径include/helpers/util.helper.php
可以看到获取编辑器的函数
里面的这句话让我发现了天机
if(!function_exists('SpGetEditor'))
{
require_once(DEDEINC."/inc/inc_fun_funAdmin.php");
}
return SpGetEditor($fname, $fvalue, $nheight, $etype, $gtype, $isfullpage, $bbcode);
从代码中就很容就理解,调用了include/inc/inc_fun_funAdmin.php中的SpGetEditor()方法。
而且此文件也是我之前添加ueditor的文件,所以问题就在这里了。
所以我们打开此文件一探究竟。
在此文件中我分析不出来ueditor文本编辑器哪里有问题,所以索性就直接另写了一个用dede默认文本编辑器的方法。
/* 重写一个给留言用 */
function SpGetEditor2($fname,$fvalue,$nheight="350",$etype="Basic",$gtype="print",$isfullpage="false",$bbcode=false)
{
if($gtype=="")
{
$gtype = "print";
}
require_once(DEDEINC.'/ckeditor/ckeditor.php');
$CKEditor = new CKEditor();
$CKEditor->basePath = $GLOBALS['cfg_cmspath'].'/include/ckeditor/' ;
$config = $events = array();
$config['extraPlugins'] = 'dedepage,multipic,addon';
if($bbcode)
{
$CKEditor->initialized = true;
$config['extraPlugins'] .= ',bbcode';
$config['fontSize_sizes'] = '30/30%;50/50%;100/100%;120/120%;150/150%;200/200%;300/300%';
$config['disableObjectResizing'] = 'true';
$config['smiley_path'] = $GLOBALS['cfg_cmspath'].'/images/smiley/';
// 获取表情信息
require_once(DEDEDATA.'/smiley.data.php');
$jsscript = array();
foreach($GLOBALS['cfg_smileys'] as $key=>$val)
{
$config['smiley_images'][] = $val[0];
$config['smiley_descriptions'][] = $val[3];
$jsscript[] = '"'.$val[3].'":"'.$key.'"';
}
$jsscript = implode(',', $jsscript);
echo jsScript('CKEDITOR.config.ubb_smiley = {'.$jsscript.'}');
}
$GLOBALS['tools'] = empty($toolbar[$etype])? $GLOBALS['tools'] : $toolbar[$etype] ;
$config['toolbar'] = $GLOBALS['tools'];
$config['height'] = $nheight;
$config['skin'] = 'kama';
$CKEditor->returnOutput = TRUE;
$code = $CKEditor->editor($fname, $fvalue, $config, $events);
if($gtype=="print")
{
echo $code;
}
else
{
return $code;
}
}
把这段代码放到include/inc/inc_fun_funAdmin.php文件尾部(?>)之前。
然后回到include/helpers/util.helper.php文件的获取编辑的方法处,换成相关的方法名
好了至此留言的问题就解决了,希望这篇文章能帮到你,也许我文中的表述可能不清楚,但你认真看下来应该也能明白的。
以上有失误,请你继续往下看。
用以上的方法更换,我们后台的文本编辑器也是还原了,唯一的做法就是重写一个getEditor。
所以我在include/helpers/uitil.helper.php中重写谢了一个函数方法function GetEditor2()
/**
* 获取留言编辑器
*
* @param string $fname 表单名称
* @param string $fvalue 如果表单中有默认值,则填入默认值
* @param string $nheight 高度
* @param string $etype 编辑器类型
* @param string $gtype 获取类型
* @param string $isfullpage 是否全屏
* @return string
*/
if ( ! function_exists('GetEditor2'))
{
function GetEditor2($fname, $fvalue, $nheight="350", $etype="Basic", $gtype="print", $isfullpage="FALSE",$bbcode=false)
{
if(!function_exists('SpGetEditor2'))
{
require_once(DEDEINC."/inc/inc_fun_funAdmin.php");
}
return SpGetEditor2($fname, $fvalue, $nheight, $etype, $gtype, $isfullpage, $bbcode);
}
}
可以把这段代码放到【获取编辑器】代码之后,把方法GetEditor()中SpGetEditor2改成SpGetEditor
然后在回到templets/plus/guestbook-admin.htm中,我们把回复留言调用的php代码换成我们刚才修改的内容
<tr bgcolor="#ffffff">
<td align="center" nowrap>
回复留言:<!-- <textarea name="remsg" cols="10" rows="6"></textarea> -->
</td>
<td colspan="3" nowrap>
<div style='width:92%'><?php GetEditor2("remsg", "<font color=red>管理员回复:</font>", 250, "MemberLit"); ?></div>
</td>
</tr>
现在就大工告成了,然后我刚才也测试了一下,文章,栏目,留言都能正常使用了。
历史上的今天:
- 2019: 织梦dedecms手机模版使用命名规则(0)
本文章百度已收录,若发现本站有任何侵犯您利益的内容,请及时邮件或留言联系,我会第一时间删除所有相关内容。
2018年3月24日 20:38 沙发
嗯,这样多走动走动就熟悉了。哈。
2018年3月24日 21:17 1层
@林东煌 哈哈,是滴是滴