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

Expressionengine将jQuery花括号解释为EE标记,jquery,tags,expressionengine,curly-braces,Jquery,Tags,Expressionengine,Curly Braces,我正在使用EE2.2以及jQuery和jQuery模板插件。在我的模板中,我分配了花括号,这是jQuery模板工作方式的一部分。问题在于EE并没有区分JavaScript大括号和EE标记,后者也有大括号。EE将花括号解释为EE标记,因此模板无法工作。由于这些花括号位于脚本标记内,我假设EE将它们视为javascript和非EE标记相关。我如何告诉EE这些不是EE标签。这有什么办法吗 <script id="template-download" type="text/x-jquery-tmp

我正在使用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>

{{if error}}
${name}
${sizef}
错误:
{{if error==1}}}文件超过了upload\u max\u filesize(php.ini指令)
{{else error==2}}文件超过了最大文件大小(HTML表单指令)
{{else}}${error}
{{/if}
{{else}
.....

这是一个普遍存在的问题。简言之:

  • 将JavaScript的大括号
    {}
    放在单独的行上,或者
  • 执行
    $config['protect\u javascript']

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

这是一个常见的问题。简言之:

  • 将JavaScript的大括号
    {}
    放在单独的行上,或者
  • 执行
    $config['protect\u javascript']

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

ExpressionEngine的隐藏
$config['protect\u 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>
如您所见,区别在于高级条件是否在JavaScript代码块中计算

和总是在
标记中计算,而不管
$config['protect_javascript']
设置如何-只需确保将花括号
{}
放在单独的行中

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

//简单条件句不受影响且始终有效
{如果段_2!=“”}
{redirect=“404”}
{/if}

ExpressionEngine的隐藏
$config['protect\u 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>
如您所见,区别在于高级条件是否在JavaScript代码块中计算

和总是在
标记中计算,而不管
$config['protect_javascript']
设置如何-只需确保将花括号
{}
放在单独的行中

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

//简单条件句不受影响且始终有效
{如果段_2!=“”}
{redirect=“404”}
{/if}

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

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

谢谢。我将protect_javascript设置为y,它可以工作。将protect_javascript设置为n的初衷是什么,因为您经常希望在javascript中使用EE变量,它阻止ExpressionEngine解析器在
标记中进行处理。也就是说,ExpressionEngine不会查找逻辑运算符(或、和)或比较运算符(=),因为EE的默认值有时是向后的。例如:“自动将URL和电子邮件地址转换为链接?”大多数默认设置都非常可靠,但也有一些奇怪的设置。谢谢。我将protect_javascript设置为y,它就工作了。将protect_javascript设置为n的目的是什么,因为您通常希望在javascript中使用EE变量。当
$config['protect_javascript']=y;
,它阻止ExpressionEngine解析器在
标记中处理。这意味着,ExpressionEngine不会查找逻辑运算符(或、和)或比较运算符(=),因为EE的默认值有时是向后的。例如:“自动将URL和电子邮件地址转换为链接?”大多数默认设置都非常可靠,但也有一些奇怪的设置。