[miniShop2 4.0.0 - alpha] - анонс обновления

Внезапно, даже для себя, без громких анонсов и обсуждений команда проекта miniShop пришла к необходимости и возможности выпуска новой мажорной версии любимого компонента.

Представляю вашему вниманию анонс miniShop2 версии 4.0.0 для MODX2



Откуда вообще взялся новый релиз?

Вообще-то первоначальные планы и график разработки был связан с анонсированным ранее MiniShop3 для MODX3.
К нам присоединяется все больше свободных рук и давно поставленные задачи находят исполнителей! Так получается что в miniShop2 у ребят больше опыта (логично правда?), больше скопившихся готовых решений, больше желания что-то улучшить. @Артур Шевченко предложил взять на себя разработку современного комплекта JS скриптов, на замену старенького родного набора. Это давно запланированная разработка, к которой никак не получалось приступить. Кроме того она будет актуальной и для MODX3

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

Список запланированных обновлений

Сразу уточню, что сейчас идет активная работа, но еще не все сделано и готово даже для тестирования.
Некоторые пункты уже реализованы, часть в работе, часть запланирована. О готовности к тестированию будет отдельная статья.

1. Новый комплект JS скриптов. Никакого jQuery. Только ванильный JavaScript версии ES6. Подключаемые независимые модули Корзины, Заказа, Уведомлений. Нативные события, поддержка колбэков. Еще больше свободы расширения, еще больше скорости. Больше информации здесь.

2. Больше не будет скриптов фотогалереи. Мы избавились от плагина fotorama, который всегда был в комплекте. Его все равно никто не использует. Плагины к верстке должны подключаться отдельно от компонента.

3. Наконец появится полноценная мини-корзина, а также сильно обновится логика работы с корзиной вообще. Теперь корзина будет перезаписываться на лету, без перезагрузки страницы.

4. Новый функционал — изменение опций внутри корзины.

5. Улучшенные возможности для работы через REST API с другого домена, из приложения, вне сессии.

6. Использование статусов становится более гибким. На сегодня базовые статусы заказов крепко вшиты в функционал miniShop2. К примеру, нельзя указать какой статус будет присваиваться заказу на старте. В логику просто забит статус с ID 1. Все платежные системы после оплаты устанавливают статус с ID 2 — и нельзя выбрать другой.

7. Удаляем старые контроллеры-хэндлеры, сейчас помеченные устаревшими. К примеру файл core/components/minishop2/model/minishop2/mscarthandler.class.php. Подобные файлы с версии 3.0 перенесены в отдельный каталог. На их месте были оставлены ссылки-заглушки. с вот таким содержимым.

if (!empty($this->modx->getOption('log_deprecated'))) {
    $this->modx->log(
        xPDO::LOG_LEVEL_ERROR,
        'Deprecated: use handlers from catalog core/components/minishop2/handlers/'
    );
}
require_once dirname(__FILE__, 3) . '/handlers/mscarthandler.class.php';


В анонсированном обновлении эти заглушки будут удалены.

8. Создание нового заказа из админки

9. Меняем схему взаимодействия объекта Заказа msOrder и АдресаЗаказа msOrderAddress.
Сейчас это независимые объекты. После обновления Адрес станет зависимым от Заказа объектом, дополняющим его. При удалении заказа, будет удаляться и адрес. Поле msOrder.address — будет удалено. Связь таблиц будет осуществляться через поле msOrderAddress.order_id

10. Новая сущность АдресКлиента. Реализуем полноценную возможность клиенту сохранять собственные адреса, выбирать их из списка при оформлении следующего заказа и копировать существующий адрес в Заказ. Такая задумка архитектурно была в miniShop2 изначально. Но почему-то не было ни интерфейса, ни реализации.

Еще раз о насущном

Как видите список изменений достаточно обширный. Многое из этого было сто раз обсуждено и спроектировано, но стало реально только сейчас и только благодаря вам — нашим спонсорам!

Не основную, но все равно важную роль играет финансовая поддержка сообщества. Больше ваша поддержка — больше времени получается выделить на решение задач.

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

Развитие MiniShop происходит исключительно благодаря Вам друзья!
Финансовая поддержка с вашей стороны, позволяет выделять больше времени на развитие сообщества и обновлять наши проекты, которые в свою очередь приносят пользу и вам.

Поддержать нас можно, используя следующие каналы для доната:
Огромное спасибо, всем кто поддерживает!
Николай Савин
12 сентября 2022, 21:23
modx.pro
2
878
+21
Поблагодарить автора Отправить деньги

Комментарии: 18

Иван Бочкарев
13 сентября 2022, 10:48
+1
Круто! Сочно! Молодцы =)
    Ivan
    13 сентября 2022, 17:43
    0
    А чем плоха Fotorama? я ее использую на нескольких проектах)) Еще использую slick (но эта галерея совсем древняя)

    Подскажите, в таком случае какую галерею использовать? Чтобы было современно, модно, молодёжно))
      Алексей Смирнов
      13 сентября 2022, 18:48
      +1
      Вы вольны использовать что нравиться.
      Я например фанси бокс с owl или swiper.
      От слика я ушел ТК подглючивала на определенных моментах которые были критичны.
      Роман
      13 сентября 2022, 21:48
      +2
      Поддержал, спасибо за работу.
        deleted
        20 сентября 2022, 17:03
        0
        Где-то читал, что планируются фильтры и сравнение. Реализовывал это на нескольких сайтов без сторонних компонентов. Нужна ли помощь?
          Николай Савин
          20 сентября 2022, 18:52
          0
          @Артур это к тебе наверное.
            Александр Туниеков
            20 сентября 2022, 19:50
            0
            Я пробовал делать компонент замену mFilter2. Вместо связки значение фильтра — ids ресурсов в массиве, хотел сделать эту связку в базе прописать и вытаскивать ids отфильтрованных ресурсов запросами. Но если отфильтровывает быстро, то подсказки на 100к товаров отрабатывают за сек 10. И если в mFilter2 улучшить кеширование, то разницы в скорости работы особо нет.
            Надеюсь понятно написал для тех кто в курсе как mFilter2 работает.
              Артур Шевченко
              20 сентября 2022, 23:35
              0
              Непонятно какие подсказки ты имеешь в виду, в mFilter есть подсчёт результатов по каждому фильтру, но для фильтров из коробки я этого делать не планировал. И в целом, я не считаю себя экспертом по фильтрации, поэтому скидывайте кейсы, посмотрим, допилим и внедрим.
                Александр Туниеков
                20 сентября 2022, 23:52
                0
                Да я про подсчет результатов. Почему-то называл всегда подсказками :-(
                поэтому скидывайте кейсы
                Сейчас код вне зоны доступа :-). Завтра скину
                  Артур Шевченко
                  20 сентября 2022, 23:57
                  0
                  Не горит.
                    Александр Туниеков
                    21 сентября 2022, 16:51
                    0
                    Не знаю как в прошлый раз тестировал. Тогда в моем компоненте mapFilter загрузка с подсчетом результатов на 10т товавов в каталоге выдавало около 10с, а сейчас первая загрузка около 1,2с а вторая с кешем mysql 0.0769041: Total time. (В каталоге 10т. товаров — это самый большой каталог. Всего товаров на сайте 27т.). Правда сейчас я чуть подшаманил и запрос делаю только для 1 каталога.
                    А вот прокешированный mFilter2 на этом же каталоге при загрузке из кеша массива ids ресурсов тратит 1.7866640: Total time. И при выборе какого-то фильтра делает suggestions 25с.
                    mapFilter:

                    mFilter2:


                    То есть mapFilter работает все таки быстрее mFilter2. И имеет смысл его доделывать. То есть, я не буду выкладывать код. В течении 2-3 месяцев доделаю и буду продовать :-).

                    пс. Почему-то mFilter2 ошибочно считает suggestions. Для женщин он посчитал 31 кольцо, а на самом деле их 4082.

                    пс2.
                    в mFilter есть подсчёт результатов по каждому фильтру, но для фильтров из коробки я этого делать не планировал
                    На самом деле, если сделали фильтры как в mFilter2, то suggestions уже просто посчитать. В mFilter2 это 100 строк кода всего.
                      Артур Шевченко
                      21 сентября 2022, 20:45
                      0
                      На самом деле, если сделали фильтры как в mFilter2, то suggestions уже просто посчитать.
                      Дело не в количестве строк кода, а в этом
                      И при выборе какого-то фильтра делает suggestions 25с.
                        Александр Туниеков
                        22 сентября 2022, 08:39
                        0
                        Решил описать кеширование mFilter2. Начал здесь https://modx.pro/development/23310
                          Александр Туниеков
                          23 сентября 2022, 15:35
                          0
                          @Артур после вчерашнего разбора mapFilter не сильно выигрывает у mFilter2. Так что его разработка обратно повисла.
                          Вообще участие в разработке Минишопа меня не сильно интересует. Он меня и в теущем виде устраивает, но вот фильтры для Минишопа интересуют. С ними проблемы есть.
                          mSearch2 платный компонент и дорабатывать его, чтоб деньги шли левому дяде меня обламывает :-).
                          Думаю, что участие в разработке бесплатных фильтров для Минишопа, мне интересно. Есть только одно препятствие. Я, обычно, пишу на jQuery. И на ванильный JS не спешу переходить. На jQuery удобней писать и есть мого примеров в интернете. Но если перед глазами будут лучшие примеры кода на ванильном JS, то писать на нем, конечно, смогу.
                          Примете в комманду? :-)
                            Артур Шевченко
                            23 сентября 2022, 18:45
                            0
                            Пиши JS как тебе удобно, я потом перепишу на Vanilla, @Баха Волков проверит))) А что касается возьмём в команду или нет, конечно да, от тебя PR с фильтрами)))
                Артур Шевченко
                20 сентября 2022, 23:32
                0
                Конечно нужна, есть репозиторий с кодом?
                  deleted
                  20 сентября 2022, 23:35
                  0
                  Нет, могу либо доступ к сайту дать, либо на pastebin код скинуть
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              18