我正在尝试将一些分析代码插入到我的 ExpressionEngine 模板的页脚文件中,但它将 {} 视为函数调用或其他东西。有什么方法可以让它理解 EE 不应该执行大括号内的内容吗?
我已经尝试过插入反斜杠,但它似乎不起作用。
任何帮助将非常感激。
我正在尝试将一些分析代码插入到我的 ExpressionEngine 模板的页脚文件中,但它将 {} 视为函数调用或其他东西。有什么方法可以让它理解 EE 不应该执行大括号内的内容吗?
我已经尝试过插入反斜杠,但它似乎不起作用。
任何帮助将非常感激。
您在 EE 中的调试偏好是什么?它应该设置为“1”(推荐)。如果当前为“0”,请尝试将设置值更改为“1”。在某些情况下,调试设置为“0”时使用非 EE {} 字符可能会出现问题。
您可以从 CP => Admin => System Administration => Output and Debugging => Debug Preference 更改调试首选项。
将 {} 大括号放在单独的行上也可以,但强烈建议使用 Debug 设置(“1”),甚至可能为什么这个“错误”没有得到修复。
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 函数,只需将大括号放在单独的行上 — 这是一种很好的编码约定,并且对于可读性而言是最佳的。
将您的分析代码分离到单独的模板中。
这可能是因为您在另一个 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"}
你会很高兴去的。
您应该使用隐藏的配置变量保护 javascript
$config['protect_javascript'] = 'y';
您是否尝试过使用 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
我建议您避免在 HTML 模板中插入(或尝试插入)原始 JS。您可以创建一个不同的模板,使用 typeJavaScript
而不是HTML
,然后您可以使用标签添加它head
,script
或者{embed="js/piece-of-raw-javascript"}