首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Smarty 範本引擎實戰(六):內建函數詳解與範例

     編輯:PHP 相關知識

內建函數簡介

Smarty 內建函數是範本語言核心組成部分,不可被自訂函數覆蓋或修改。本文整理 8 個常用內建函數並附完整範例。

共用初始化檔

<?php
// init.inc.php
define('ROOT_PATH', dirname(__FILE__));
require ROOT_PATH . '/libs/Smarty.class.php';
$_tpl = new Smarty();
$_tpl->template_dir = ROOT_PATH . '/tpl/';
$_tpl->compile_dir  = ROOT_PATH . './com/';
$_tpl->left_delimiter  = '<{';
$_tpl->right_delimiter = '}>';
?>

// index.php
<?php
require 'init.inc.php';
global $_tpl;
$_tpl->display('index.tpl');
?>

1. capture — 捕獲輸出

屬性類型必要預設說明
namestring否default捕獲區域名稱
assignstring否n/a指定變數名儲存捕獲內容
<{capture name="foo"}>
  這裡的內容不會直接顯示,會存入 $foo
<{/capture}>
<{$smarty.capture.foo}> {* 輸出捕獲內容 *}

2. config_load — 載入配置檔

屬性類型必要預設說明
filestring是n/a配置檔名稱
sectionstring否n/a區段名稱
scopestring否local作用域:local/parent/global
globalboolean否No等同 scope=parent

詳細用法請參考《Smarty 實戰(二)》。

3. include — 引入子範本

屬性類型必要預設說明
filestring是n/a子範本路徑
assignstring否n/a將輸出存入指定變數而非直接顯示
[var ...]mixed否n/a傳遞給子範本的區域變數
{include file="header.tpl"}
{* body *}
{include file="footer.tpl"}

4. if / elseif / else — 條件判斷

支援豐富的條件修飾詞:

修飾詞含義
eq / ==等於
ne / neq / !=不等於
gt / >大於
lt / <小於
lte / le / <=小於等於
gte / ge / >=大於等於
is even / is odd偶數 / 奇數
not邏輯非
mod取模
div by / even by / odd by可整除 / 商為偶數 / 商為奇數
&& / || / ()邏輯與/或/分組

使用時需與许數或常數以空格分隔。

5. ldelim / rdelim — 輸出分隔符

用於輸出 { 與 }:

<{ldelim}>funcname<{rdelim}> 是 Smarty 函數。
{* 輸出:{funcname} 是 Smarty 函數。 *}

6. literal — 字面區塊

區塊內容不解析,直接輸出,適合內嵌 JavaScript:

<{literal}>
<script>
  window.alert(new Date());
</script>
<{/literal}>

7. php — 內嵌 PHP 程式碼

<{php}>
  echo date("Y-m-d H:i:s");
<{/php}>
{* 輸出:2011-10-24 04:35:03 *}

8. strip — 移除多餘空白

移除區塊內首尾空白與換行,保持 HTML 輸出整潔:

<{strip}>
  <div>
    <span>Hello</span>
  </div>
<{/strip}>
{* 輸出:
Hello
*}

後續重點

foreach、section 等迴圈函數將於後續文章詳細說明。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved