smarty巧妙处理iframe中内容页的代码

废话不多说,进去正题
做过后台的,应该都知道,经常要用到iframe来处理导航,如果按一般的思路来做这个功能,还是挺简单的
可是当我用smarty的时候,就发现了问题,比如,一个iframeset分成了:头部top,左边menu,右边main,
正常情况,用smarty来处理的话,一般是这样:
如果3个页面仅仅只是静态页面的话,就是如下处理
iframe.HTML代码
<div class="codetitle"><a style="CURSOR: pointer" data="3158" class="copybut" id="copybut3158" onclick="doCopy('code3158')"> 代码如下:

<div class="codebody" id="code3158">
<frame src="top.html" name="topFrame" id="topFrame" scrolling="no">
<frameset cols="180," name="btFrame" id="btFrame" frameborder="NO" border="0" framespacing="0">
<frame src="menu.html" id="leftbar" noresize name="menu" scrolling="yes">
<frame src="main.html" id="rightbar" noresize name="main" scrolling="yes">


假设iframe里面的内容页都要应用到一些特殊处理,如:
top.html需要显示后台登陆用户名
menu.html中menu都是动态获取
main.html中需要读取服务器的信息
这样的话,我们会给3个内容页分别用3个后台处理页
<div class="codetitle"><a style="CURSOR: pointer" data="94872" class="copybut" id="copybut94872" onclick="doCopy('code94872')"> 代码如下:
<div class="codebody" id="code94872">
//top.PHP:
$smarty->assign('user',$names );
smarty_Output('top.PHP')
//menu.PHP:
$arr=array();
$arr=GetMenu();
$smarty->assign('menu',$arr);
smarty_Output('menu.PHP');
//main.PHP
$smarty->assign('serverInfo',$serverInfoArr);
smarty_Output('main.PHP');
//显示iframe页
smarty_Output('iframe.html')

上面的处理方法,完全能达到要求
iframe.HTML代码
<div class="codetitle"><a style="CURSOR: pointer" data="72845" class="copybut" id="copybut72845" onclick="doCopy('code72845')"> 代码如下:
<div class="codebody" id="code72845">
<frame src="top.PHP" name="topFrame" id="topFrame" scrolling="no">
<frameset cols="180,
" name="btFrame" id="btFrame" frameborder="NO" border="0" framespacing="0">
<frame src="menu.PHP" id="leftbar" noresize name="menu" scrolling="yes">
<frame src="main.PHP" id="rightbar" noresize name="main" scrolling="yes">


现在我们假设,我们现在要对这3个内容页分别进行分角色处理,不同角色,3个页面需要显示不同的效果
按上面的处理方法,我们就需要对3个页面分别处理,这样就自然的就多了冗余的处理,而且以后的维护也麻烦
于是我想到了下面的方法,独立出一个专门的处理程序iframe.PHP,通过条件来模拟出上面3个页面
直接贴代码了:
iframe.PHP 后台代码
<div class="codetitle"><a style="CURSOR: pointer" data="12366" class="copybut" id="copybut12366" onclick="doCopy('code12366')"> 代码如下:<div class="codebody" id="code12366">
/此处放共用处理代码/
switch($src)
{
case "top":
/此处放处理代码/
smarty_Output('top.html');
break;
case "menu":
/此处放处理代码/
smarty_Output('menu.html');
break;
case "main":
/此处放处理代码/
smarty_Output('main.html');
break;
default:
break;
}

iframe.html:
<div class="codetitle"><a style="CURSOR: pointer" data="93804" class="copybut" id="copybut93804" onclick="doCopy('code93804')"> 代码如下:<div class="codebody" id="code93804">
<frame src="iframe.PHP?src=top" name="topFrame" id="topFrame" scrolling="no">
<frameset cols="180,*" name="btFrame" id="btFrame" frameborder="NO" border="0" framespacing="0">
<frame src="iframe.PHP?src=menu" id="leftbar" noresize name="menu" scrolling="yes">
<frame src="iframe.PHP?src=main" id="rightbar" noresize name="main" scrolling="yes">


通过这样处理,我感觉方便多了

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...