【PHP高级】Smarty模板三

    xiaoxiao2021-12-14  21

    系统做好以后,我们希望同类的软件在销售时无须改动代码或操作数据库,就可以做到更改整个系统的标题、版权信息、在线客服等的更改,那么需要使用配置。

    一、配置

    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);

     

    ?>

    转载请注明原文地址: https://ju.6miu.com/read-963121.html

    最新回复(0)