Довольно просто, мне нужно вставить скрипт в бэкэнд 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 \ WebSite \ Sitecore \ оболочки \ Приложения \
- Inetpub \ Wwwroot \ SitecoreWebsite \ WebSite \ Sitecore \ оболочки \
- 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 по умолчанию, происходит одно из трех (во всех трех случаях интерфейс загружается без ошибок, но сценария нет. У меня 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 полной версии:
Действительно работает поместить тег скрипта в раздел <clientscripts>
в web.config, как ответил Йенс Миккельсен. Однако необходимо поместить его в подраздел <everypage>
, чтобы он отображался на каждой отдельной странице бэкэнда, тогда как <htmleditor>
работает только для всплывающего окна Telerik RadEditor в Sitecore 5.4.
Обновление после тестирования в полной версии Sitecore 6:
Тот же метод, который описан для Sitecore 5.4, работает для Sitecore 6 с добавлением мелочи: <script>
, встроенный в <clienscripts>
, теперь требует атрибут key
:
<clientscripts>
<everypage>
<script src="/test.js" language="javascript" key="test script" />
</everypage>
</clientscripts>