如果你对JOOMLA有任何问题,请在问答里提交你的问题,将有管理员为你解答!
首页 > 开发手记 > 实现joomla消息提示弹出式效果

实现joomla消息提示弹出式效果

实现joomla消息提示弹出式效果

joomla消息提示,例如登录不成功时出现的账号错误提示,是以模块方式显示的。效果显示不是那么太美观,为了在不修改心文件的基础上实现弹出框 提示的效果。只有对模板稍微修改一下了。

1.打开默认模板文件的css文件,一般是tmplates.css,找到#system-message,如果没有则添加一个,插入属 性:display:none;

2.打开模板的index.php,找到<jdoc:include type=”message”/>先删掉,再把下面的代码粘贴到最下面也就是</body>的前面,

<?php if ($this->getBuffer(‘message’)){?>
<jdoc:include type="message" />
<script type="text/javascript" language="javascript">
var nhmessage = document.getElementById("system-message").innerHTML;
sAlert(nhmessage,this);


function sAlert(txt){
//var eSrc=(document.all)?window.event.srcElement:arguments[1];
var eSrc = window;
var shield = document.createElement("DIV");
shield.id = "shield";
shield.style.position = "absolute";
shield.style.left = "0px";
shield.style.top = "0px";
shield.style.width = "100%";
shield.style.height = ((document.documentElement.clientHeight>document.documentElement.scrollHeight)?document.documentElement.clientHeight:document.documentElement.scrollHeight)+"px";
shield.style.background = "#333";
shield.style.textAlign = "center";
shield.style.zIndex = "10000";
shield.style.filter = "alpha(opacity=0)";
shield.style.opacity = 0;
var alertFram = document.createElement("DIV");
alertFram.id="alertFram";
alertFram.style.position = "absolute";
alertFram.style.left = "50%";
alertFram.style.top = "50%";
alertFram.style.marginLeft = "-225px" ;
alertFram.style.marginTop = -75+document.documentElement.scrollTop+"px";
alertFram.style.width = "450px";
alertFram.style.height = "150px";
alertFram.style.background = "#ccc";
alertFram.style.textAlign = "center";
alertFram.style.lineHeight = "150px";
alertFram.style.zIndex = "10001";
strHtml  = "<div style=\"list-style:none;margin:0px;padding:0px;width:100%\">\n";
strHtml += "    <div style=\"background:#658BB2;text-align:left;padding-left:10px;font-size:14px;font-weight:bold;height:25px;line-height:25px;border:1px solid #336699;color:#fff;\">系统提示</div>\n";
strHtml += "    <div style=\"background:#fff;text-align:center;font-size:12px;height:120px;line-height:120px;border-left:1px solid #336699;border-right:1px solid #336699;\"><dl id=\"system-message\" style=\"display:inline;\">"+txt+"</dl></div>\n";
strHtml += "    <div style=\"background:#fff;text-align:center;font-weight:bold;height:25px;line-height:25px;border:1px solid #336699;border-top-width:0;\"><input type=\"button\" value=\"确 定\" id=\"do_OK\" onclick=\"doOk()\" /></div>\n";
strHtml += "</div>\n";
alertFram.innerHTML = strHtml;
document.body.appendChild(alertFram);
document.body.appendChild(shield);
this.setOpacity = function(obj,opacity){
if(opacity>=1)opacity=opacity/100;
try{ obj.style.opacity=opacity; }catch(e){}
try{
if(obj.filters.length>0&&obj.filters("alpha")){
obj.filters("alpha").opacity=opacity*100;
}else{
obj.style.filter="alpha(opacity=\""+(opacity*100)+"\")";
}
}catch(e){}
}
var c = 0;
this.doAlpha = function(){
if (++c > 20){clearInterval(ad);return 0;}
setOpacity(shield,c);
}
var ad = setInterval("doAlpha()",1);
this.doOk = function(){
//alertFram.style.display = "none";
//shield.style.display = "none";
document.body.removeChild(alertFram);
document.body.removeChild(shield);
eSrc.focus();
document.body.onselectstart = function(){return true;}
document.body.oncontextmenu = function(){return true;}
}
document.getElementById("do_OK").focus();
eSrc.blur();
document.body.onselectstart = function(){return false;}
document.body.oncontextmenu = function(){return false;}
}
</script>
<?php }?>

这样就可以实现弹出式效果,如果模板有<jdoc:include type="modules" name="debug" />,代码一定也要在它前面,否则弹出消息提示后,摁确定后,页面须重新刷新一下再可以用,不然鼠标不能点击 最后更新 ( 2010-05-30 17:17 )

Add comment


Security code
Refresh