2013-08-26 206 views
0

我有一個web項目。該項目基於Smarty模板。 我有一個base.tpl具有常見結構,適用於我網站的所有頁面。擴展js包含模板

的base.tpl有下一行,這就是包括由用戶所請求的模板:

{include file="{$request}"} 

例如。當用戶請求http://mydomain/contact時,$ request具有「contact.tpl」值。

和基礎模板的底部有公地JS文件包含:

{block name="javascript"} 
    <script src="{$BASE_URL}/assets/js/libs/jquery-1.10.2.min.js"></script> 
    <script src="{$BASE_URL}/assets/bootstrap/js/bootstrap.min.js"></script> 
    <script src="{$BASE_URL}/assets/js/common.js"></script> 
{/block} 

所以,用戶所請求的任何模板,需要JavaScript文件,我想插進去習俗列入「 JavaScript「塊。

我嘗試,例如在contact.tpl下一個代碼:

{block name="javascript" prepend} 
    <script src="{$BASE_URL}/assets/js/libs/validation/jquery.validate.js"></script> 
    <script src="{$BASE_URL}/assets/js/libs/validation/localization/messages_es.js"></script> 
    <script src="{$BASE_URL}/assets/js/contact.js"></script> 
{/block} 

但是,文件不能在瀏覽器中加載。有任何想法嗎 ?。

回答

0

我得到了擔任我的方法。我在我的控制器(php腳本)中定義了數組中的js路徑。 在tpl中,迭代「路徑數組」幷包含這些文件。

0

這不是它的工作原理,塊不會簡單地通過包含文件來處理。它應該是這樣的:

base.tpl:

<html> 
    <head> 
{block name="javascript"} 
    <script src="{$BASE_URL}/assets/js/libs/jquery-1.10.2.min.js"></script> 
    <script src="{$BASE_URL}/assets/bootstrap/js/bootstrap.min.js"></script> 
    <script src="{$BASE_URL}/assets/js/common.js"></script> 
{/block} 
    </head> 
    <body> 
    {block name="contents"}{/block} 
    </body> 
</html> 

contact.tpl:

{extends file="base.tpl"} 
{block name="javascript" prepend} 
    <script src="{$BASE_URL}/assets/js/libs/validation/jquery.validate.js"></script> 
    <script src="{$BASE_URL}/assets/js/libs/validation/localization/messages_es.js"></script> 
    <script src="{$BASE_URL}/assets/js/contact.js"></script> 
{/block} 
{block name="contents"} 
Your contact form here 
{/block} 

檢查Smarty's Template Inheritance瞭解更多信息

+0

我喜歡在主體結束標記之前在中間包含腳本。 smarty是不可能的?當然是 – ramiromd

+0

。只需將base.tpl中的{block name =「javascript」}移到所需的位置即可 – Borgtex