include_php函數:
include_php 是解決模板元件化的好方法,它使得php 程式碼從模板檔案中被分離出來.
舉個例子:假設有一個從資料庫動態取出資料用來顯示網站導覽的模板,你可以將得資料內容的php 邏輯部分分離出來保存在一個單獨的資料夾下,
並在模板開始的位置包含該php 腳本. 那麼就可以在任何地方包含此模板而不用擔心之前資料庫訊息是否已被程式取出.
即使是在模板中多次地調用php 文件,預設情況下它們只被包含一次. 你可以設定once 屬性從而指明每次調用都重新包含該檔案.
如果將once 屬性設為false,每次呼叫該檔案都會被重新包含.
如果設定了assign 屬性,該屬性對應的變數名稱用於保存待包含php 的輸出,這樣待包含php 檔案的輸出就不會直接顯示了。
在待包含php 檔案中可以透過$this 存取smarty 物件.
##load_nav.php:
<?php // load in variables from a mysql db and assign them to the template // 从mysql数据库中取得数据,将数据赋给模板变量require_once("MySQL.class.php"); $sql = new MySQL; $sql->query("select * from site_nav_sections order by name",SQL_ALL); $this->assign('sections',$sql->record);
index.tpl:
{* absolute path, or relative to $trusted_dir *} {* 绝对路径或 $trusted_dir 的相对路径 *} {include_php file="/path/to/load_nav.php"} {foreach item="curr_section" from=$sections} <a href="{$curr_section.url}">{$curr_section.name}</a><br> {/foreach}
#下一節