【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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章