织梦dedecmsV5.7提示信息提示框美化(带安装教程和效果展示)
一、效果展示
1、安装前效果
2、安装后效果
二、安装说明
1、安装测试版本:DedeCMS-V5.7.117-UTF8;
2、必须在修改代码之前请做好文件备份,以免误操无法恢复;
3、为了兼容其他版本,请在安装时,最好将替换前的代码和替换后的代码对比一下,除模版代码之外是否有其他改动;
4、安装后效果作用于前台和后台
三、安装教程
第一步、打开修改文件
找到并打开文件【/include/common.func.php】
第二步、找到要替换的代码
⇩⇩⇩开始代码(大约在288行)
function ShowMsg($msg, $gourl, $onlymsg=0, $limittime=0)
{
中间代码省略部分……
echo $msg;
}
⇧⇧⇧结束代码(大约在351行)
⇩⇩⇩开始⇩⇩⇩
⇩⇩⇩结束⇩⇩⇩
第三步:替换并修改代码
将下面美化的代码替换上面这段代码:
function ShowMsg($msg, $gourl, $onlymsg=0, $limittime=0)
{
if(empty($GLOBALS['cfg_plus_dir'])) $GLOBALS['cfg_plus_dir'] = '..';
$htmlhead = "<html>\r\n<head>\r\n<title>提示信息</title>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no\">\r\n<meta name=\"renderer\" content=\"webkit\">\r\n<meta http-equiv=\"Cache-Control\" content=\"no-siteapp\" />";
$htmlhead .= "<base target='_self'/>\r\n<style>div{line-height:160%;}</style></head>\r\n<body leftmargin='0' topmargin='0' bgcolor='#FFFFFF'>".(isset($GLOBALS['ucsynlogin']) ? $GLOBALS['ucsynlogin'] : '')."\r\n<center>\r\n<script>\r\n";
$htmlfoot = "</script>\r\n</center>\r\n</body>\r\n</html>\r\n";
$litime = ($limittime==0 ? 1000 : $limittime);
$func = '';
if($gourl=='-1')
{
if($limittime==0) $litime = 5000;
$gourl = "javascript:history.go(-1);";
}
if($gourl=='' || $onlymsg==1)
{
$msg = "<script>alert(\"".str_replace("\"","“",$msg)."\");</script>";
}
else
{
//当网址为:close::objname 时, 关闭父框架的id=objname元素
if(preg_match('/close::/',$gourl))
{
$tgobj = trim(preg_replace('/close::/', '', $gourl));
$gourl = 'javascript:;';
$func .= "window.parent.document.getElementById('{$tgobj}').style.display='none';\r\n";
}
$func .= " var pgo=0;
function JumpUrl(){
if(pgo==0){ location='$gourl'; pgo=1; }
}\r\n";
$rmsg = $func;
$rmsg .= "document.write(\"<style>body{background:#F6F6F6}.tips-box{margin-top:50px;padding:0;width:450px;border:10px solid #E8E8E8;background:#fff;color:#444;font-family:微软雅黑}.tips .title{margin:0 20px;padding:15px 0;border-bottom:1px dotted #DDD;text-align:left;font-size:15px}.tips .title p{padding-left:10px;height:18px;border-left:2px solid #009688;font-weight:600;line-height:18px;margin: 0;}.tips .content{position:relative;padding:30px;height:120px;background:#fff;color:#666;font-size:15px}.tips .content p.tip{color:#999;font-size:1px}.tips .content a.go{display:block;margin:15px auto 0;padding:6px 10px;width:80px;border:1px solid #019688;border-radius:3px;color:#1AA094;text-decoration:blink;font-size:13px}.tips .content a:hover{background:#1AA094;color:#fff}</style>\");\r\n;";
$rmsg .= "document.write(\"<div class='tips tips-box'>";
$rmsg .= "<div class='title'><p>提示信息</p></div>\");\r\n";
$rmsg .= "document.write(\"<div class='content'>\");\r\n";
$rmsg .= "document.write(\"".str_replace("\"","“",$msg)."\");\r\n";
$rmsg .= "document.write(\"";
if($onlymsg==0)
{
if( $gourl != 'javascript:;' && $gourl != '')
{
$rmsg .= "<a href='{$gourl}' class='go'>点击跳转</a>";
$rmsg .= "<br/></div>\");\r\n";
$rmsg .= "setTimeout('JumpUrl()',$litime);";
}
else
{
$rmsg .= "<br/></div>\");\r\n";
}
}
else
{
$rmsg .= "<br/><br/></div>\");\r\n";
}
$msg = $htmlhead.$rmsg.$htmlfoot;
}
echo $msg;
}
第四步、保存并上传文件
将替换好的【/include/common.func.php】文件,保存并上传到你的站点;
第五步、测试效果
1、前台测试效果:进入搜索页,在3秒内连续点击两次搜索,会有提示弹出;
2、后台测试效果:直接登录后台管理员,会有登录成功提示;
以上美化已经完成。
四、仅优化 "DedeCMS 提示信息!”标题
1、如果你不想美化提示界面,只想修改“DedeCMS提示信息”标题
2、还是这个文件,找【DedeCMS 提示信息】关键词,有2处要修改
3、直接修改成你自己定义的标题名称即可;
五、其他ShowMsg函数说明
关于Dede Cms系统提示方式修改以及ShowMsg函数说明
DedeCMS的所有提示信息都是用ShowMsg方法进行处理的,我们先来了解一下ShowMsg函数
源码格式:
/**
* 短消息函数,可以在某个动作处理后友好的提示信息
*
* @param string $msg 消息提示信息
* @param string $gourl 跳转地址
* @param int $onlymsg 仅显示信息
* @param int $limittime 限制时间
* @return void
*/
function ShowMsg($msg, $gourl, $onlymsg=0, $limittime=0)
格式:ShowMsg($msg, $gourl, $onlymsg=0, $limittime=0)
$msg:参数是要返回的信息,也就是提示的问题;
$gourl:参数是提示完成后要返回的页面,参数有:
① -1 代表返回上一页;
② 直接写页面名称,如【index.php】 表示返回指定的index.php页面;
ShowMsg(“成功登录,5秒钟后转向系统主页…”,“index.php”,0,2000);
javascript:window.opener=null;window.open(’’,’_self’);window.close(); 关闭当前跳转的提示窗口;
$limittime:参数是提示停留的秒数,以毫秒为单位;1000就是1秒。
$onlymsg:参数是提示的显示方式,具体参数有:
① $onlymsg=0 为0,则以跳转到新页面显示;
② $onlymsg<>0 不为0,则以弹出对话框的形式进行显示
如果gourl为空,或者onlymsg==1,跳转的页面是空白;
下面举例说明两种修改方法;
DedeCMS的提示信息默认的是跳转,好处是防止有些浏览器禁止了弹出窗口,但用户体验稍差,可以修改提示信息为弹窗更友好,制作做两种修改方法:
方法一:举个表单提交的例子:
① 表单字段为空,弹出对话框提示信息,不提交表单,返回;
② 表单信息完整无误,更改点击提交后的跳转为弹出“成功提交”对话框信息,关闭当前窗口并刷新;
修改如下:
1、找到
$msg = "<script>alert(\"".str_replace("\"","“",$msg)."\");</script>";
修改为:
$msg = "<script>history.go(-1);location.reload()</script>";
让$gourl值为1时,就能实现返回上级(历史)页面并刷新,但并不提示任何信息。
这样做的好处是:htm页面内编写JS判断字段数据是否规范,不满足条件不能提交,不必提示信息跳转。
结合点击或回车事件,在所需要修改的模板之前增加代码
对应的提交(确定)按钮,需要增加onclick鼠标点击效果。
确定
当然如果希望输入某个字段(如name=“uname”)后回车就需要在对应的input增加代码
<input type="text" id="" name="uname" onkeypress="
if(event.keyCode==13){
record();//执行click事件,多个事件之间用英文的";"隔开
return false;//不执行表单提交
}"/>
以上可以实现用点击按钮或者回车实现提示信息为弹出对话框,点击确定后才真正提交内容。
判断所字段是否为空
方法二:举个购物车提交的例子
用户提交商品到购物车后不跳转到购物车,直接返回原页面并刷新该页面
1、打开【include/common.fun.php】,找到
if($gourl=='' || $onlymsg==1)
{
$msg = "<script>alert(\"".str_replace("\"","“",$msg)."\");</script>";
}
替换成:
if($gourl=='' || $onlymsg==1)
{
$msg = "<script>alert(\"".str_replace("\"","“",$msg)."\");self.location=document.referrer;</script>";
}
2、打开【plus/posttocar.php】,找到
ShowMsg("已添加加到购物车,<a href='car.php'>查看购物车</a>","car.php");
替换成:
ShowMsg("已添加加到购物车,<a href='car.php'>查看购物车</a>");
DedeCMS跳转提示信息修改总结
第一种是利用原生JavaScript与DedeCMS源代码,功能较强大,可以对字段进行筛选、判断是否空等操作,根据自己的实际需要进行修改;
另一种是只利用了DedeCMS源代码,功能较单一。根据自己的实际需要选择任意一种都可以,两种方法有冲突。