Prestashop,在.tpl中,如何使用smarty变量

时间:2015-03-01 16:57:10

标签: javascript smarty prestashop

我希望在我的javascript中使用smarty变量,但我不能这样做><'

我当前的代码但生成错误=>

<script type="text/javascript">
var title = document.title;
var height1 = {$mysmartyvariable1};
var height2 = {$mysmartyvariable2};
if (title == 'index')
{ var height = height1; }
else { var height = height2; };

$(document).on("scroll",function(){
    if($(document).scrollTop()>height){
        $("#nav").removeClass("navfull").addClass("navsmall");
    } else{
        $("#nav").removeClass("navsmall").addClass("navfull");
    }
});
</script>

那我怎么能在这个脚本部分添加mysmartyvariable1呢?

感谢Allan Nienhuis正确的代码是:

<script type="text/javascript">
var title = document.title;
var height1 = {$mysmartyvariable1};
var height2 = {$mysmartyvariable2};
{literal}
if (title == 'index')
{ var height = height1; }
else { var height = height2; };

$(document).on("scroll",function(){
    if($(document).scrollTop()>height){
        $("#nav").removeClass("navfull").addClass("navsmall");
    } else{
        $("#nav").removeClass("navsmall").addClass("navfull");
    }
});
{/literal}
</script>

1 个答案:

答案 0 :(得分:1)

我在您的代码中看到了两个问题。

1)你没有在$ mysmartyvariable2周围添加{}括号。这将分配&#39; undefined&#39;因为smarty根本不会处理这个变量,所以没有定义名为$ mysmartyvariable2的javascript变量。

2)你需要在嵌入使用{}字符的javascript时使用{literal} {/ literal}标签,这样smarty就不会尝试将javascript {}字符解释为聪明的语法。

http://www.smarty.net/docsv2/en/language.function.literal

在这种情况下,您可以在height2声明/赋值后启动{literal}标记,因为前面的行应该由smarty解释,但以下行不应由smarty解释。

var height2 = {$mysmartyvariable2};
{literal}
if (title == 'index') 
  { //code here 
  }

// other code
{/literal}
</script>