Поскольку все приготовления позади, пора приступить к делу и создать наш самый первый картридж. Картриджи являются основой экосистемы SFCC. Фактически, большая часть бизнес-логики SFCC организована в картриджах. На самом деле, по сути, картридж - это просто способ упаковать и развернуть код (и данные) в экземпляре SFCC. Например, картридж может содержать новые контроллеры или сценарии, которые добавляют функциональность сайту. Для этого поста мы создадим картридж, который добавит новый контроллер и новый шаблон на демонстрационный сайт.

Создание нового картриджа

Самый простой способ создать новый картридж - использовать шаблон. SFCC предоставляет нам шаблон как часть инструментов командной строки SFRA (пакет sgmf-scripts, который мы установили на второй день).

  1. Создайте новую папку cartridgesHub и перейдите к ней.
  2. Выполните команду sgmf-scripts, чтобы создать новый картридж с именем magicCartridge: sgmf-scripts —-createCartridge magicCartridge
  3. Найдите только что созданный картридж (cd cartridges/magicCartridge/cartridge). Если вы перечислите содержимое папки, вы увидите, что инструмент SFRA CLI создал для нас набор папок и файлов:

Каждая папка в шаблоне служит отдельной точкой интеграции для картриджа:

  • client - используется для ресурсов на стороне клиента, таких как файлы CSS или JS.
  • контроллеры - используются для добавления новых контроллеров на стороне сервера.
  • models - используется для добавления новых моделей данных.
  • шаблоны - используются для добавления новых шаблонов ISML.

Добавление нового контроллера

Если вы пришли из SGJC, то вы не новичок в концепции контроллеров. Чтобы убедиться, что все находятся на одной странице, контроллеры по существу (как следует из названия) управляют потоком витрины. Когда вы переходите на страницу витрины магазина, контроллер принимает запрос и в зависимости от действия решает, какой шаблон отображать. В этом примере мы создадим контроллер с именем Magic, который будет иметь одно действие - Show, таким образом отвечая на запрос, приходящий на маршрут /magic-show.

  1. cd в папку controllers только что созданного картриджа.
  2. Создайте новый файл с именем Magic.js со следующим содержимым:

Итак, что мы здесь видим?

Строка 1: импортирует модуль server, который в нашем случае в основном используется для маршрутизации.

Строки 3–6: добавляет «слушателя» для маршрута Show (то есть /magic-show). Если маршрут пройден - шаблон magic будет отображен на странице.

Строка 7: вызывает метод next, который передает запрос следующему промежуточному программному обеспечению в цепочке. Когда запрос достигает промежуточного программного обеспечения, которое не вызывает next, запрос будет считаться обработанным, и объект ответа вернется к вызывающей стороне.

🐘 Чтобы узнать больше о промежуточном программном обеспечении, обратитесь к руководству ExpressJS Использование промежуточного программного обеспечения.

Строка 10: модуль экспортируется с использованием метода server класса exports.

Загрузка картриджа

Теперь, когда в нашем картридже появился новый контроллер, пора его протестировать! Чтобы загрузить наш новый картридж:

  1. вернитесь в корневую папку концентратора картриджей (/cartridgesHub).
  2. Заполните данные в dw.json (используйте те же учетные данные, что и файл dw.json в storefront-reference-architecture).
  3. Загрузите картридж с помощью инструментов SFRA CLI: sgmf-scripts — uploadCartridge magicCartridge.

Если все прошло хорошо, вы должны увидеть распечатанное сообщение об успешном выполнении:

🐘 Вы также можете использовать NPM для загрузки картриджа, запустив npm run uploadCartridge вместо использования инструментов интерфейса командной строки.

Регистрация картриджа

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

  1. Откройте Бизнес-менеджер и выберите АдминистрированиеСайтыУправление сайтамиRefArch.
  2. Откройте вкладку Настройки.
  3. Теперь вы должны увидеть все картриджи, которые в настоящее время зарегистрированы на сайте, в строке Картриджи. Чтобы зарегистрировать наш картридж, просто добавьте его название в список Картриджей и нажмите «Применить»:

🐘 Порядок картриджей в потоке картриджей критичен. Чем левее расположен патрон, тем он мощнее. Что значит мощный?
В случае, когда два контроллера с одинаковыми именами находятся в более чем одном картридже, контроллер в крайнем левом картридже будет иметь приоритет над контроллером в других картриджах и будет использоваться платформой.

После регистрации картриджа давайте протестируем наш новый контроллер:

Перейдите по URL-адресу сайта, используя URL-адрес экземпляра: https: //‹ имя экземпляра ›.demandware.net / on / Demandware.store / Sites-RefArch-Site / default / Magic-Show

Если контроллер загрузился правильно, вы должны получить следующую страницу:

Добавление шаблона Magic

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

  1. cd в папку templates/default нашего картриджа magicCartridge.
  2. Добавьте новый файл с именем magic.isml со следующим содержанием:

3. Вернитесь обратно в корневую папку концентратора картриджей (/cartridgesHub).

4. Загрузите картридж с помощью инструментов SFRA CLI: sgmf-scripts — uploadCartridge magicCartridge.

Обновите страницу еще раз и вас должен встретить волшебный сюрприз :)

Это будет сделано для нашего базового картриджа, мы сохраним волшебство (каламбур) завтра, когда мы будем использовать пользовательские настройки сайта с нашим картриджем.

Как всегда, жду ваших комментариев здесь или в Твиттере 😎