Smarty模板函數

1.{$var=...}php

這是{assign}函數的簡寫版,你能夠直接賦值給模版,也能夠爲數組元素賦值。html

<{$a = 10}><!--賦值語句-->
<{$a}><!--輸出語句,輸出結果爲10-->

2.{appeng}前端

{append}用於在模板執行期間創建或追加模板變量數組。數組

3.{assign}session

{assign}用來在模板運行時爲模板變量賦值。app

4.{block}函數

{block}用來定義一個命名的模板繼承源區域。意思就是一個模板能夠繼承另一個模板。例如套用phpcms模板時,把頭部文件header和尾部文件footer單寫出來,每一個頁面引入這兩個頁面就能夠了。ui

5.{config_load}spa

{config_load}用來從配置文件中加載config變量(#variables#)到模版。 插件

6.{for}、{foreach}、{section}

{for}、{foreach}、{section}都是用來循環輸出的。其中{section}已經被淘汰了,基本上不用了。

下面用foreach遍歷出數組:

test.php

<?php
session_start();
//引入配置文件
include("../init.inc.php");//init.inc.php裏面已經造smarty對象了。
$attr = array("hello","world","ni","hao");//寫一個數組
$smarty->assign("shuzu",$attr);//把數組注入smarty模板裏面

$smarty->display("test.html");//調用模板文件來顯示

test.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文檔</title>
</head>
<body>
<{foreach $shuzu as $v}><!--foreach循環遍歷數組-->
<{$v}><br /><!--輸出數組裏面的內容-->
<{/foreach}>
</body>
</html>

輸出結果:

循環中還存在下列目錄

(1)<{$v@index }>包含當前數組的下標,開始時爲0。

<body>
<{foreach $shuzu as $v}><!--foreach循環遍歷數組-->
<{$v@index }><{$v}><br /><!--輸出數組裏面的內容-->
<{/foreach}>
</body>

輸出結果:

(2){iteration}

iteration包含當前循環的迭代,老是以1開始,這點與index不一樣,index是從0開始的。每迭代一次值自動加1。

<body>
<{foreach $shuzu as $v}><!--foreach循環遍歷數組-->
<{$v@iteration}><{$v}><br /><!--輸出數組裏面的內容-->
<{/foreach}>
</body>

輸出結果:

(3){@first}

當{foreach}循環第一個時first爲真。這裏咱們演示當第一次迭表明格頭所在行。

<body>
<{foreach $shuzu as $v}><!--foreach循環遍歷數組-->
<{$v@first}><{$v}><br /><!--輸出數組裏面的內容-->
<{/foreach}>
</body>

輸出結果:若是輸出的是第一條數據,返回波爾型數據的真,即1.

 

@first能夠按照下面的方法使用

<body>
<{foreach $shuzu as $v}><!--foreach循環遍歷數組-->
<{if $v@first}><!--判斷是否是顯示的第一條數據-->
<span style="color:red"><{$v}></span><br /><!--若是是第一條數據,就顯示爲紅色-->
<{else}><!--若是不是第一條數據-->
<{$v@first}><{$v}><br /><!--直接輸出數組裏面的內容-->
<{/if}>
<{/foreach}>
</body>

輸出結果只有第一條數據顯示爲紅色。

(4){@last}

當{foreach}迭代到最後時last爲真。這裏咱們演示當迭代到最後時顯示一條橫線。用法和{@first}同樣。

 (5){@show}

show屬性用在檢測{foreach}循環是否無數據顯示,show是個布爾值(true or false)。意思就是若是返回值是true,說明這個循環是有值的,若是返回值是flase,說明這個循環是沒有值的。

 (6){@total}

total包含{foreach}循環的總數(整數),能夠用在{forach}裏面或後面。

<body>
<{foreach $shuzu as $v}><!--foreach循環遍歷數組-->
<{if $v@first}><!--判斷是否是顯示的第一條數據-->
<span style="color:red"><{$v}></span><br /><!--若是是第一條數據,就顯示爲紅色-->
<{else}><!--若是不是第一條數據-->
<{$v@first}><{$v}><br /><!--直接輸出數組裏面的內容-->
<{/if}>

<{$v@total}>

<{/foreach}>
</body>

顯示結果:說明總共有4次循環。

 

 7.{include}

{include}標籤用於在當前模板中包含其它模板。當前模板中的任何有效變量在被包含模板中一樣可用。

{include file='page_header.tpl'}

 

 

自定義函數

自定義函數均可以成爲插件

1.{html_select_date}

自定義函數{html_select_date}用於建立日期下拉列表,它能夠顯示任意年月日。下述列表中沒有說明的參數會在相應的年、月、日<select>標籤中以名/值的鍵值對形式顯示出來。

<body>
<{html_select_date prefix='StartDate' start_year='-5'
end_year='+1' display_days=false}>
</body>

顯示結果:

2.{textformat}

{textformat}用於格式化文本。該函數主要清理空格和特殊字符,對段落按單詞邊界換行和行縮進等段落格式化處理。
用戶能夠明確設置參數,或使用預處理風格。目前只有惟一可用風格"email"。

 

下面是從文件目錄裏面找變量調節器

變量調節器文件統一放在了D:\wamp\www\project\libs\plugins裏面

1.modifiercompiler.upper.php文件是用來轉大寫的,下面是其代碼。

function smarty_modifiercompiler_upper($params)//變量調節器的名字,()裏面傳一個參數。
{
    if (Smarty::$_MBSTRING) {//處理數據
        return 'mb_strtoupper(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
    }
    // no MBString fallback
    return 'strtoupper(' . $params[0] . ')';//返回處理完的數據
}

2.能夠根據默認的插件本身來寫插件,本身的插件目錄爲D:\wamp\www\project\plugins

下面建一個改變字符串顏色的調節器,文件名爲modifier.color.php,注意文件名的命名和調節器名字的寫法。

<?php
function smarty_modifier_color($str)//modifier是變量調節器的名字,color是變量調節器名稱。()裏面必須有一個參數,這個參數是拿來改變顏色的變量
{
    $str = "<span style='color:red'>{$str}</span>";//給變量加上樣式
    return $str;//將變量返回
}

 

在test.php頁面裏面寫一個變量,而且將處理完的變量注入到smarty模板裏面。

<?php
session_start();
//引入配置文件
include("../init.inc.php");//init.inc.php裏面已經造smarty對象了。
$a = "hello";//要傳過去的變量
$smarty->assign("a",$a);//把變量注入smarty模板裏面

$smarty->display("test.html");//調用模板文件來顯示

 

前端頁面test.html顯示

<body>
<{$a|color}><!--注意引入的寫法-->
</body>

 

結果顯示爲

 

3.下面看D:\wamp\www\project\plugins裏面的function.shuchu.php文件

下面是文件的內容

<?php
function smarty_function_shuchu($args)//$args是傳過來的變量
{
    for($i=0;$i<10;$i++)//循環輸出了10次aaaaaaaa
    {
        echo "aaaaaaaa<br>";
    }
}

 

若是沒有參數要傳,就不須要寫參數。

 

<body>
<{shuchu}><!--直接輸出就能夠,沒有參數就不須要寫參數-->
</body>
相關文章
相關標籤/搜索