【问题标题】:How to insert custom Javascripts in Sitecore backend如何在 Sitecore 后端插入自定义 Javascript
【发布时间】: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 的 &lt;clientscripts&gt; 部分中放置一个脚本标签确实有效。但是,有必要将其放在 &lt;everypage&gt; 小节中以使其出现在后端的每个页面上,而 &lt;htmleditor&gt; 仅适用于 Sitecore 5.4 中的 Telerik RadEditor 弹出窗口。

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

Sitecore 5.4 中描述的相同方法适用于 Sitecore 6,但添加了一些小东西:&lt;script&gt; 嵌入在 &lt;clienscripts&gt; 现在需要 key 属性:

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

【问题讨论】:

    标签: sitecore sitecore6


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      也许您可以使用this example code 将控件添加到前端的&lt;head&gt;,但改为使用&lt;renderContentEditor&gt; 管道以某种方式将新的&lt;script&gt; 标记注入编辑器。

      【讨论】:

        【解决方案3】:

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

        我之前对此进行过实验,最终使用了上述设置,但我记得它也加载到了页面编辑器和桌面上。

        【讨论】:

        • &lt;clientscripts&gt; 下有一个名为&lt;htmleditor&gt; 的子节点——我认为您应该在其中添加它。
        • 我已经尝试过这种方法并遇到了一些问题 - 请查看我的问题以获取有关此问题的更新。
        猜你喜欢
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 2015-05-02
        • 1970-01-01
        • 2014-12-16
        • 2015-06-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多