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 в формате «было — стало»:

Просьба: если где-то с хуками что-то не так, если где-то ваш плагин не подключается, если что-то непонятно — ждем вашей обратной связи ниже в комментариях!

И на всякий случай еще раз ссылка на документацию по дизайн-системе Webasyst 2 — приложение UI.

12 ответов

  • 2
    Евгений Леман 28 марта 2023 13:26 #
    Все хуки для плагинов мы сохранили на прежних местах.

    backend_reports, backend_product - этих не нашел.

    • +1
      Syrnik.com Syrnik.com 28 марта 2023 15:47 #

      Если переключиться в режим UI1.3 backend_product на месте. А новый редактор уже давно не использует хуки backend_product

    • +1
      Михаил Ушенин Михаил Ушенин Webasyst 28 марта 2023 16:25 #

      Хук backend_reports вам нужен для того, чтобы добавить ссылку на свой отчёт ниже пункта главного меню «Отчёты → Товары» в новом интерфейсе?

      • +1
        Евгений Леман Евгений Леман 28 марта 2023 23:34 #

        Совершенно верно. У меня плагин выводит свои отчеты. Пока я вижу способ как вывести свою ссылку первым уровнем в меню. Но если каждый будет так делать, то всё превратится в кашу. А выводимая мной информация не так часто нужна, чтобы быть всегда на виду. Можно конечно сразу при выводе через JS перекинуть подпунктом в нужное мне место, но... это выглядит немного костыльно. Поэтому решил уточнить, является ли это временным упущением, или же так и задумано и нужно костылить?

        • +2
          Михаил Ушенин Михаил Ушенин Webasyst 29 марта 2023 12:53 #

          Состав главного меню можно модифицировать с помощью хука backend_extended_menu — примерно таким кодом:

          array_push($params['menu']['reports']['submenu'], [
              "url" => wa('shop')->getAppUrl(null, true) . '?plugin=some_plugin',
              "name" => _wp('some_plugin'),
          ]);

          • +1
            Евгений Леман Евгений Леман 1 апреля 2023 06:26 #

            Пока не нашел способа добавить свой action-обработчик для hash-url. Как - понимаю. Куда - непонятно. Судя по тому, что вижу, backend_products.sidebar_section для этого подходит. Но есть пара нюансов.

            1. Он не работает. По крайней мере у меня в 2.0 никак не хочет. Только в старом интерфейсе.

            2. Этот хук используется в старом интерфейсе в совсем другом ключе. Тут по идее должен быть backend_menu.

            3. Вижу в главном меню магазина задвоение backend_products.sidebar_top_li. Правда всё равно не работают.

            • +1
              Михаил Ушенин Михаил Ушенин Webasyst 3 апреля 2023 09:56 #

              добавить свой action-обработчик для hash-url

              Для чего вам это нужно? Что вы хотите реализовать таким способом?

              • +1
                Евгений Леман Евгений Леман 3 апреля 2023 14:59 #

                Загрузку контента для моей ссылки. Да, можно сделать обычную ссылку на страницу плагина, там добавить нужный layout и работать будет. Пусть и с перезагрузкой страницы. Но я делаю не новый плагин, а внедряю поддержку 2.0 в старом. А там хэш-ссылки вида ?action=reports#/arrived/. Можете глянуть плагин arrived, если хотите нагляднее понять.

                Без этого вид ссылок в 2.0 будет отличаться от прежних. Что не есть гут. При переключении с 1.3 на 2.0(или наоборот) всё сломается. Можно конечно и для старого интерфейса переделать ссылки. Но, во-первых, я пока не уверен, что там это получится. Во-вторых, переход по прямой ссылке(из какого-нибудь старого уведомления), который работал раньше, работать перестанет. Ну и... вроде написано, что все хуки на прежних местах. Так что прежде, чем переделывать, я лучше уточню.

                • +1
                  Евгений Леман Евгений Леман 8 апреля 2023 21:04 #

                  Вопрос пока актуален. Тормозит работу, ибо так и не понятно в каком направлении идти дальше.

            • +3


              Пока не нашел способа добавить свой action-обработчик для hash-url

              Добавили такую возможность в бета-версии Shop-Script X и в недавней выгрузке на GitHub.

              1. В обработчике хука backend_reports сделайте одно из двух:

              а) Или выполните код вида

              $this->addJs('js/reports.js');

              б) Или верните результат вида

              [
                  'html' => <<<HTML
              <script>
                  $.reports.mypluginAction = function(params) {
                      this.load('?plugin=myplugin&module=reports');
                  };
              </script>
              HTML
              ]

              2.Если используется вариант 1а), то в подключённом JavaScript-файле (в примере это js/reports.js) добавьте обработчик события shop_reports_init с аналогичным кодом запроса к контроллеру плагина:

              $(document).on('shop_reports_init', function() {
                  $.reports.mypluginAction = function(params) {
                      this.load('?plugin=myplugin&module=reports');
                  };
              });
  • 1
    Евгений Леман 20 мая 2023 20:46 #

    Чет я не могу найти... А как товар с дробными то сделать?

    • +1
      Syrnik.com Syrnik.com 21 мая 2023 15:57 #

      Настройки → единицы измерения и условия добавления товаров в корзину

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите