Beta релиз minishop2 3.0
Друзья,с прошлого анонса обновления miniShop2 прошло какое-то время. Обновление было хорошо оттестировано. Релиз был дополнен большим количеством исправлений. Стал более стабильным.
Я перевел все свои проекты, с которыми работаю на постоянной основе на эту версию. Полет нормальный.
Перед официальным релизом, который будет доступен все в репозиториях MODX решил выпустить Бета версию и еще раз рассказать что нового, как правильно адаптировать проекты.
Если вы только начинаете разрабатывать магазин — можете смело запускать beta версию. Она достаточно стабильна в работе. Проблемы могут возникнуть только при использовании компонентов, авторы которых не учли особенности нового релиза и не подготовили обновления.
Для существующих магазинов все несколько сложнее.
Вы скорее всего сломаете сайт, не проведя предварительную подготовку.
Обновлять боевые проекты СТРОГО НЕ РЕКОМЕНДУЕТСЯ
Проводить предварительную подготовку магазина и его тестирование желательно в отдельной тестовой версии магазина.
Я уже достаточно подробно рассказывал о подготовке магазина к обновлению в предыдущих заметках
Еще раз кратко перечислю, основные изменения, которые нужно учитывать.
1. Расположение основных контроллеров-хэндлеров.
В текущей стабильной версии минишопа (как и во всех предыдущих версиях) файлы хендлеры (их список ниже) расположены в каталоге /core/components/minishop2/model/minishop2/ в перемешку с другими служебными файлами системы.
Почему это важно знать?
С большой долей вероятности ваш магазин, если он более-менее крупный — имеет дополнительные файлы в каталоге /core/components/minishop2/custom/, которые помогают реализовать какие-то индивидуальные моменты бизнес-логики магазина.
Такие файлы обращаются к основным служебным контроллерам компонента, которые я перечислил выше. Так как их местоположение изменилось — то могут появиться ошибки в работе.
2. Добавлен новый режим хранения корзины и временных полей заказа.
Все предыдущие стабильные версии ms2 хранили временные данные в сессии. В новом релизе добавлен вариант хранения корзины и временных полей заказа сразу в базе данных.
Главная проблема с которой можно столкнуться на старых сайтах, и внутри старых компонентов — обращение напрямую к сессии.
Правильный путь обращения к корзине
Не правильный путь обращения к корзине (он ничего не даст, в случае если включен режим хранения корзины в базе данных)
Правильны путь
Не правильный путь обращения к полям заказа
В общем если у вас на сайте встречается прямое упоминание $_SESSION['minishop2'] — и при этом вы хотите хранить корзину в базе данных — нужно избавляться от таких конструкций.
3. Существенно изменен исходный код хэндлеров корзины и заказа
Если кратко — то сам контроллер перестал выполнять какие-либо прямые манипуляции с корзиной и заказом.
Раньше он делал всю работу сам, теперь Контроллер передает запрошенную операцию отдельному классу-помощнику, и ему без разницы, что делает с корзиной помощник. Причем классы-помощники разные для каждого из режимов хранения данных. Каждый из таких классов выполняет манипуляции с корзиной и заказом по-своему.
Класс работы с базой данных ищет и модифицирует определенный заказ.
Класс работы с сессией — дополняет сессию.
К примеру ранее удаление товара из корзины выглядело вот так:
Стало вот так
Релиз доступен в официальном репозитории компонента на github в отдельной ветке modx_3_beta
Перейдя по ссылке вы можете скачать Zip архив и распаковать его или клонировать репозиторий внутрь вашего сайта командой
minishop2/_build/build.transport.php в браузере. Так установка тоже запустится.
Подробнее о методике тестирования была отдельная заметка.
Не стесняйтесь писать о результатах тестирования, и адаптации ваших проектов. Я постараюсь ответить на все вопросы и помочь с переходом ваших проектов на новый релиз.
По просьбам создан сбор на дальнейшее развитие 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
Огромное спасибо, всем кто поддерживает проект рублем! Именно благодаря вам, у нас получается выделить больше времени для того, чтобы сделать ваши проекты еще современнее.
Поблагодарить автора
Отправить деньги
Комментарии: 8
Спасибо огромное! Куда задонатить на дальнейшее развитие?
Тут нет ссылок(((
Тут нет ссылок(((
Отправить донат с карты
Отправить донат на Яндекс. Деньги
Отправить донат на Qiwi
Да, действительно Конфуз вышел. Поправил.
Ссылки Российские. Не уверен, что я теперь с них смогу что-то получить. Как и не каждый сможет собственно их использовать.
Если Кто хочет задонатить лично мне на Казахстанские реквизиты — дайте знать.
Ссылки Российские. Не уверен, что я теперь с них смогу что-то получить. Как и не каждый сможет собственно их использовать.
Если Кто хочет задонатить лично мне на Казахстанские реквизиты — дайте знать.
В качестве идеи, как упростить обновление существующих магазинов. Где-то я такое видел, мне кажется логичным:В новой версии для таких файлов создан отдельный каталог.
- mscarthandler.class.php
- msdeliveryhandler.class.php
- msorderhandler.class.php
- mspaymenthandler.class.php
Можно добавить в новую версию файлы по старым путям, но в коде файлов делать просто include правильных файлов. И в комментариях пометить эти файлы как deprecated. А потом, в версии 3.1 или 3.2 убалить эти файлы. В итоге если человек обновлялся с версии 2.х до 3.0, у него файлы будут существовать и ничего не сломается, а на новых установках, начиная с 3.1 файлов deprecated не будет.
Это уже сделано.
Есть ли в планах избавиться от jQuery?
Да, в оптимистичных планах думаем это решить в текущем году.
Но тут вопрос не только в Jquery — планируется полностью с нуля написать всю JS оболочку, так как та, что есть сильно отстала по времени.
Но тут вопрос не только в Jquery — планируется полностью с нуля написать всю JS оболочку, так как та, что есть сильно отстала по времени.
О заметил ошибку на модх.про. Если нажать Ответить, а затем кнопку Написать комментарий, то он все равно ответит человеку, а не напишет новый комментарий(
Привет! Напиши, пожалуйста здесь, чтобы мы не забыли поправить — github.com/modx-pro/Community/issues
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.