我有一个网络项目。该项目基于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}
但是,文件未在浏览器中加载。有什么想法?。
答案 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中,迭代“路径数组”并包含文件。