2010-05-04 65 views
2

这里在index.tpl智者分配到JavaScript的外部

在这里javas.js

var currentTS = "{literal}{$userid}{/literal}"; 
alert(currentTS); 

但会有警报{literal}{$userid}{/literal}不是$userid。 有什么想法?

+0

还我忘了提及。你要确保你把双引号“”,围绕它只有在你想要的字符串值,如果它是从变量的名字听起来像一个primay唯一键你最好把没有引号 – Neo 2010-10-13 18:20:52

回答

2

将javascript文件包含在index.tpl中。如果你拥有了它你的模板目录以外,你必须使用file:/...符号(和使用自己的路径,的赛道):

<html> 
    <head 
    <script type='text/javascript'> 
    {include file='file:/home/www/mydomain/public_html/js/javas.js'} 
    </script> 

如果您有它在你的模板diretory简单:

<html> 
    <head 
    <script type='text/javascriptä> 
    {include file='javas.js'} 
    </script> 

现在Smarty应该解析并编译它。

此外,在我看来,你是错误的方式。如果你在你的JS使用大括号文件,你应该用{}文字标记和“unliteralize” Smarty的变量启动JS:

{literal} 
function test() { 
    var name = '{/literal}{$name}{literal}'; 
    // do something 
} 
{/literal} 
0

不要使用{}字面你 不需要它这里。

{文字}力量显示所有{因为它们是,并且不解析聪明的代码。因此{$}用户ID会显示,因为它是。

在你所在的地方展示它毫无意义。

5

Smarty只能在php下运行,不能在.js中运行它,除非在apache configruations中将.js添加到php扩展中。

最重要的是,在我看来,你试图从你的index.php访问{$ userid}变量。那永远不会发生!除非你包括像karvonen文件服务器端解释。 而你的{literal}标签是不必要的,你开始文字,当你要使用{}不是smarty标签,但为JavaScript,CSS等。 和唯一一次你看到他们周围的smarty标签是相反的方式作为karvonen解释

这里是我的建议:你在index.tpl权包括java.js文件做到这一点之前:

<!--index.tpl--> 
<script type='text/javascript'>UserID = '{$userid}';</script> 
<script type='text/javascript' src='pathto/java.js'></script> 



/*java.js*/ 
var currentTS = UserID; 
alert(currentTS); 
+0

Thanks.Worked罚款整数! – 2012-09-26 06:31:58