Smarty自带了一些内置函数,这些内置函数是Smarty模板引擎的组成部分。他们被编译成相应的内嵌PHP代码,以获得最大性能。

您创建的自定义函数不能与内置函数同名,也不必修改这些内置函数。

其中一些具有assign属性,用来收集函数结果,并将结果分配给一个命名的模板变量,而不是将内容输出,类似于{assign}函数。

一、{if}{elseif}{else} 条件

随着一些特性加入到模版引擎,Smarty的{if}语句与php的if语句一样富有弹性。每一个{if}必须与一个{/if}成对出现,允许使用{else}和{elseif},所有php条件和函数在这里同样适用,诸如||、or、&&、and、is_array()等等。

如果开启安全,只支持符合$php_functions的安全策略属性的php函数。
下面是一串有效的限定符,它们的左右必须用空格分隔开,注意列出的清单中方括号是可选的,在适用情况下使用相应的等号(全等或不全等)。

(1){if}语句(开头结尾不要忘记)

先要在php页面引入“入口文件”,写入“变量注册方法”和“模板显示方法”

  1. <?php
  2. include("../init.inc.php"); //引入的入口文件
  3.  
  4. $smarty->assign("name",10); //变量注册方法assign()
  5.  
  6. $smarty->display("test.html"); //模板显示方法display()

然后是html页面的条件了

  1. <!--开头if-->
  2. <{if $name == 10}> <!--如果$name等于10-->
  3.  
  4. <div style="width:100px; height:100px; background-color:#F00;"></div> <!--这个div的颜色是红色-->
  5.  
  6. <!--结尾if-->
  7. <{/if}>

看下结果

修改一下php文件中的注册值

  1. $smarty->assign("name",11);

那么这个div就不会显示了,因为条件是$name等于10的时候才会显示红色

(2){if}...{else}语句 

php页面还是上面的例子,不同的是html页面加了一个“否则”的语句

  1. <!--开头if-->
  2. <{if $name == 10}> <!--如果$name等于10,这个div就是红色-->
  3. <div style="width:100px; height:100px; background-color:#F00;"></div>
  4. <!--否则-->
  5. <{else}> <!--否则这个div是粉色-->
  6. <div style="width:100px; height:100px; background-color:#F0F;"></div>
  7. <!--结尾if-->
  8. <{/if}>

刚开始在php中name的值是“10”,所以也看到了颜色是红色;现在我们把name的值成随便一个数,那么html中的如果就不会成立,那么就会出现“否则”的颜色

注意:上面的那个表中相对的“备用词”也是可以用的。

二、{foreach},{foreachelse}遍历

(1)同样,要先写php文件,既然是遍历,那么我们可以用数组

  1. <?php
  2. include("../init.inc.php");
  3.  
  4. $arr = array(
  5. array("001","中国"),
  6. array("002","淄博"),
  7. array("003","济南"),
  8. array("004","济宁"),
  9. );
  10.  
  11. $smarty->assign("shuzu",$arr);
  12.  
  13. $smarty->display("test.html");

(2)然后就是写html页面了,{foreach}也是双标签啊,这里使用下拉列表显示出来的

  1. <select>
  2. <{foreach $shuzu as $v}>
  3. <option value="<{$v[0]}>"><{$v[1]}></option>
  4. <{/foreach}>
  5.  
  6. </select>

看下显示结果

(3)嵌套了key的{foreach}

php页面没有任何变换,变换的是html页面

不同的是as后面的代码

  1. <select>
  2.   <{foreach $shuzu as $k=>$v}> <!--不同之处就是$k=>$v-->
  3.     <option value="<{$v[0]}>"><{$k}><{$v[1]}></option>
  4.   <{/foreach}>
  5. </select>

这样就是显示出代号了

(4)@index

包含当前数组的下标,开始时为0。

同样的将html页面中的key进行修改

  1. <select>
  2. <{foreach $shuzu as $v}>
  3. <option value="<{$v[0]}>"><{$v@index }><{$v[1]}></option>
  4. <{/foreach}>
  5. </select>

效果是同样的

同样的还有一些差不多的

@iteration  :iteration包含当前循环的迭代,总是以1开始,这点与index不同。每迭代一次值自动加1。

@first  :当{foreach}循环第一个时first为真。这里我们演示当第一次迭代表格头所在行。

三、编辑器插件

这个就是关于编辑器的文件:

根据提示可以修改任何的参数对编辑器进行修改

  1. <?php
  2.  
  3.   /**
  4. * 编辑器
  5. * @param int $textareaid
  6. * @param int $toolbar 有basic full 和desc三种
  7. * @param int $color 编辑器颜色
  8. * @param string $alowuploadexts 允许上传类型
  9. * @param string $height 编辑器高度
  10. * @param string $disabled_page 是否禁用分页和子标题
  11.   */
  12.   function smarty_block_textarea($args, $content, $smarty, &$repeat) {
  13.   //public static function editor($textareaid = 'content', $toolbar = 'basic', $height = 200, $color = '', $up=true) {
  14.  
  15.   if(!$repeat) {
  16. $textareaid = !empty($args['name']) ? $args['name'] : 'content';
  17. $toolbar = !empty($args['toolbar']) ? $args['toolbar'] : 'basic';
  18. $height = !empty($args['height']) ? $args['height'] : '200';
  19. $color = !empty($args['color']) ? $args['color'] : '';
  20. $up = !empty($args['up']) ? $args['up'] : true;
  21.  
  22. $str ='<textarea name="'.$textareaid.'">'.$content.'</textarea>';
  23. if(!defined('EDITOR_INIT')) {
  24. $str .= '<script type="text/javascript" src="../js/ckeditor/ckeditor.js"></script>';
  25. define('EDITOR_INIT', 1);
  26. }
  27.  
  28. if($toolbar == 'basic') {
  29. $toolbar = "['Bold', 'Italic','Underline','Strike','NumberedList', 'BulletedList', 'TextColor','BGColor', 'Link', 'Unlink', '-', 'Image','Flash','Table','Smiley','SpecialChar'],['RemoveFormat'],
  30. \r\n";
  31. } elseif($toolbar == 'full') {
  32. $toolbar = "['Source','-','Templates'],
  33. ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print'],
  34. ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],['ShowBlocks'],['Image','Capture','Flash'],['Maximize'],
  35. '/',
  36. ['Bold','Italic','Underline','Strike','-'],
  37. ['Subscript','Superscript','-'],
  38. ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
  39. ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
  40. ['Link','Unlink','Anchor'],
  41. ['Table','HorizontalRule','Smiley','SpecialChar'],
  42. '/',
  43. ['Styles','Format','Font','FontSize'],
  44. ['TextColor','BGColor'],
  45. ['attachment'],\r\n";
  46.  
  47. } elseif($toolbar == 'desc') {
  48. $toolbar = "['Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink', '-', 'Image', '-','Source'],\r\n";
  49.  
  50. } else {
  51. $toolbar = '';
  52. }
  53. $str .= "<script type=\"text/javascript\">\r\n";
  54. $str .= "CKEDITOR.replace( '$textareaid',{";
  55.  
  56. $str .= "height:{$height},";
  57.  
  58. if($color) {
  59. $str .= "extraPlugins : 'uicolor',uiColor: '$color',";
  60. }
  61. /*
  62. if($up) {
  63. $str .="filebrowserImageUploadUrl:'".B_URL."/upimage',";
  64. $str .="filebrowserFlashUploadUrl:'".B_URL."/upflash',";
  65. } */
  66. $str .= "toolbar :\r\n";
  67. $str .= "[\r\n";
  68. $str .= $toolbar;
  69. $str .= "]\r\n";
  70. //$str .= "fullPage : true";
  71. $str .= "});\r\n";
  72. $str .= '</script>';
  73. return $str;
  74.   }
  75.   }

可以显示出编辑器来看下,同样的在html文件中写

  1. <{textarea}>
  2.  
  3. <{/textarea}>

这样就可以加载出编辑框了

(1)在上面的插件中有这么一句注释

  1. * @param int $toolbar basic full desc三种

这样是可以直接在html中进行修改编辑框显示的功能,将toolbar的值改成“full”

  1. <{textarea name='uid' toolbar='full'}>
  2.  
  3. <{/textarea}>

看下结果:比没有改值的时候的功能多了点

通过一些参数还可以修改其他的样式:比如颜色,那么就在后面加上

  1. color='#F0F'

就可以变成想要的颜色

其实模板中的插件的用处挺方便的~~~大体的模板就是这样了  

smarty模板基础2的更多相关文章

  1. smarty模板基础1

    smarty模板的作用可以让前端和后端分离(也就是前端的显示页面和后端的php代码). smarty模板的核心是一个类,下载好的模板中有这么几个重要的文件夹 (1)libs核心文件夹(2)int.in ...

  2. smarty模板基础3 *缓存数据*

    缓存数据,这个并不是暂存的缓存,而是写入了内存的缓存 通过一个例子来书写:缓存数据 一.书写php和html页面的基本功能 既然是用smarty模板,那么前端和后端要分开写了 (1)php页面 < ...

  3. smarty模板基础----缓存数据

    缓存数据,这个并不是暂存的缓存,而是写入了内存的缓存 通过一个例子来书写:缓存数据 一.书写php和html页面的基本功能 既然是用smarty模板,那么前端和后端要分开写了 (1)php页面 1 2 ...

  4. smarty模板基础

    将前台后台隔离,前台控制显示,后台控制逻辑/内容,与cms类似 原理: 用户访问text.php页面,后台调用类smarty.class.php显示静态模板;

  5. smarty模板基础知识

    1.定义 Smarty是一个使用php写出来的模板引擎,它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与html代码混杂在一起PHP代码逻辑分离. 简单的讲,目的就是要使PH ...

  6. smarty模板的基础搭建

    1.下载smarty模板,官方即有 2.解压即可.你会得这样的目录 除了libs文件夹其余都可以删掉(不知道有啥用). 3.在当前目录下分别创建templates.templates_c.cache. ...

  7. smarty模板开发基础总结

    前提:1. 部署smarty模板目录:2. 编写Smarty类的子类,定制好template_dir.compile_dir.config_dir.cache_dir.left_delimiter.r ...

  8. smarty模板引擎基础(二)

    smarty模板引擎所需文件夹共可分为存放页面缓存的(cache).存放配置文件的(configs).存放模板扩充插件的(plugins).存放模板文件的(templates).存放编译后的模板文件的 ...

  9. smarty模板引擎(一)基础知识

    一.基本概念 1.什么是mvc?     mvc是一种开发模式,核心思想是:数据的输入.数据的处理.数据显示的强制分离. 2.什么是smarty?     smarty是一个php的模板引擎.更明白的 ...

随机推荐

  1. sql相关语言

    SQL 掌握一门编程语言: C C++ Java C# ... 数据库 数据结构/算法 链表 队列 栈 数组 面向对象 网络 (界面.业务逻辑) 关系型数据库: 以二维表的形式组织数据 表.索引.视图 ...

  2. html 5 本地数据库(Web Sql Database)核心方法openDatabase、transaction、executeSql 详解

    Web SQL数据库API实际上不是HTML5规范的组成部分,而是单独的规范.它通过一套API来操纵客户端的数据库.Safari.Chrome. Firefox.Opera等主流浏览器都已经支持Web ...

  3. PHP 绘图技术

    1.图片格式:目前网站开发常见的图片格式有gif,jpg/jpeg,png ..... 区别: gif 图片压缩率高,但是只能显示256色,可能造成颜色的丢失,可以显示动画 jpg/jpeg 图片压缩 ...

  4. 画廊视图(Gallery)的功能和用法

    Gallery与Spinner组件有共同的父类:AbsSpinner,表明Gallery和Spinner是同一个列表框.它们之间的区别是Spinner显示的垂直的列表选择框,而Gallery显示的是一 ...

  5. HTML <div> 和<span>

    HTML <div> 和<span> HTML 可以通过 <div> 和 <span>将元素组合起来. HTML 区块元素 大多数 HTML 元素被定义 ...

  6. sublime 3 build结果关闭打开

    Tools > Build Results > Show Build Results

  7. Debian8 安装wordpress博客

    首先要安装 php5-gd 已保证wordpress可以正常安装 下载Wordpress wget http://wordpress.org/latest.tar.gz 解压 tar -xzvf la ...

  8. gunicorn 简介

      gunicorn是一个python Wsgi http server,只支持在Unix系统上运行,来源于Ruby的unicorn项目.Gunicorn使用prefork master-worker ...

  9. js json和字符串的互转

    json与字符串的互转:    下面格式两种只是针对引号有稍微的区别 var result = JSON.parse("{\"a\":\"擦擦\",\ ...

  10. css 绝对居中

    我是一个前端的菜鸟,对于绝对居中前几天也困惑了我不少时间,今天我就把我知道的两个方法写出来,希望能记住也希望帮助到和我一样刚接触前端不久的同学. 第一种是 你需要居中的元素有固定的宽高: 首先给他的父 ...