中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中Smarty模板如何實現模板繼承

發布時間:2021-10-19 10:30:40 來源:億速云 閱讀:87 作者:小新 欄目:web開發

這篇文章主要介紹PHP中Smarty模板如何實現模板繼承,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

{extends}
模板繼承中,你可以在子模板內使用{extends}標簽來擴展父模板。
1.{extends}必須放在模板的第一行。
2.如果子模板要用{extends}來擴展父模板,那么它只能有 {block}的區域。

3.任何其他的模板內容都會被忽略。

擴展使用在$template_dir 之外的文件,請使用模板資源的語法。

Note
當你擴展一個父模板名稱的變量如{extends file=$parent_file},

請確保$parent_file變量放到同一個 $cache_id中. 否則Smarty無法辨別不同的$parent_file變量。

parent.php頁面

<?php 
//創建smarty對象
require_once './libs/Smarty.class.php';
//定義根目錄
define('ROOT', str_replace("\\", "/",dirname(__FILE__))."/");
//實例化Smarty類
$smarty=new Smarty();
//設定定界符
$smarty->left_delimiter="<{";
$smarty->right_delimiter="}>";
//設置為false 定界符號左右可以有空格
$smarty->auto_literal = false;

//添加一個插件的目錄
//$smarty->setPluginsDir(ROOT."/libs/myplugins/");

//注意添加一個插件,要把系統默認設置的路徑加入 否則不能使用默認系統的插件
$smarty->setPluginsDir(array(
    ROOT."/libs/plugins/",//系統默認設置的路徑
    ROOT."/libs/myplugins/",//自定義的
));

//變量輸出
$smarty->display('parent.tpl');

?>

child.php頁面

<?php 
//創建smarty對象
require_once './libs/Smarty.class.php';
//定義根目錄
define('ROOT', str_replace("\\", "/",dirname(__FILE__))."/");
//實例化Smarty類
$smarty=new Smarty();
//設定定界符
$smarty->left_delimiter="<{";
$smarty->right_delimiter="}>";
//設置為false 定界符號左右可以有空格
$smarty->auto_literal = false;

//變量輸出
$smarty->display('child.tpl');

?>

parent.tpl頁面

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
    <title><{block name="one"}>This is a title<{/block}></title>
</head>
<body>
<{block name="two"}>This is a content....<{/block}>
<{block name="three"}>我是<{/block}>
<{block name="four"}>中國<{/block}>
<{block name="five"}>電影<{/block}>
<{block name="six"}>我要去<{$smarty.block.child}>上大學<{/block}>
</body>
</html>

child.tpl頁面

<{extends 'parent.tpl'}>
<{block name="one"}>我是第一個block<{/block}>
<{block name="two"}>我是第二個block<{/block}>
<{block name="three" append}>津沙港灣<{/block}>
<{block name="four" prepend}>我愛你,<{/block}>
<{block name="five" }>你喜歡看<{$smarty.block.parent}>嗎?<{/block}>
<{block name="six" }>上海<{/block}>

瀏覽器輸出(child.php頁面輸出)

我是第二個block
我是津沙港灣
我愛你,中國
你喜歡看電影嗎?
我要去上海上大學

模板繼承
繼承是從面向對象編程而來的概念。

模板繼承可以讓你定義一個或多個父模板,提供給子模板來進行擴展。

擴展繼承意味著子模板可以覆蓋部分或全部父模板的塊區域。

繼承結構可以是多層次的,所以你可以繼承于一個文件,而這個文件又是繼承于其他文件,等等。

在覆蓋父模板的{block}塊以外的地方, 子模板不能定義任何內容。

任何在{block}以外的 內容都會被自動忽略。

在子模板和父模板中的{block}內容,可以通過 append 和 prepend來進行合并。

{block}的選項,和 {$smarty.block.parent} 或 {$smarty.block.child}會持有這些內容。

模板繼承在編譯時將編譯成單獨的一個編譯文件。

對比效果相似的{include}包含模板功能,模板繼承的性能更高。

子模板繼承使用{extends}標簽, 該標簽一定放要在子模板的第一行。

另一種做法是將整個模板繼承樹,在PHP程序調用fetch() 或 display()的時候,

用extends:的模板資源類型,該做法有更大的靈活性。

Note
當開啟了$compile_check,繼承樹里面的全部文件都會在每次調用的時候檢查是否有修改。

因此,在生產環境中你最好關閉$compile_check。

Note
如果你的子模板里面有用到{include} 來包含模板,而被包含的模板里面存在供{include}模板 調用的{block}區域, 那么在最頂層的父模板里面,你需要放置一個空的 {block} 來作為繼承。

以上是“PHP中Smarty模板如何實現模板繼承”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

呼玛县| 阜阳市| 四会市| 九寨沟县| 南华县| 广安市| 新巴尔虎右旗| 广水市| 义乌市| 敦煌市| 江北区| 大同县| 枝江市| 静乐县| 汝南县| 永靖县| 临夏市| 嘉义市| 青海省| 鱼台县| 新丰县| 昌乐县| 获嘉县| 云霄县| 尉氏县| 松原市| 安庆市| 花莲市| 神农架林区| 永善县| 七台河市| 鄂托克旗| 鄂伦春自治旗| 黄大仙区| 紫金县| 伊金霍洛旗| 拉孜县| 桦川县| 桃江县| 澄江县| 大厂|