系统做好以后,我们希望同类的软件在销售时无须改动代码或操作数据库,就可以做到更改整个系统的标题、版权信息、在线客服等的更改,那么需要使用配置。
一、配置
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.php、main1.php、mian2.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.tpl中block部分内容*}>
<{block name=”b1”}>
处理内容
<{/block}>
3、在对应处理页面的block块中可以获取原来index.tpl中block的内容,示例源码如下
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);
?>