扩展js包含的模板

时间:2013-08-26 15:56:28

标签: javascript include smarty

我有一个网络项目。该项目基于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}

因此,用户请求的任何模板都需要包含更多的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}

但是,文件未在浏览器中加载。有什么想法?。

2 个答案:

答案 0 :(得分: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以获取更多信息

答案 1 :(得分:0)

我有一种方法可以帮助我。我在我的控制器(php脚本)中定义了数组中js的路径。 在tpl中,迭代“路径数组”并包含文件。

相关问题