我正在使用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>
答案 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 conditionals和template 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的常见问题。简单地说:
{}
放在不同的行上,或$config['protect_javascript']
Hidden Configuration Variable 根据您的使用情况,第二个选项可能是最佳解决方案。
答案 2 :(得分:1)
您还可以将模板类型设置为“静态”,以便轻松修复。如果您的JS在包含其他EE代码的模板中,您可以将其移动到“静态”模板并嵌入它。