0

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

但是,文件不会在浏览器中加载。有任何想法吗 ?。

4

2 回答 2

0

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

于 2013-09-03T13:05:59.117 回答
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>

联系方式.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 的模板继承以获取更多信息

于 2013-08-27T08:34:58.723 回答