【发布时间】:2012-02-22 03:14:00
【问题描述】:
很简单,我需要在 Sitecores (v. 6.4) 后端插入一个脚本 - 我该怎么做?
脚本放置在<head> 或<body> 中都没有关系,如果我只能指定<script> 标记的src 或者我是否可以插入实际的Javascript sn 也没有关系-p(虽然后者更可取)。
当打开内容编辑器窗口时,需要将脚本插入到 HTML 中。
这不是我自己的安装,我也没有为 Sitecore 开发任何东西(不过我确实有管理员权限),所以我认为最好的解决方案是安装插件。
我之前在 Sitecore 5.4 中插入了脚本,但不是很漂亮(编辑 XML 文件),如果在这里也能找到更好的解决方案,那就太好了。
在 Sitecore Xpress 6 中使用 Jens Mikkelsens 答案更新:
我尝试在 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\WebSite\sitecore\shell\Applications\
- inetpub\wwwroot\SitecoreWebsite\WebSite\sitecore\shell\
- inetpub\wwwroot\SitecoreWebsite\WebSite\sitecore\
- inetpub\wwwroot\SitecoreWebsite\WebSite\
test.js 的内容:
alert("Test [PATH TOKEN]");
路径标记只是父文件夹名称,所以我知道加载了哪个 test.js,例如inetpub\wwwroot\SitecoreWebsite\WebSite\sitecore\shell\Applications\Content Manager\test.js 持有:
alert("Test Content Manager");
当我尝试使用默认 Xpress 管理员用户登录时,会发生以下三种情况之一(在所有三种情况下,前端加载都没有错误,但没有脚本存在。我 不 能够确定当错误发生时,我唯一可以肯定的是,当 test.js 未包含在 web.config 中时不会发生错误):
案例一:
内容编辑器按预期加载,但未加载脚本。大多数情况下,当包含客户端脚本时,都会发生这种情况。
案例 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>
【问题讨论】: