Expressionengine将jQuery花括号解释为EE标记

时间:2011-09-29 01:06:31

标签: jquery tags expressionengine curly-braces

我正在使用EE2.2以及jQuery和jQuery模板插件。在我的模板中,我有大量的花括号,这是jQuery Templating如何工作的一部分。问题是EE没有区分JavaScript花括号和EE标签,它们也有花括号。 EE将花括号解释为EE标记,因此模板不起作用。由于这些花括号位于脚本标记内,我认为EE会将它们视为javascript和非EE标记相关。我怎么能告诉EE这些不是EE标签。有没有解决这个问题。

<script id="template-download" type="text/x-jquery-tmpl">
    <tr class="template-download{{if error}} ui-state-error{{/if}}">
        {{if error}}
            <td></td>
            <td class="name">${name}</td>
            <td class="size">${sizef}</td>
            <td class="error" colspan="2">Error:
                {{if error === 1}}File exceeds upload_max_filesize (php.ini directive)
                {{else error === 2}}File exceeds MAX_FILE_SIZE (HTML form directive)
                {{else}}${error}
                {{/if}}
            </td>
        {{else}}
            <td class="preview">
             .....
</script>

3 个答案:

答案 0 :(得分:3)

ExpressionEngine的隐藏$config['protect_javascript']实际上做了什么?最好用一个例子来解释 - 请允许我举例说明。

鉴于以下代码示例,$config['protect_javascript'] = 'y';高级条件将完全被忽略:

<script>
    {if username == "admin"}
        Welcome, {username}!
    {if:elseif member_id == "2"}
        Welcome, {screen_name}!
    {if:else}
        Welcome, Guest!
    {/if}
</script>

将产生以下输出:

<script>
    Welcome, admin!

    Welcome, Administrator!

    Welcome, Guest!
</script>

然而,当$config['protect_javascript'] = 'n';来自上面的相同代码段允许评估高级条件并将生成:

<script>
    Welcome, admin!
</script>

如您所见,区别在于是否在JavaScript代码块中评估了高级条件

Simple conditionalstemplate tags始终在<script>代码中进行评估,无论$config['protect_javascript']设置如何 - 只需确保将大括号{}分开放置线!

<script>
    // Simple Conditionals Are Unaffected and Always Work
    {if segment_2 != ""}
        {redirect="404"}
    {/if}
</script>

答案 1 :(得分:1)

这是一个been answered before的常见问题。简单地说:

根据您的使用情况,第二个选项可能是最佳解决方案。

答案 2 :(得分:1)

您还可以将模板类型设置为“静态”,以便轻松修复。如果您的JS在包含其他EE代码的模板中,您可以将其移动到“静态”模板并嵌入它。