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}

输出结果 会全部替换为半角句号

Smarty学习笔记(二)的更多相关文章

  1. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  2. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  3. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

  4. JMX学习笔记(二)-Notification

    Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...

  5. java之jvm学习笔记二(类装载器的体系结构)

    java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...

  6. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  7. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

  8. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  9. Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  10. Redis学习笔记二 (BitMap算法分析与BitCount语法)

    Redis学习笔记二 一.BitMap是什么 就是通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身.我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省 ...

随机推荐

  1. 让你的代码量减少3倍!使用kotlin开发Android(三) 缩短五倍的Java Bean

    回顾一下 哈,没想到你已经坚持不懈看到第三篇了,不错哈~坚持就是胜利. 本文同步自博主的私人博客wing的地方酒馆 在上一篇文章中,我们介绍了扩展函数,这里对上一篇进行一点小小的补充. 还记得text ...

  2. Oracle导出表

    方法一:利用PL/SQL Developer工具导出: 菜单栏-->Tools-->Export Tables,如下图,设置相关参数即可: 方法二:可以用cmd的操作命令导出,详情请去百度 ...

  3. Android开发之手把手教你写ButterKnife框架(三)

    欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/52672188 本文出自:[余志强的博客] 一.概述 上一篇博客讲了, ...

  4. 剑指Offer——知识点储备--Linux基本命令+Makefile

    剑指Offer--知识点储备–Linux基本命令 1.linux下查看进程占用cpu的情况(top): 格式 top [-] [d delay] [q] [c] [S] [s] [i] [n] 主要参 ...

  5. Linux 环境下的一些常用命令(三)

    转载自 http://www.oschina.net/translate/20-advanced-commands-for-middle-level-linux-users 21. 命令: Find ...

  6. EBS业务学习之库存管理

    库存管理业务流程 企业结构 库存结构 库存结构定义 指定每个子库存的特性: •子库存的数量跟踪 •资产类子库存 •保留子库存 •净值子库存 •包含在有效承诺中Include in ATP •子库存级库 ...

  7. Html书写规范,基本标签使用

    一.html简介1.html是什么Html是用来描述网页的一种语言.(1)HTML 指的是超文本标记语言 (Hyper Text Markup Language)(2)HTML 不是一种编程语言,而是 ...

  8. npm管理工具介绍

    概述 Npm是NodeJS包管理工具,在最新版本中Nodejs集成了npm,可以通过输入 "npm -v" 来测试是否成功安装.如果你安装的是旧版本的 npm,可以通过 npm 命 ...

  9. Linux日志管理高级进阶:实例详解syslog

    syslog已被许多日志函数采纳,它用在许多保护措施中,任何程序都可以通过syslog记录事件.syslog可以记录系统事件,可以写到一个文件或设备中,或给用户发送一个信息.它能记录本地事件或通过网络 ...

  10. (一二四)tableView的多组数据展示和手动排序

    最近在写一个轻量级的网络游戏,遇到了技能优先顺序手动排序的需求,我就想到了iOS自带的tableView编辑功能,对其进行了初步探索,最后做出的效果如下图所示: 点击左边可以删除,拖住右边可以手动排序 ...