我正在尝试将一些分析代码插入到我的ExpressionEngine模板的页脚文件中,但它将{}作为函数调用或其他东西。有没有办法让它理解EE不应该执行大括号内的东西?
我已经尝试插入反斜杠,但它似乎不起作用。
非常感谢任何帮助。
答案 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';
EE 2
$config['protect_javascript'] = 'y';
答案 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"}