Работа с динамическими данными через шаблонизатор библиотеки Lodash
Подключение
В шаблоныlayots.{layout,checkout2,client_account}.liquidдобавить тегinclude_insales_scriptsс параметромcommon-js@v2
{% include_insales_scripts "common-js@v2" %}
Также можно подключить через settings_data.json, прописав там поле - "common_js_version": "v2".
Файл settings_data.json недоступен через админ-панель, поэтому новое свойство нужно добавлять вручную путём скачивания шаблона и последующей установки с новыми параметрами. Также файл можно поправить, если для разработки используетсяinSales-uploader.
Lodash доступен глобально, можно и нужно пользоваться возможностями этой библиотеки при разработке.
Зарезервированные переменные
Имена переменных которые Common.js присваивает в глобальную область видимости:
Cart
Shop
Products
Compare
FavoritesProducts
Site
AjaxSearch
ajaxAPI
Template
EventBus
В проектах, где используется Common.js, нельзя переопределять данные переменные. Также при подключении Common.js к работающему сайту нужно проверять переменные на переопределение и особенно обратить внимание на переменныеCartиSite.
Логика работы
Готовые решения Common.js для компонентов магазина работают по следующей логике:
В разметку компонента добавляются элементы с обязательными data-атрибутами. Далее в эти атрибуты через Liquid-переменные передаются данные из магазина. Также есть data-атрибуты, которые реализуют действия (кнопки добавления или удаления товара из корзины, переключение вариантов, изменение количества и т.д.).
Common.js при загрузке страницы пробегает по элементам с data-атрибутам и на основе полученных данных инициализирует скрипты для работы компонентов.
Практически на каждое взаимодействие с компонентами, реализованными с помощью фреймворка (обновление корзины, переключение модификации и т.д.), можно повесить обработчик, в callback которого приходит информация о событии. Например, при обновлении корзины в callback попадает информация об актуальном состоянии корзины, исходя из чего можно сделать динамический виджет корзины или обновление информации на странице корзины без перезагрузки страницы.
API фреймворка Common.js предоставляет удобные и протестированные методы для разработки своих компонентов.
Все обращения к API нужно производить после событияDOMContentLoaded, оно же$(document).ready(function() {}), $(function() {}).