Shop-Script X на GitHub: доступ для разработчиков

Shop-Script X (версия 10.0) опубликован на GitHub в ветке dev:
https://github.com/webasyst/shop-script/tree/dev
Для запуска Shop-Script X потребуется фреймворк Webasyst версии 2.8.0+ (доступно в Инсталлере и на Гитхабе). На сегодня (март 2023) это альфа-версия Shop-Script X, и работа по главной фиче обновления — новому интерфейсу Webasyst 2 — еще продолжается.
Однако смотреть работу своих плагинов и работать над их адаптацией для работы в режиме Webasyst 2 уже можно в полную силу — именно в этом цель раннего доступа к коду Shop-Script X.
Полезная информация обо всех нововведениях Shop-Script X:
- Поддерживаются оба режима интерфейса — старый (wa-1.3.css) и новый (wa-2.0.css). В старом никаких изменений по сравнению с предыдущими версиями. В новом визуально все новое. Новые функции доступны только в новом интерфейсе: канбан, оплата по ссылке и другие, о которых мы рассказывали на промосайте x.shop-script.ru.
- Дедлайнов по упразднению старого интерфейса нет. Однако с момента официального выпуска Shop-Script X в Инсталлере (позже весной 2023) все желающие смогут переключиться на новый интерфейс в любой момент, а новые аккаунты в облаке Websyst будут создаваться с режимом Webasyst 2 по умолчанию.
- Все хуки для плагинов мы сохранили на прежних местах. CSS-окружение, разумеется, новое (wa-2.0.css и свои стили Shop-Script). Но общая монолитная архитектура приложения намеренно радикально не менялась, чтобы перейти на новый интерфейс было проще и пользователям, и разработчикам. Изменения косметические, а не структурные.
- В Shop-Script 9, как вы помните, появлялись новые версии разделов списка товаров и редактора товара. Эти новые разделы теперь доступны только в режиме Webasyst 2, а старые версии остались только в старом режиме. Хуки для плагинов в этих новых разделах в Shop-Script X никак не изменились — остались такими же, какими и были в 9.х.
- Убрали поддержку jQuery Mobile. Давно пора!
- Канбан-представление для заказов сейчас доступно вне зависимости от типа лицензии, но после релиза будет только в премиум-версии Shop-Script. (Перетаскивание заказов между колонками сейчас отключено, но будет позже восстановлено в рамках настроек, которые допускает базовый воркфлоу статусов и действий с заказами.)
- Появились новые API-методы и спецификация основных методов в Swagger (OpenAPI). Очень рекомендуем установить приложение API Explorer — оно автоматически покажет всю документацию по методам API из новой версии и будет удобной песочницей для работы с ними.
- Вместе с релизом Shop-Script X будет выпущена и новая версия базовой темы дизайна «Дефолт 4.0». Тема shop:default опубликована в рамках репозитория Shop-Script по ссылке выше. Родительская тема site:default — в ветке dev в репозитории фреймворка Webasyst. (В master и в Инсталлере ее пока нет! Если будете смотреть новую тему, обязательно затяните свежую версию родительской из «Сайта», иначе тема не заведется как надо!)
- Старый пошаговый чекаут (cart.html, checkout.html) постепенно начинаем упразднять. Тема может его не поддерживать. Так, к примеру, его уже не поддерживает новый «Дефолт 4.0». В интерфейсе на этот случае пока ничего не поменялось, но в будущих версиях будет добавлен автоматический принудительный редирект на новый чекаут (оформление в корзине — order.html) и соответствующие подсказки в настройках поселения.
- order_icon. В списке заказов с сайдбаром теперь вместо иконки покупателя выводится order_icon, которая может быть как иконкой маркетплейса (когда мы ничего не знаем о покупателе), так и юзерпиком (когда покупатель зарегистрирован, как было ранее). Теперь на это отображение и другие параметры плагины могут напрямую влиять. Подготовили черновик документации на этот счет — хук sales_channels.
- В мобильном приложении и в основном веб-интерфейсе бекенда появилась возможность создавать заказы без товаров. Это удобно для быстрого ручного добавления заказа — требуется только ввести сумму заказа, что может быть критически важно «на ходу», когда не нужно уточнять товары, и нужно поскорее принять оплату от покупателя. Технически все работает на базе стандартной модели заказа, просто для таких заказов «без товаров» добавляется айтем shop_order_item с product_id=0, sku_id=0 в количестве 1 и явно указанной стоимостью. В общих настройках магазина есть возможность указать дефолтное название, которое будет присвоено такому товару и пойдет в интерфейс, счета и прочие бумажки. Например, “Предоплата по заказу №”. Далее в режиме редактирования заказа можно это название изменить индивидуально для текущего заказа, а работать с заказом (выполнять действия) — согласно общим правилам статусов и действий с заказами.
- Часовой пояс клиента — если на момент сохранения заказа нам известен часовой пояс клиента (это почти всегда известно при оформлении заказа на классической витрине магазина), то эта информация будет сохранена и показана на странице заказа. Полезно, когда магазин в Москве, а клиент на Дальнем Востоке.
- Оплата по ссылке. Получить ссылку на оплату можно для любого неоплаченного заказа. Генерировать ссылку специальным образом не надо — ее можно просто скопировать либо в основном веб-интерфейсе, либо в мобильном приложении. По ссылке пользователь попадет на страницу, на которой сработает механизм оплаты плагина, соответствующего способу оплаты (например, произойдет переход в платежную систему). Либо, если способ оплаты не выбран — пользователь сможет выбрать его сам.
- Оплата заказа по QR-коду: это та же ссылка на оплату, просто в виде QR-кода. Фича предназначена исключительно для показа покупателю в офлайне, и поэтому реализована только в мобильных приложениях Shop-Script X для iOS и Android.
- Курьеры. Старый механизм с отдельным справочником курьеров остается только в старом приложении. В новом приложении работа с API происходит через авторизацию Webasyst ID, и поэтому курьера нужно просто зарегистрировать как обычного пользователя в «Команде». Появился соответствующий уровень доступа к заказам — курьер. Такой пользователь увидит только назначенные на него заказы.
- Локализация, интерфейсные моменты — некоторые вещи еще в процессе разработки и будут улучшаться. Но вряд ли эти моменты хоть как-то помешают вам работать с кодом.
Ну и главный TLDR для разработчиков плагинов — в виде отдельных коммитов выложили примеры рестайлинга плагинов под Webasyst 2 в формате «было — стало»:
- Генератор заказов: https://github.com/webasyst/shop-script/commit/a2c9f0fd0438013e5aadb9df6a230f2181e884ce
- Водяной знак: https://github.com/webasyst/shop-script/commit/be8dc34b327b31c89559e32a054908dd5378ed68
- Яндекс.Маркет: https://github.com/webasyst/shop-script/commit/f05633364a90717cc83ad042a7fc4f6b2f420ed6
Просьба: если где-то с хуками что-то не так, если где-то ваш плагин не подключается, если что-то непонятно — ждем вашей обратной связи ниже в комментариях!
И на всякий случай еще раз ссылка на документацию по дизайн-системе Webasyst 2 — приложение UI.
12 ответов
backend_reports, backend_product - этих не нашел.
Если переключиться в режим UI1.3 backend_product на месте. А новый редактор уже давно не использует хуки backend_product
Хук backend_reports вам нужен для того, чтобы добавить ссылку на свой отчёт ниже пункта главного меню «Отчёты → Товары» в новом интерфейсе?
Совершенно верно. У меня плагин выводит свои отчеты. Пока я вижу способ как вывести свою ссылку первым уровнем в меню. Но если каждый будет так делать, то всё превратится в кашу. А выводимая мной информация не так часто нужна, чтобы быть всегда на виду. Можно конечно сразу при выводе через JS перекинуть подпунктом в нужное мне место, но... это выглядит немного костыльно. Поэтому решил уточнить, является ли это временным упущением, или же так и задумано и нужно костылить?
Состав главного меню можно модифицировать с помощью хука backend_extended_menu — примерно таким кодом:
Пока не нашел способа добавить свой action-обработчик для hash-url. Как - понимаю. Куда - непонятно. Судя по тому, что вижу, backend_products.sidebar_section для этого подходит. Но есть пара нюансов.
1. Он не работает. По крайней мере у меня в 2.0 никак не хочет. Только в старом интерфейсе.
2. Этот хук используется в старом интерфейсе в совсем другом ключе. Тут по идее должен быть backend_menu.
3. Вижу в главном меню магазина задвоение backend_products.sidebar_top_li. Правда всё равно не работают.
Для чего вам это нужно? Что вы хотите реализовать таким способом?
Загрузку контента для моей ссылки. Да, можно сделать обычную ссылку на страницу плагина, там добавить нужный layout и работать будет. Пусть и с перезагрузкой страницы. Но я делаю не новый плагин, а внедряю поддержку 2.0 в старом. А там хэш-ссылки вида ?action=reports#/arrived/. Можете глянуть плагин arrived, если хотите нагляднее понять.
Без этого вид ссылок в 2.0 будет отличаться от прежних. Что не есть гут. При переключении с 1.3 на 2.0(или наоборот) всё сломается. Можно конечно и для старого интерфейса переделать ссылки. Но, во-первых, я пока не уверен, что там это получится. Во-вторых, переход по прямой ссылке(из какого-нибудь старого уведомления), который работал раньше, работать перестанет. Ну и... вроде написано, что все хуки на прежних местах. Так что прежде, чем переделывать, я лучше уточню.
Вопрос пока актуален. Тормозит работу, ибо так и не понятно в каком направлении идти дальше.
Добавили такую возможность в бета-версии Shop-Script X и в недавней выгрузке на GitHub.
1. В обработчике хука backend_reports сделайте одно из двух:
а) Или выполните код вида
б) Или верните результат вида
2.Если используется вариант 1а), то в подключённом JavaScript-файле (в примере это js/reports.js) добавьте обработчик события shop_reports_init с аналогичным кодом запроса к контроллеру плагина:
Чет я не могу найти... А как товар с дробными то сделать?
Настройки → единицы измерения и условия добавления товаров в корзину