【PHP高級】Smarty模板三


系統做好以後,我們希望同類的軟件在銷售時無須改動代碼或操作數據庫,就可以做到更改整個系統的標題、版權信息、在線客服等的更改,那麼需要使用配置。

一、配置

1、在config文件夾下新建配置文件一般爲xxx.conf

2、後臺頁面定義配置

3、前臺頁面加載<{config_load file=”xxx.conf”}>

4、在需要顯示的位置使用

<{#配置名#}>  

<{$smarty.config.配置名}>

 

在線QQ客服生成代碼:

<a class=bot2-LINK1 href="tencent://message/?uin=<{#qq#}>&Site=QQ&Menu=yes">QQ:<{#qq#}></a> 給管理員發送郵件:<a href="mailto:<{#email#}>"><{#email#}></a>

Qq在線生成代碼:

<a target=blank href=tencent://message/?uin=962392775&Site=QQ&Menu=yes><img border="0" SRC=http://wpa.qq.com/pa?p=1:962392775:8 alt="點擊這裏給我發消息"></a>

 

 

發送郵件代碼|

<a target="_blank" title="點擊給我寫信" href="http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=8pqKgYGHnJyLspSdip_Tm57ckZ2f" style="text-decoration:none;"><img src="http://rescdn.qqmail.com/zh_CN/htmledition/images/function/qm_open/ico_mailme_01.png"/> </a>

 

5、默認真個配置文件中所有的配置作用於整個站點,如果想要對應的配置只是作用於整個站點其中的幾個頁面,可以在對應的配置節點前加上[修飾名],然後在對應的頁面加載配置文件時,通過section=修飾名

 

二、頁面切割合併

1、各個頁面單獨有前後臺頁面地址

2、整合的頁面在前臺頁面地址通過

<{include file=”前臺頁面地址”}>

<{include_php file=”後臺頁面地址}> <{*新版本需要引入SmartyBC.class.php實例化對象*}>

3、結合數據庫操作實現效果如下

 

 

三、模板繼承與訪問單入口

在前臺爲了方便於大家掌握頁面切割合併技術,訪問mian.phpmain1.phpmian2.php 前臺的頁面內容是賦值index.tpl頁面內容,處理掉不同的主體部分;那麼如果不復制index.tpl,只是針對於不同的主體頁面處理內容和佈局,可以通過URL重寫index.php來實現。

缺陷:

1、每個頁面在加載時需要寫判斷

<{include_php file=”地址無法用變量替代”}>

2、訪問的頁面地址暴露,具有安全隱患

 

模板繼承extends)改進:

1、index.tpl中需要讓其他頁面處理部分用<{block name=b1”}><{/blcok}>起來;

2、其他頁面前臺

<{extends file=”index.tpl”}><{*複製所有index.php頁面功能*}>

<{*處理掉到index.tplblock部分內容*}>

<{block name=”b1”}>

處理內容

<{/block}>

3、在對應處理頁面的block塊中可以獲取原來index.tplblock的內容,示例源碼如下

aaa外面的內容會自動忽略沒有效果

<{extends file=”index.tpl”}>

bbb外面的內容會自動忽略沒有效果

<{block name=”b1”}>

自己的處理內容,再獲取原來的index.tpl中的內容,<{$smarty.block.parent}>

<{/block}>

 

註冊插件函數 registerPlugin()  

 

網站單入口訪問:訪問的頁面是一個整合的頁面,比如index.php

 

 

四、僞靜態:

一般情況下訪問一個PHP頁面並且傳參格式如下

http://localhost/index.php?a=1&b=2&c=3

不利於搜索引擎優化,處理成

http://localhost/index.php?a-1-b-2-c-3.html apache2.X版本可以直接像URL重寫一樣獲取上述的值;

或者

http://localhost/index.php?a/1/b/2/c/3 路由訪問模式

 

所謂的僞靜態就是對訪問的URL重寫的PHP頁面處理成一個XXXX.html頁面,而不是真的創建HTML頁面。

 

主要功能處理上述結果並且取值,示例代碼如下:

<?php

$url='http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];

 

if(preg_match('/\?(\w+)=((\w|[^\x00-\xff])+)(&(\w+)=((\w|[^\x00-\xff])+)){0,}/si',$url)){

//處理url

$params=substr($url,strpos($url,'?')+1);

$params=str_replace('=','-',$params);

$params=str_replace('&','-',$params).'.html';

$furl=substr($url,0,strpos($url,'?')+1);

$url=$furl.$params;

echo "<script>window.location.href='$url';</script>";

}

/*else{//地址不對跳轉走}*/

 

$rparams=urldecode($_SERVER['QUERY_STRING']);

$rparams=substr($rparams,0,strrpos($rparams,'.'));

$kvpa=explode('-',$rparams);

print_r($kvpa);

 

?>

發佈了83 篇原創文章 · 獲贊 12 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章