2012-01-30 30 views
3

非常簡單,我需要在Sitecores(v.6.4)後端插入腳本 - 我該如何做?如何在Sitecore後端插入自定義Javascript

如果腳本放在裏面<head><body>不要緊,也不如我只能指定一個<script>標籤的src或者,如果我可以插入一個實際的JavaScript代碼段有什麼關係(後者爲首選,雖然) 。

打開內容編輯器窗口時,需要將腳本插入到HTML中。

這不是我自己的安裝,也不是爲Sitecore開發任何東西(但是我有管理員權限),所以安裝插件方面的東西是我認爲最好的解決方案。

我以前在Sitecore 5.4中插入腳本,但不是以一種漂亮的方式(編輯XML文件),如果在這裏也可以找到更好的解決方案,那會很棒。

更新使用延Mikkelsens答案Sitecore的隨心6:

我試圖把web.config中的以下內容:

<clientscripts> 
    <everypage> 
    <script src="/test.js" language="javascript" /> 
    </everypage> 
    <htmleditor> 
    <script src="/test.js" language="javascript" /> 
    </htmleditor> 
</clientscripts> 

作爲一個有點過分熱心(並希望確保test.js文件可以找到)我把js.test放在以下位置:

  • in etpub \ wwwroot的\ SitecoreWebsite \網頁\ Sitecore的\殼\應用程序\的Content Manager \
  • 的Inetpub \ wwwroot的\ SitecoreWebsite \網頁\ Sitecore的\殼\應用程序\
  • 的Inetpub \ wwwroot的\ SitecoreWebsite \網頁\ Sitecore的\殼\
  • 的Inetpub \ wwwroot的\ SitecoreWebsite \網頁\ Sitecore的\
  • 的Inetpub \ wwwroot的\ SitecoreWebsite \網頁\

的test.js的內容:

alert("Test [PATH TOKEN]"); 

其中路徑標記只是父文件夾名稱,所以我知道哪個test.js已加載,例如,的Inetpub \ wwwroot的\ SitecoreWebsite \網頁\ Sitecore的\殼\應用程序\的Content Manager \ test.js認爲:

alert("Test Content Manager"); 

當我嘗試登錄使用默認隨心admin用戶的三種情況之一發生(在所有三個我有不是能夠確定何時發生錯誤,我唯一可以肯定的是,當test.js沒有被包含在網絡中時,沒有錯誤發生的.config):

案例1:

如預期的內容編輯器的負荷,但沒有腳本被加載。發生這種情況的大部分時間是clientcript被包括在內。

案例2 - 服務器錯誤:

Server Error in '/' Application. 

Exception Details: System.ArgumentException: Empty strings are not allowed. 
Parameter name: value 

Stack Trace: 

[ArgumentException: Empty strings are not allowed. 
Parameter name: value] 
    Sitecore.Diagnostics.Assert.ArgumentNotNullOrEmpty(String argument, String argumentName) +241 
    Sitecore.Web.UI.HtmlControls.PageScriptManager.GetEveryPageScripts() +410 
    Sitecore.Web.UI.HtmlControls.PageScriptManager.GetScripts() +702 
    Sitecore.Web.UI.HtmlControls.Page.OnInit(EventArgs e) +62 
    System.Web.UI.Control.InitRecursive(Control namingContainer) +143 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1477 

案例3 - Sitecore的錯誤:

A required license is missing 
Most likely causes: 
The resource you are trying to access requires the following license: Runtime. 

我不知道是否隨心根本不支持clientscripts,但即使內容編輯器加載時不奇怪。在Sitecore的測試5.4正式版後

更新:

它確實工作把腳本標籤<clientscripts>部分內部在web.config中的延斯·米克爾森回答。但是,需要將其放在<everypage>小節中以使其出現在後端的每個頁面上,而<htmleditor>僅適用於Sitecore 5.4中的Telerik RadEditor彈出窗口。在Sitecore的6測試完整版後

更新:

方法同與另外的小東西了Sitecore的描述5.4作品Sitecore的6:<script>嵌入<clienscripts>現在需要key屬性:

<clientscripts> 
    <everypage> 
    <script src="/test.js" language="javascript" key="test script" /> 
    </everypage> 
</clientscripts> 

回答

4

我不認爲您將無法添加腳本而無需修改文件。但是,您可以查看web.config中的<clientscripts>部分。在那裏你可以添加腳本來加載。但是我不知道它是否只會在內容編輯器中加載。

我已經試過這個,我最終使用了上面的設置,但正如我記得它也加載在頁面編輯器和桌面上。

+1

一個很好的例子,有在'一個子節點''叫' - 我想這就是你添加它。 – 2012-01-30 15:09:22

+0

我試過這種方法並遇到一些問題 - 請檢查我的問題以獲取更新。 – Woodgnome 2012-02-01 10:25:30

1

也許你可以使用this example code到控件添加到<head>的前端,而是改變它使用<renderContentEditor>管道以某種方式注入新的<script>標籤到編輯器。