Smarty文件資源

2018-12-09 11:47 更新

文件資源

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

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

說(shuō)明

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

$template_dir目錄

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

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 提供“歸類(lèi)符號(hào)”來(lái)定義$template_dir中的特定元素。 此特性可允許網(wǎng)站中使用和更好地管理多個(gè)模板集合。

“歸類(lèi)符號(hào)”可以用在任何定義了file:資源類(lèi)型的地方。

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'看起來(lái)像數(shù)字下標(biāo),但卻是有單引號(hà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:將需要使用絕對(duì)路徑來(lái)獲取模板。

Note

當(dāng)Security開(kāi)啟, 在$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的機(jī)器,那么文件路徑將以驅(qū)動(dòng)盤(pán)符(C:)開(kāi)頭。 確保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)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)