Как вставить пользовательские JavaScript в бэкэнд Sitecore - PullRequest
3 голосов
/ 30 января 2012

Довольно просто, мне нужно вставить скрипт в бэкэнд 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>

Ответы [ 3 ]

4 голосов
/ 30 января 2012

Не думаю, что вы сможете добавить скрипт без изменения файла.Однако вы можете взглянуть на раздел <clientscripts> в файле web.config.Там вы можете добавить скрипты для загрузки.Однако я не знаю, будет ли он загружаться только в редакторе контента.

Я экспериментировал с этим раньше, и в итоге я использовал вышеописанную настройку, но, насколько я помню, он также загружался в редакторе страниц иРабочий стол.

1 голос
/ 30 января 2012

Возможно, вы можете использовать этот пример кода , чтобы добавить элементы управления к <head> на внешнем интерфейсе, но вместо этого изменить его на использование <renderContentEditor> конвейера, чтобы каким-то образом внедрить новый тег <script> в редактор.

0 голосов
/ 25 апреля 2015
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...