2010-09-13 48 views
0

我试图插入一些分析代码到我ExpressionEngine模板的页脚文件,但它对待{}的一个函数调用或东西。有什么办法可以让它理解EE不应该执行大括号内的内容?插入{在ExpressionEngine模板文件

我已经尝试插入反斜杠,它似乎并没有工作。

任何帮助将不胜感激。

+0

能否请您发布您的代码页脚文件? – 2011-10-07 12:34:48

+0

请接受某人的回答。他们花时间给你提出建议。 – 2011-10-25 13:44:05

+0

我可以诚实地说,在我建立的所有EE网站中,我从未遇到过这个问题!我通常会将GA代码作为一个单独的HTML模板加入,并将其嵌入到其他模板中 - 也许这是要走的路? – foamcow 2012-10-25 08:52:25

回答

-2

您是否试过使用EE模板评论标签评论整个Analia代码块?即

{!-- 

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

--} 

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

+0

你在说什么?他的JavaScript代码被视为表达式引擎代码,我面临同样的问题。 – Musa 2010-12-28 17:08:42

+0

当您使用EE的评论标签评论代码时,该模块内部没有任何内容会显示在模板中,所以这绝对不是一种好的方法。 – 2011-10-08 19:27:14

-2

我建议你避免插入(或试图插入)生JS成HTML模板。您可以创建不同的模板,用JavaScript类型,而不是HTML,那么你可以用script标签在head添加它,或{embed="js/piece-of-raw-javascript"}

1

独立的分析代码放到一个单独的模板。

这可能是因为你有分析代码内的另一个EE循环,所以它试图解析它作为一个模板变量。

所以,如果你需要它在循环中,并创建一个嵌入式的模板,包括隔离的代码。

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

在.analytics模板,请执行下列操作(我使用谷歌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"} 

你会好到哪里去。

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> 

如果你已经写了一个JavaScript函数,从ExpressionEngine预期值,只需将您的括号放在单独的行—这是一个good coding convention,并且是optimal for readability

1

尝试保护的Javascript配置变量。我用它来混合/匹配EE变种和JS几次。

EE 1.x的

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

Reference

EE 2

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

Reference

2

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

您可以将调试偏好设置从 CP => Admin => System Administration => Output and Debugging => Debug Preference。

把{}括号放在单独的行也将工作,但调试设置(“1”)强烈建议,甚至可能为什么这个“错误”是不固定的。