2010-09-13 91 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」)強烈建議,甚至可能爲什麼這個「錯誤」是不固定的。