smarty 自定義函數

自定義函數:<{方法名稱}>

在lib/plugins中新建文件,命名方式是固定的:function.方法名稱.php 或者

block.方法名稱.php

 

1.<{literal}><{/literal}>

{literal}標籤區域內的數據將按字面意思處理,表明性地是用在javascript/css語塊周圍,否則這些語言使用的花括號‘{’、‘}’會干擾模版定界符語法。{literal}{/literal}標籤裏面的全部符號不會被解釋,所有按原樣輸出。javascript

例如:在main.html代碼中加入標籤後:php

 

運行結果:css

 

2.  {html_select_date}

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

  <div><{html_select_date}></div>前端

  顯示界面:java

  加入參數後:數組

 <div><{html_select_date start_year='1990' end_year='2020' month_format='%m'}></div>編輯器

  顯示界面:ide

 

3.網上找的:顏色控件  function.color.php

(須要引入文件 jscolor.js)

 1 <?php
 2     
 3     /**
 4      * 顏色控件
 5      * 
 6      * @param $name 控件name
 7      * @param $value 選中值
 8      * <{color name='titlecolor' value='FF00FF'}>
 9      */
10     function smarty_function_color($args, $smarty) {
11 
12         $name = $args['name'];
13         $value = !empty($args['value']) ? $args['value'] : '000000';
14     
15         if(!defined('COLOR_INIT')) {
16             define('COLOR_INIT', 1);
17             $str= '<script src="../js/jscolor/jscolor.js"></script>';
18                
19         }
20         $str .= '<input class="color" style="width:48px;height:16px;overfrom:hidden" name="'.$name.'" value="'.$value.'" />';
21     
22         return $str;
23     }
View Code

在前端調用方法:   <div><{color name='aa'}></div>

運行後:可任意選擇函數

4.{block} 塊:  編輯器(網上找的)

{block}{/block}成對出現

例如:

引入:block.textarea.php(還有ckeditor文件夾)

 

在前端調用方法: 

   //不加參數:
<{textarea}>
<{/textarea}>

 運行後:

 

//加參數:
<{textarea name='text' toolbar='full' color='purple' height='200'}>
<{/textarea}>

 運行後:

 

5. 練習自定義函數function:寫方法將main.html 的類型改爲顯示具體內容

新建文件 function.typename.php

 1 <?php
 2 
 3 //參數:1.$args數組,必須有 
 4 function smarty_function_typename($args)
 5 {
 6     //取傳過來的code值
 7     $code=$args["code"];
 8     if($code==0)
 9     {
10         return "判斷題";
11         }
12     else if($code==1)
13     {
14         return "單選題";
15         }
16     else
17     {
18         return "多選題";
19         }
20     }

在前端調用方法: main.html   <td><{typename code=$v[5]}></td>

運行後:

        

 

6. 練習自定義函數block: 定義塊函數來改變刪除修改的樣式

新建文件 function.typename.php(須要四個參數)

 1 <?php
 2 //$args 是用戶能夠傳入的參數  $a指函數是開始和結束
 3 function smarty_block_fontstyle($args,$content,$smarty,$a)
 4 {
 5     $color=$args["color"];
 6     $size=$args["size"];
 7     
 8     //block函數會執行2次,在開始和結束標記時各執行一次
 9     //爲防止重複執行,須要進行判斷
10     if(!$a)//若是是結束標記執行的
11     {
12         return "<span style='background-color:{$color};font-size:{$size}px'>{$content}</span>";
13         
14     }
15 }

 

在前端調用方法: main.html   

1   <!--定義塊函數來改變刪除修改的樣式 -->
2      <td>
3      <{fontstyle color='yellow' size='30'}>
4     <a href="delete.php?code=<{$v[0]}>">刪除</a>
5     <a href="update.php?code=<{$v[0]}>">修改</a>
6     <{/fontstyle}>
7     </td>

 

運行後:(中間操做時不當心刪了一行數據)

      

 

 

7. 配置文件 :Config Files

  在configs文件夾中新建文件,文件名以 .conf 結束  例如:test.conf

  配置文件是經過內置函數{config_load}或API的configLoad()函數載入到模板的。

例子:在前端 main.html寫一個div,利用配置文件改變它的樣式:  

            <div>如下是題目列表</div>

在configs文件夾中新建文件 style.conf

 

在前端 main.html:

1.讀取配置文件  :<{config_load file="style.conf"}>

2.引入變量用<{#變量名#}> :<div style="font-size:<{#size#}>px; color:<{#color#}>">如下是題目列表</div>

 

 

 若是:在style.conf定義了相同的樣式,用塊來區分,定義方式爲:[塊名]

在前端 main.html:給config_load 第二個變量  section

<{config_load file="style.conf" section="one"}>
<div style="font-size:<{#size#}>px; color:<{#color#}>">如下是題目列表</div>

 

<{config_load file="style.conf" section="two"}>
<div style="font-size:<{#size#}>px; color:<{#color#}>">如下是題目列表</div>

相關文章
相關標籤/搜索