Beta релиз minishop2 3.0

Друзья,с прошлого анонса обновления miniShop2 прошло какое-то время. Обновление было хорошо оттестировано. Релиз был дополнен большим количеством исправлений. Стал более стабильным.
Я перевел все свои проекты, с которыми работаю на постоянной основе на эту версию. Полет нормальный.

Перед официальным релизом, который будет доступен все в репозиториях MODX решил выпустить Бета версию и еще раз рассказать что нового, как правильно адаптировать проекты.


Новые и существующие магазины


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

Для существующих магазинов все несколько сложнее.
Вы скорее всего сломаете сайт, не проведя предварительную подготовку.
Обновлять боевые проекты СТРОГО НЕ РЕКОМЕНДУЕТСЯ

Проводить предварительную подготовку магазина и его тестирование желательно в отдельной тестовой версии магазина.

Я уже достаточно подробно рассказывал о подготовке магазина к обновлению в предыдущих заметках
Еще раз кратко перечислю, основные изменения, которые нужно учитывать.

Что нового



1. Расположение основных контроллеров-хэндлеров.

В текущей стабильной версии минишопа (как и во всех предыдущих версиях) файлы хендлеры (их список ниже) расположены в каталоге /core/components/minishop2/model/minishop2/ в перемешку с другими служебными файлами системы.
  • mscarthandler.class.php
  • msdeliveryhandler.class.php
  • msorderhandler.class.php
  • mspaymenthandler.class.php
В новой версии для таких файлов создан отдельный каталог.
Почему это важно знать?

С большой долей вероятности ваш магазин, если он более-менее крупный — имеет дополнительные файлы в каталоге /core/components/minishop2/custom/, которые помогают реализовать какие-то индивидуальные моменты бизнес-логики магазина.
Такие файлы обращаются к основным служебным контроллерам компонента, которые я перечислил выше. Так как их местоположение изменилось — то могут появиться ошибки в работе.

2. Добавлен новый режим хранения корзины и временных полей заказа.

Все предыдущие стабильные версии ms2 хранили временные данные в сессии. В новом релизе добавлен вариант хранения корзины и временных полей заказа сразу в базе данных.

Главная проблема с которой можно столкнуться на старых сайтах, и внутри старых компонентов — обращение напрямую к сессии.

Правильный путь обращения к корзине
$cart = $ms->cart->get();

Не правильный путь обращения к корзине (он ничего не даст, в случае если включен режим хранения корзины в базе данных)
$cart = $_SESSION['minishop2']['cart']
Та же история с обращением к временным полям заказа

Правильны путь
$cart = $ms->order->get();

Не правильный путь обращения к полям заказа
$cart = $_SESSION['minishop2']['order']

В общем если у вас на сайте встречается прямое упоминание $_SESSION['minishop2'] — и при этом вы хотите хранить корзину в базе данных — нужно избавляться от таких конструкций.

3. Существенно изменен исходный код хэндлеров корзины и заказа
  • mscarthandler.class.php
  • msorderhandler.class.php
Если у вас на сайте используются отдельные файлы, дополняющие бизнес-логику корзины и заказа — рекомендую переписать их логику заново, используя обновленный код базовых контроллеров.

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

К примеру ранее удаление товара из корзины выглядело вот так:
unset($this->cart[$key]);

Стало вот так
$this->cart = $this->storageHandler->remove($key);

Как установить


Релиз доступен в официальном репозитории компонента на github в отдельной ветке modx_3_beta

Перейдя по ссылке вы можете скачать Zip архив и распаковать его или клонировать репозиторий внутрь вашего сайта командой
git clone https://github.com/modx-pro/miniShop2.git -b ms_3.0_beta
После получения дистрибутива компонента — запустите установку. Для этого выполните команду
php minishop2/_build/build.transport.php
Или просто откройте файл
minishop2/_build/build.transport.php в браузере. Так установка тоже запустится.

Подробнее о методике тестирования была отдельная заметка.

Не стесняйтесь писать о результатах тестирования, и адаптации ваших проектов. Я постараюсь ответить на все вопросы и помочь с переходом ваших проектов на новый релиз.

По просьбам создан сбор на дальнейшее развитие miniShop2
Огромное спасибо, всем кто поддерживает проект рублем! Именно благодаря вам, у нас получается выделить больше времени для того, чтобы сделать ваши проекты еще современнее.
Николай Савин
07 марта 2022, 14:59
modx.pro
479
+17
Поблагодарить автора Отправить деньги

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

Андрей Шевяков
07 марта 2022, 19:09
0
Спасибо огромное! Куда задонатить на дальнейшее развитие?
Тут нет ссылок(((
Отправить донат с карты
Отправить донат на Яндекс. Деньги
Отправить донат на Qiwi
    Николай Савин
    07 марта 2022, 20:06
    0
    Да, действительно Конфуз вышел. Поправил.
    Ссылки Российские. Не уверен, что я теперь с них смогу что-то получить. Как и не каждый сможет собственно их использовать.
    Если Кто хочет задонатить лично мне на Казахстанские реквизиты — дайте знать.
    Илья Уткин
    08 марта 2022, 05:10
    +1
    • mscarthandler.class.php
    • msdeliveryhandler.class.php

    • msorderhandler.class.php
    • mspaymenthandler.class.php
    В новой версии для таких файлов создан отдельный каталог.
    В качестве идеи, как упростить обновление существующих магазинов. Где-то я такое видел, мне кажется логичным:

    Можно добавить в новую версию файлы по старым путям, но в коде файлов делать просто include правильных файлов. И в комментариях пометить эти файлы как deprecated. А потом, в версии 3.1 или 3.2 убалить эти файлы. В итоге если человек обновлялся с версии 2.х до 3.0, у него файлы будут существовать и ничего не сломается, а на новых установках, начиная с 3.1 файлов deprecated не будет.
      Николай Савин
      08 марта 2022, 09:42
      +2
      Это уже сделано.
        Ivan
        15 марта 2022, 20:36
        0
        Есть ли в планах избавиться от jQuery?
          Николай Савин
          16 марта 2022, 10:11
          +1
          Да, в оптимистичных планах думаем это решить в текущем году.
          Но тут вопрос не только в Jquery — планируется полностью с нуля написать всю JS оболочку, так как та, что есть сильно отстала по времени.
          Ivan
          15 марта 2022, 20:38
          0
          О заметил ошибку на модх.про. Если нажать Ответить, а затем кнопку Написать комментарий, то он все равно ответит человеку, а не напишет новый комментарий(
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      8