Smarty文件資源

2018-12-09 11:47 更新

文件資源

Smarty通常運行在內(nèi)置的、基于文件系統(tǒng)的模板資源上。 默認(rèn)資源是file:。 如果修改了$default_resource_type 那么資源關(guān)鍵字file:就必須要指明。

如果找不到需要的模板文件,那么 $default_template_handler_func將會被調(diào)用。

說明

在Smarty 3.1開始,除非開啟了 $use_include_path配置,否則文件資源不會再搜索 include_path 的路徑了。

$template_dir目錄

Smarty從$template_dir設(shè)置的目錄中, 獲取模板文件資源。 多個模板目錄將以在數(shù)組中的順序進(jìn)行搜索,在尋找到第一個匹配的模板時將返回。

Example 16.1. 使用$template_dir

<?php
$smarty->display('index.tpl');
$smarty->display('file:index.tpl'); // 同上
?>

模板中使用

{include file='index.tpl'}
{include file='file:index.tpl'} {* 同上 *}

特定的$template_dir

Smarty 3.1 提供“歸類符號”來定義$template_dir中的特定元素。 此特性可允許網(wǎng)站中使用和更好地管理多個模板集合。

“歸類符號”可以用在任何定義了file:資源類型的地方。

Example 16.2. 特定的$template_dir

<?php

// 設(shè)置模板目錄
$smarty->setTemplateDir(array(
    './templates',            // element: 0, index: 0
    './templates_2',          // element: 1, index: 1
    '10' => 'templates_10',   // element: 2, index: '10'
    'foo' => 'templates_foo', // element: 3, index: 'foo'
));

/*
  假定模板目錄結(jié)構(gòu)如下:
  ./templates/foo.tpl
  ./templates_2/foo.tpl
  ./templates_2/bar.tpl
  ./templates_10/foo.tpl
  ./templates_10/bar.tpl
  ./templates_foo/foo.tpl
*/

// 正常讀取
$smarty->display('file:foo.tpl'); 
// 將載入 ./templates/foo.tpl

// 默認(rèn)使用數(shù)字下標(biāo)
$smarty->display('file:[1]foo.tpl'); 
// 將載入 ./templates_2/foo.tpl

// 使用字符串的下標(biāo)('10'看起來像數(shù)字下標(biāo),但卻是有單引號的字符串)
$smarty->display('file:[10]foo.tpl'); 
// 將載入 ./templates_10/foo.tpl

// 使用字符串的下標(biāo)
$smarty->display('file:[foo]foo.tpl'); 
// 將載入 ./templates_foo/foo.tpl

// 使用 "未知" 數(shù)字下標(biāo) (用元素的數(shù)字)
$smarty->display('file:[2]foo.tpl'); 
// 將載入 ./templates_10/foo.tpl

?>

模板中調(diào)用

{include file="file:foo.tpl"}
{* 將載入 ./templates/foo.tpl *}

{include file="file:[1]foo.tpl"}
{* 將載入 ./templates_2/foo.tpl *}

{include file="file:[foo]foo.tpl"}
{* 將載入 ./templates_foo/foo.tpl *}

任意目錄的模板

$template_dir之外的模板, file:將需要使用絕對路徑來獲取模板。

Note

當(dāng)Security開啟, 在$template_dir之外的模板是不允許讀取的,除非你將這些目錄都設(shè)置在$secure_dir中。

Example 16.3. 任意目錄的模板

<?php
$smarty->display('file:/export/templates/index.tpl');
$smarty->display('file:/path/to/my/templates/menu.tpl');
?>

模板中:

{include file='file:/usr/local/share/templates/navigation.tpl'}

Windows文件路徑

如果使用Windows的機器,那么文件路徑將以驅(qū)動盤符(C:)開頭。 確保file:的路徑避免命名空間沖突,達(dá)到需要的結(jié)果。

Example 16.4. 使用windows的文件路徑

<?php
$smarty->display('file:C:/export/templates/index.tpl');
$smarty->display('file:F:/path/to/my/templates/menu.tpl');
?>

在模板中:

{include file='file:D:/usr/local/share/templates/navigation.tpl'}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號