在ExpressionEngine模板文件中插入{

时间:2010-09-13 18:23:44

标签: templates expressionengine

我正在尝试将一些分析代码插入到我的ExpressionEngine模板的页脚文件中,但它将{}作为函数调用或其他东西。有没有办法让它理解EE不应该执行大括号内的东西?

我已经尝试插入反斜杠,但它似乎不起作用。

非常感谢任何帮助。

7 个答案:

答案 0 :(得分:2)

ExpressionEngine的模板类将大括号{}解析为template variables

由于许多编程语言使用花括号,因此ExpressionEngine replacing JavaScript curly braces as Template Variables会导致问题。

例如,以下JavaScript在一行中使用花括号

<script>var addthis_config = { 'ui_click': true };</script>

将由ExpressionEngine解析为模板变量并呈现为:

<script>var addthis_config = ;</script>

您会注意到从开头{开始并以结束}花括号结束的所有内容都会被解析并替换掉! 作为解决方法,您可以将大括号放在单独的行上并避免此问题:

<script>
    var addthis_config = {
        'ui_click': true,
        'data_track_clickback': true
    };
</script>

如果你编写了一个需要ExpressionEngine值的JavaScript函数,只需将你的大括号放在不同的行上 - 这是一个good coding convention并且是optimal for readability

答案 1 :(得分:2)

EE中的Debug优先级是什么?它应设置为“1”(推荐)。如果它当前为“0”,请尝试将设置值更改为“1”。在某些情况下,当debug设置为“0”时,可能会出现非EE {}字符的问题。

您可以更改“调试首选项” CP =&gt; Admin =&gt;系统管理=&gt;输出和调试=&gt;调试首选项。

将{}大括号放在单独的行上也行,但强烈建议使用Debug设置(“1”),甚至可能为什么这个“bug”没有修复。

答案 2 :(得分:1)

将您的分析代码分成单独的模板。

这可能是因为您将分析代码INSIDE在另一个EE循环中,所以它试图将其解析为模板变量。

如果您需要在循环中使用代码并创建要包含的嵌入式模板,请将代码隔离。

因此,创建一个名为.analytics的包含。

在.analytics模板中,执行以下操作(我使用Google Analytics作为示例):

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-xxxxxx-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

注意:使用此方法,将模板保留为普通模板,不要将其更改为javascript模板,因为您在模板中使用了<script type="text/javascript">标记。

然后,在您的主模板中,执行一个简单的操作:

{embed="template_group/.analytics"}

你会很高兴。

答案 3 :(得分:1)

尝试Protect Javascript配置变量。我曾多次使用它来混合/匹配EE变量和JS。

EE 1.x

$conf['protect_javascript'] = 'y';

Reference

EE 2

$config['protect_javascript'] = 'y';

Reference

答案 4 :(得分:0)

您应该使用hidden config varable protect javascript

$config['protect_javascript'] = 'y';

答案 5 :(得分:-2)

您是否尝试使用EE模板评论标记评论整个Google Analytics代码块?即。

{!--

Your comments will go in here.
You can even span it across multiple lines.

--}

从这里http://expressionengine.com/user_guide/templates/commenting.html

答案 6 :(得分:-2)

我建议您避免将原始JS插入(或尝试插入)到HTML模板中。您可以创建一个类型为JavaScript而不是HTML的其他模板,然后您可以使用head标记在script添加,或{embed="js/piece-of-raw-javascript"}