如何在Sitecore后端插入自定义Javascript

时间:2012-01-30 09:48:28

标签: sitecore sitecore6

非常简单,我需要在Sitecores(v.6.4)后端插入一个脚本 - 我该怎么做?

如果脚本放在<head><body>内并不重要,如果我只能指定src标记的<script>或如果我可以插入一个实际的Javascript片段(虽然后者更好)。

打开“内容编辑器”窗口时,需要在HTML中插入脚本。

这不是我自己的安装,也不是为Sitecore开发任何东西(但是我确实有管理员访问权限),因此安装插件的方法是我认为最好的解决方案。

我以前在Sitecore 5.4中插入了脚本,但不是很漂亮(编辑XML文件),如果在这里找到更好的解决方案,那就太棒了。

使用Jens Mikkelsens在Sitecore Xpress 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:

  • inetpub \ wwwroot \ SitecoreWebsite \ WebSite \ sitecore \ shell \ Applications \ 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 \ WebSite \ sitecore \ shell \ Applications \ Content Manager \ test.js成立:

alert("Test Content Manager");

当我尝试使用默认的Xpress管理员用户登录时,会发生以下三种情况之一(在所有三种情况下,前端加载时没有错误,但没有脚本存在。我有 NOT 能够确定当错误发生时,我唯一可以确定的是,当test.js没有包含在web.config中时,没有错误发生:

案例1:

内容编辑器按预期加载,但未加载任何脚本。这种情况发生在大部分时间都包含了客户脚本。

案例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.

我不确定Xpress是否只是不支持客户端脚本,但即使它不支持,有时内容编辑器加载也很奇怪。

在Sitecore 5.4完整版测试后更新:

在Jens Mikkelsen的回答中,将脚本标记放在web.config中的<clientscripts>部分确实有效。但是,有必要将其放在子<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>

3 个答案:

答案 0 :(得分:4)

我认为您无法在不修改文件的情况下添加脚本。但是,您可以查看web.config中的<clientscripts>部分。在那里,您可以添加要加载的脚本。但是我不知道它是否只会加载到内容编辑器中。

我之前已经尝试过这个,最后我使用了上面的设置,但是我记得它也加载在页面编辑器和桌面上。

答案 1 :(得分:1)

也许您可以使用this example code向前端的<head>添加控件,而是将其更改为使用<renderContentEditor>管道以某种方式注入新的<script>标记到编辑器中。

答案 2 :(得分:0)