代码之家  ›  专栏  ›  技术社区  ›  Juriy

告诉smarty按原样打印块

  •  1
  • Juriy  · 技术社区  · 14 年前

    我需要将一些javascript代码内联到Smarty模板文件中,而这些{ldelim}{rdelim}东西正折磨着我。有没有办法告诉smarty忽略块的标记并按原样输出它?类似于xml中CDATA块的内容?

    $(function() {ldelim}
            $( "#slides" ).accessNews({ldelim}
                speed :  "{$speed}",
                slideBy : 1
            {rdelim});    
    {rdelim});
    

    毛骨悚然嘿?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Pekka    14 年前

    重新更新: {literal} .... insert content here {/literal} 关闭整个块的Smarty变量解析。

    出于这个确切的原因,我喜欢将默认分隔符字符改为其他字符(据我所知,这只能用于整个项目,所以你必须看看它是否适合你。)

    <( $variablename )>
    

    要更改的变量是 rightDelimiter leftDelimiter 属性。 Documentation

    $smarty = new Smarty();
    $smarty->left_delimiter =  '<(';
    $smarty->right_delimiter = ')>';
    
        2
  •  2
  •   Zsolti    14 年前

    在这种情况下,使用{literal}标记很有用,但是正如Pekka所说的,每次插入变量时关闭和开始标记是非常烦人的。 您可以更改Smarty的分隔符,但是如果您已经有很多模板,那就不太好了。

    Smarty团队在smarty3中解决了这个问题。不再有{literal}标记,模板工作正常。也许你可以试着更新一下。