簡體   English   中英

擴展模板以包含js

[英]Extend template for js inclusion

我有一個網絡項目。 該項目基於Smarty模板。 對於網站的所有頁面,我都有一個具有通用結構的base.tpl。

base.tpl下一行,即包含用戶請求的模板:

{include file="{$request}"}

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

基本模板的底部包含commons 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}

因此,用戶請求的任何模板都需要包含mores 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}

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

這不是它的工作方式,不能僅通過包含文件來處理塊。 應該是這樣的:

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的模板繼承以獲取更多信息

我有一種為我服務的方法。 我在控制器(php腳本)中以數組形式定義了js的路徑。 在tpl中,迭代“路徑數組”並包括文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM