1

我正在使用 EE2.2 以及 jQuery 和 jQuery 模板插件。在我的模板中,我分配了花括号,这是 jQuery 模板工作方式的一部分。问题是 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>
4

3 回答 3

3

ExpressionEngine 的 hidden$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 代码块中评估高级条件

无论设置如何,简单的条件模板标签总是在标签中评估- 只需确保将花括号放在单独的行上!<script>$config['protect_javascript']{}

<script>
    // Simple Conditionals Are Unaffected and Always Work
    {if segment_2 != ""}
        {redirect="404"}
    {/if}
</script>
于 2011-09-29T03:54:35.870 回答
1

这是一个以前已经回答过的常见问题。简单的说:

  • 将 JavaScript 的花括号{}放在不同的行上,或者
  • 制定$config['protect_javascript'] 隐藏的配置变量

根据您的使用情况,第二种选择可能是最好的解决方案。

于 2011-09-29T01:37:54.037 回答
1

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

于 2011-10-08T08:50:18.170 回答