国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

smarty高級功能

2024-05-04 23:06:40
字體:
來源:轉載
供稿:網友

繼續來談smarty,這文主要是寫一些比較高級點的功能。首先是smarty的數據對象,但是其實不是很推薦這個功能,首先在PHP里面定義一個對象,然后assign到模板輸出,然后再模板中用->訪問,還有一個是在PHP里面通過$smarty->registerObject('foobar',$myobj);來注冊一個方法,然后再在模板中使用{foobar->meth1 p1='foo' p2=$bar},這個方法有一個好處,就是可以通過第三個參數(數組)來控制不想讓其訪問的對象方法,只有在第三個參數里面包含的方法才可以訪問。

第二個就是模板繼承功能,首先可以在父模板里面用{block name="xx"}{/block}定義一個內容,暫時不考慮其內容,然后再子模板中定義其內容{block name="xx"}你說需要的內容{/block},其原理和類的繼承很相似,可以一直繼承下去,但是子模板必須只能寫這些內容

{extends file="父模板.html"}

{block name="xx"}你說需要的內容{/block}

整個HTML頁面就必須是只有這些內容(block標簽可以多寫),其他內容寫了也沒是沒有任何意義的,第三個就是比較有用的調節器插件開發,其實也很簡單,只要研究一下smarty的源代碼就知道,調節器都是放在Smarty/libs/plugins文件夾下面名字為modifier.調節器名字.php的文件里面,而里面的內容我modifier.truncate.php來做例子

  1. function smarty_modifier_truncate($string$length = 80, $etc = '...'$break_words = false, $middle = false)  
  2. {  
  3.     if ($length == 0)  
  4.         return '';  
  5.  
  6.     if (Smarty::$_MBSTRING) {  
  7.         if (mb_strlen($string, Smarty::$_CHARSET) > $length) {  
  8.             $length -= min($length, mb_strlen($etc, Smarty::$_CHARSET));  
  9.             if (!$break_words && !$middle) {  
  10.                 $string = preg_replace('//s+?(/S+)?$/' . Smarty::$_UTF8_MODIFIER'', mb_substr($string, 0, $length + 1, Smarty::$_CHARSET));  
  11.             }  
  12.             if (!$middle) {  
  13.                 return mb_substr($string, 0, $length, Smarty::$_CHARSET) . $etc;  
  14.             }  
  15.  
  16.             return mb_substr($string, 0, $length / 2, Smarty::$_CHARSET) . $etc . mb_substr($string, - $length / 2, $length, Smarty::$_CHARSET);  
  17.         }  
  18.  
  19.         return $string;  
  20.     }  
  21.  
  22.     // no MBString fallback  
  23.     if (isset($string[$length])) {  
  24.         $length -= min($lengthstrlen($etc));  
  25.         if (!$break_words && !$middle) {  
  26.             $string = preg_replace('//s+?(/S+)?$/'''substr($string, 0, $length + 1));  
  27.         }  
  28.         if (!$middle) {  
  29.             return substr($string, 0, $length) . $etc;  
  30.         }  
  31.  
  32.         return substr($string, 0, $length / 2) . $etc . substr($string, - $length / 2);  
  33.     }  
  34.  
  35.     return $string;  

看起來很復雜是不是,其實我們需要關注的就只有紅色字體內容,首先是方法名必須是這種格式smarty_modifier_調節器名稱,然后參數,第一個就是傳過去的變量,在模板里面你需要調節的內容,后面的參數那就可以自己來定義了,然后通過后面這些自定義參數,在函數內部對其進行一連串的操作,然后最后把這個變量返回回來輸出,就是這么簡單,以一個改變字體顏色的modifier_modcol.php為例子,首先在Smarty/libs/plugins里面新建這個文件modifier_modcol.php,內容為

  1. function smarty_modifier_modcol($string,$color){  
  2.     return '' .$string'';  

沒錯,就是這么簡單,然后在模板里面調用{$test|modcol:"blue"}就可以把$test改為你需要的顏色文字輸出了。

此文就介紹到這里了

上一篇:smarty入門之優缺點

下一篇:smarty緩存

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 荃湾区| 鹤山市| 洞口县| 海伦市| 沂水县| 黄山市| 犍为县| 宝应县| 衡山县| 荔波县| 南涧| 邯郸市| 余姚市| 镇远县| 大方县| 万山特区| 廉江市| 星子县| 双辽市| 屯留县| 和硕县| 沂南县| 三台县| 连山| 巴彦县| 成武县| 中山市| 冕宁县| 新津县| 九寨沟县| 桑植县| 板桥市| 彰化县| 信丰县| 牙克石市| 石柱| 石台县| 清镇市| 罗平县| 禹城市| 宁阳县|