2012-10-15 44 views
0

我有一個包含另一個負責生成我想編輯的代碼塊的.tpl。通過評論生成內容的{include ...},我發現了它的位置。但是,當我在文件系統上搜索.tpl文件時,它不存在。那麼它真的存儲在哪裏?Smarty模板包含文件系統中不存在的文件,但仍然會生成內容?

即{包括文件=「用戶/ content.tpl」} (不位於文件系統)

是否有一些其它的文件中的一些硬編碼地址用於此?有沒有條件如果:如果文件不存在,使用這個呢?

回答

0

不知道爲什麼,這不是在覈心中,但您可以輕鬆創建自己的插件/修飾符,以便您檢查相對路徑是否存在:{if "pagination.tpl"|template_exists}

在插件目錄中創建:modifier.template_exists.php。

<?php 
/* 
* Smarty plugin 
* ------------------------------------------------------------- 
* File:  modifier.template_exists.php 
* Type:  modifier 
* Name:  template_exists 
* Purpose: Test if a template exists 
* ------------------------------------------------------------- 
*/ 
function smarty_modifier_template_exists($file){ 
    if (empty($file)) return false; 

    $oSmarty = Cms_Smarty::getInstance(); 
    $templates = $oSmarty->getTemplateDir(); 

    foreach($templates as $template){ 
     if(file_exists($template . $file)){ 
      return true; 
     } 
    } 

    return false; 
} 

注意,如果您有多個模板目錄,該插件也可以使用。在我的情況下,我有一組默認主題中的模板,如分頁/等。當我使用標準{include file='pagination.tpl'} smarty會自動檢查自定義並回退到默認主題。

當加載智者簡單的設置:

$oSmarty->setTemplateDir($custom_theme) 
     ->addTemplateDir($default_theme); 
相關問題