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}
    输出结果 会全部替换为半角句号


  • 相关阅读:
    jquery如何获取url中问号后面的数值
    CSS3 @font-face
    如何在代码中应用设计模式
    面试中可能被问到的常用排序算法
    《深入java虚拟机》读书笔记之垃圾收集器与内存分配策略
    《深入java虚拟机》读书笔记之Java内存区域
    Spring系列之手写一个SpringMVC
    Java多线程之Executor框架和手写简易的线程池
    Spring系列之手写注解与配置文件的解析
    Spring系列之AOP的原理及手动实现
  • 原文地址:https://www.cnblogs.com/aiwz/p/6154263.html
Copyright © 2011-2022 走看看