zoukankan      html  css  js  c++  java
  • Smarty学习笔记(二)

    1.引用

    {include file="xxx.xxx" sitename="xxx"}

    向引入的文件传入变量:

    {include file="xxx.xxx" sitename="xxx"}

    这时候可以在引入的文件中使用sitename这个变量,值为"xxx"


    2.类与对象

    用assign把类的对象以变量形式赋值到smarty模板中使用

    php内

        class My_Object{
            function meth1($params){
                return $params[0].'已经'.$params[1];
            }
        }
        $myobj = new My_Object();
        $smarty->assign('myobj',$myobj);
    tpl内
    {$myobj->meth1(array('你','是别人的'))}

    3.使用php函数

    {<param1>|<php function name>:<param2>:<param3>:<param4>}
    例如:

    字符替换函数

    str_replace('被替换的',"替换为",被替换的变量)

    例如将变量title的值“title”替换为”titlh“,并且保持首字母大写,无字符时默认显示"notitle"

    {'e'|str_replace:'h':$articletitle|default:'notitle'|capitalize}


    4.向smarty中加入自定义函数

     function test($params){
            $p1 = $params['p1'];
            $p2 = $params['p2'];
            return 'p1='.$p1.',p2='.$p2;
        }
        
        $smarty->registerPlugin('function','f_test','test');

    第一个参数为加入的函数类型(function、modifier、block),第二个为在smarty中的函数名,第三个为要添加的函数名

    调用:

    {f_test p1="test1" p2="test2"}
    实质:调用的时候将参数=值封装成一个数组传入函数,在函数内解包

    5.制作、使用插件:

    ①在plugins目录下新建文件,例如新建一个function插件,则命名为function.xxx.php,函数的命名规范为smarty_function_xxx

    则可以通过{xxx param1=... param2=...}来调用(忽视smarty_function部分)

    ②modifier类型(变量调节器)与之不同的在于参数不是数组,而是有几个写几个

    ③block类型(区块插件)

    block插件名称为smarty_block_xxx,则使用方法为<xxx>...</xxx>

    参数是打包成数组传入

    注意有两个参数,第二个参数为block的内容

    例如设计一个插件将一段话中的前多少个字符显示,并且替换全角逗号为半角 。

    block.test2.php

    <?php
    
        function smarty_block_test2($params, $content){
            $replace = $params['replace'];
            $maxnum = $params['maxnum'];
            if($replace == 'true'){
                $content = str_replace(',',',',$content);
                $content = str_replace(',',',',$content);
            }
            $content = substr($content,0,$maxnum);
            return $content;
        }
    
    ?>

    xxx.tpl

    {test2 replace='true' maxnum = 100}
    ,,,,,,,,,
    {/test2}
    输出结果 会全部替换为半角句号


  • 相关阅读:
    数据结构笔记
    并查集
    计算两个数的最大公约数和最小公倍数
    行盒
    浏览器兼容性和布局
    Java中HashMap等的实现要点浅析
    关于js异步上传文件
    填充路径时所使用的 “非零环绕规则”
    XP极限编程
    假如森林里有一棵树倒下了
  • 原文地址:https://www.cnblogs.com/aiwz/p/6154263.html
Copyright © 2011-2022 走看看