Как добавить собственный клиентский javascript на домашнюю страницу SiteGenesis по требованию?

Я учусь, работая с SiteGenesis. Я пока разбираюсь в основах контроллеров и шаблонов вdemandware. Я хотел бы понять, как я могу добавить javascript на стороне клиента на страницу в программном обеспечении. Например, домашняя страница SiteGenesis имеет контроллер в sitecore_controllers, который отображает шаблон домашней страницы. Я хотел бы добавить простое предупреждающее сообщение для пользователей при загрузке начальной страницы: alert('hello world'). Я могу взломать и вставить это сообщение куда-нибудь, но я хотел бы сделать это, добавив свой собственный картридж и добавив отдельный файл js. Каков наилучший способ сделать это?


person awm    schedule 15.05.2017    source источник


Ответы (1)


Вы правы, что встроенные скрипты здесь не лучшая практика. Чтобы связать файл сценария из вашего кода, вам нужно сделать следующее:

  1. Добавьте файл скрипта в папку static/js картриджа.
  2. Используя методы класса URLUtils, создайте URL-адрес этого файла сценария.
  3. Добавьте тег script с атрибутом src, указывающим на URL-адрес, созданный в 2.

Сейчас рекомендуется размещать эти теги script прямо перед закрывающим тегом body. Вы можете создать шаблон для этих тегов сценария и использовать локальный тег isinclude, чтобы включить его из шаблона декоратора или из шаблона нижнего колонтитула.

Любые вопросы - дайте мне знать.

P.S. Я предположил, что вы знаете/понимаете:

  • классы Script API URLUtils и URL;
  • как распечатать значение в шаблоне;
  • локальные и удаленные включения (варианты тега isinclude);
  • декоратор и декорированные шаблоны (теги isdecorate, isreplace).
person Zlatin Zlatev    schedule 16.05.2017
comment
Спасибо. У меня есть базовые знания архитектуры, и я немного знаком со скриптом API (контроллеры).. - person awm; 16.05.2017
comment
У меня работал <script src="${URLUtils.absStatic('/js/hello-world.js')}" type="text/javascript"></script>, где hello-world.js находится по адресу cartridge/static/default/js/hello-world.js - person awm; 16.05.2017