0

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

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

任何帮助将非常感激。

4

7 回答 7

2

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

您可以从 CP => Admin => System Administration => Output and Debugging => Debug Preference 更改调试首选项。

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

于 2012-10-28T19:04:19.787 回答
2

ExpressionEngine 的模板类将花括号解析{}模板变量

由于许多编程语言都使用花括号,因此ExpressionEngine 将 JavaScript 花括号替换为模板变量可能会导致问题。

例如,以下带有花括号的 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 函数,只需将大括号放在单独的行上 — 这是一种很好的编码约定,并且对于可读性而言是最佳的

于 2011-10-07T14:47:25.703 回答
1

尝试保护 Javascript 配置变量。我已经多次使用它来混合/匹配 EE vars 和 JS。

EE 1.x

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

参考

EE 2

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

参考

于 2012-05-02T22:03:23.950 回答
1

将您的分析代码分离到单独的模板中。

这可能是因为您在另一个 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"}

你会很高兴去的。

于 2011-10-07T12:40:33.123 回答
0

您应该使用隐藏的配置变量保护 javascript

$config['protect_javascript'] = 'y';
于 2012-10-24T14:01:42.310 回答
-2

您是否尝试过使用 EE 模板注释标签注释掉整个 Analtics 代码块?IE

{!--

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

--}

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

于 2010-09-23T09:39:27.380 回答
-2

我建议您避免在 HTML 模板中插入(或尝试插入)原始 JS。您可以创建一个不同的模板,使用 typeJavaScript而不是HTML,然后您可以使用标签添加它headscript或者{embed="js/piece-of-raw-javascript"}

于 2011-03-07T15:31:03.247 回答