smarty巧妙處理iframe中內(nèi)容頁的代碼
更新時(shí)間:2012年03月07日 23:08:52 作者:
最近在用smarty做一個(gè)小項(xiàng)目,發(fā)現(xiàn)smarty中模板引擎挺不錯(cuò),讓前端和后端真正的分離
廢話不多說,進(jìn)去正題
做過后臺的,應(yīng)該都知道,經(jīng)常要用到iframe來處理導(dǎo)航,如果按一般的思路來做這個(gè)功能,還是挺簡單的
可是當(dāng)我用smarty的時(shí)候,就發(fā)現(xiàn)了問題,比如,一個(gè)iframeset分成了:頭部top,左邊menu,右邊main,
正常情況,用smarty來處理的話,一般是這樣:
如果3個(gè)頁面僅僅只是靜態(tài)頁面的話,就是如下處理
iframe.html代碼:
<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">
</frameset>
假設(shè)iframe里面的內(nèi)容頁都要應(yīng)用到一些特殊處理,如:
top.html需要顯示后臺登陸用戶名
menu.html中menu都是動(dòng)態(tài)獲取
main.html中需要讀取服務(wù)器的信息
這樣的話,我們會給3個(gè)內(nèi)容頁分別用3個(gè)后臺處理頁
//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')
上面的處理方法,完全能達(dá)到要求
iframe.html代碼:
<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">
</frameset>
現(xiàn)在我們假設(shè),我們現(xiàn)在要對這3個(gè)內(nèi)容頁分別進(jìn)行分角色處理,不同角色,3個(gè)頁面需要顯示不同的效果
按上面的處理方法,我們就需要對3個(gè)頁面分別處理,這樣就自然的就多了冗余的處理,而且以后的維護(hù)也麻煩
于是我想到了下面的方法,獨(dú)立出一個(gè)專門的處理程序iframe.php,通過條件來模擬出上面3個(gè)頁面
直接貼代碼了:
iframe.php 后臺代碼:
/*此處放共用處理代碼*/
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:
<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">
</frameset>
通過這樣處理,我感覺方便多了
做過后臺的,應(yīng)該都知道,經(jīng)常要用到iframe來處理導(dǎo)航,如果按一般的思路來做這個(gè)功能,還是挺簡單的
可是當(dāng)我用smarty的時(shí)候,就發(fā)現(xiàn)了問題,比如,一個(gè)iframeset分成了:頭部top,左邊menu,右邊main,
正常情況,用smarty來處理的話,一般是這樣:
如果3個(gè)頁面僅僅只是靜態(tài)頁面的話,就是如下處理
iframe.html代碼:
復(fù)制代碼 代碼如下:
<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">
</frameset>
假設(shè)iframe里面的內(nèi)容頁都要應(yīng)用到一些特殊處理,如:
top.html需要顯示后臺登陸用戶名
menu.html中menu都是動(dòng)態(tài)獲取
main.html中需要讀取服務(wù)器的信息
這樣的話,我們會給3個(gè)內(nèi)容頁分別用3個(gè)后臺處理頁
復(fù)制代碼 代碼如下:
//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')
上面的處理方法,完全能達(dá)到要求
iframe.html代碼:
復(fù)制代碼 代碼如下:
<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">
</frameset>
現(xiàn)在我們假設(shè),我們現(xiàn)在要對這3個(gè)內(nèi)容頁分別進(jìn)行分角色處理,不同角色,3個(gè)頁面需要顯示不同的效果
按上面的處理方法,我們就需要對3個(gè)頁面分別處理,這樣就自然的就多了冗余的處理,而且以后的維護(hù)也麻煩
于是我想到了下面的方法,獨(dú)立出一個(gè)專門的處理程序iframe.php,通過條件來模擬出上面3個(gè)頁面
直接貼代碼了:
iframe.php 后臺代碼:
復(fù)制代碼 代碼如下:
/*此處放共用處理代碼*/
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:
復(fù)制代碼 代碼如下:
<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">
</frameset>
通過這樣處理,我感覺方便多了
相關(guān)文章
php實(shí)現(xiàn)改變圖片直接打開為下載的方法
這篇文章主要介紹了php實(shí)現(xiàn)改變圖片直接打開為下載的方法,涉及php操作圖片下載的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04PHP連接SQLServer2005的實(shí)現(xiàn)方法(附ntwdblib.dll下載)
為了php連接sql2005 ,我在網(wǎng)絡(luò)上找了一大堆資料在我的csdn博客中.晚上3:05分時(shí)候終于搞定了2012-07-07在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的運(yùn)行環(huán)境
這篇文章主要介紹了在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的運(yùn)行環(huán)境,需要的朋友可以參考下2016-04-04PHP中call_user_func_array回調(diào)函數(shù)的用法示例
這篇文章主要給大家介紹了PHP中call_user_func_array回調(diào)函數(shù)的用法,文中給出了詳細(xì)的示例代碼,相信對大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11php簡單防盜鏈驗(yàn)證實(shí)現(xiàn)方法
這篇文章主要介紹了php簡單防盜鏈驗(yàn)證實(shí)現(xiàn)方法,通過$_SERVER['HTTP_REFERER']獲取來路頁面URL再進(jìn)行判斷進(jìn)而實(shí)現(xiàn)對非本地URL的攔截功能,需要的朋友可以參考下2016-07-07PHP中file_exists使用中遇到的問題小結(jié)
本文給大家詳細(xì)描述了作者在使用file_exists中遇到的問題以及分析解決方法的過程,非常的詳細(xì),有需要的小伙伴可以參考下。2016-04-04