MiniShop3 1.2.0 - 1.3.0 Самое интересное
Друзья, взял за правило, выпускать еженедельные релизы с исправлениями багов, которые вы старательно присылаете, а также с поэтапными улучшениями системы, основанными на ваших же вопросах и предложениях.
Мне не хватает времени и желания описывать каждый релиз отдельно, потому сегодня обзор самого интересного за месяц в честь выхода версии 1.3.0
Ранее был доступен статичный сниппет, для желающих отобразить на экране краткую статистику по заказу, без корзины. Добавил свежий чанк для оформления, добавил стилей, добавил поддержку в JS. Теперь он обновляется как и корзина. на любые события.
Вызов на странице:
Выяснился неприятный баг. В pdoTools по умолчанию вшита поддержка доп категорий минишопа. Когда мы вызываем сниппет msProducts — тот в свою очередь поручает всю работу pdoTools — который не работает с MiniShop3. Пришлось взять всю работу на себя и прямо внутри сниппета реализовать работу с категориями. Как физической, так и виртуальной. Заодно решил еще одну фундаментальную проблему.
PdoTools, показывая в категории все товары, в том числе вложенные в дочерние категории, строит довольно неприятный запрос в базу данных. Он берет текущую категорию и засовывает в запрос перечень ID ВСЕХ вложенных ресурсов, не обращая внимания, товары это или категории товаров. Итого в запросе могут быть десятки тысяч ID. Я эту проблему решил, сократив запрос на тестовом сайте количество ID с 40 000+ до 20+ (просто 20, без тысяч). Это значит теперь каталог будет строиться существенно быстрее, потребляя меньше памяти.
Сразу же сделал PR для miniShop2 — надеюсь @Евгений Webinmd который любезно присматривает за старичком проверит его и выпустит релиз.
В разделе админки «Свои поля» появился новый тип — выпадающий список с фиксированными значениями.
Как создать:
1. Идём в Приложения → MiniShop3 → Утилиты → Свои поля
2. Создаём новое поле, выбираем тип «Выпадающий список»
3. В поле «Опции» указываем варианты в формате:
В карточке товара появится выпадающий список с этими вариантами.
Теперь стоимость заказа пересчитывается автоматически когда:
Если у вас MySQL версии 8.0 и выше — теперь всё работает без ошибок. В MySQL 8 появились новые зарезервированные слова, из-за которых некоторые запросы падали. Исправлено.
При оформлении заказа теперь проверяются обязательные поля. Если в настройках доставки указаны правила валидации (например, обязательный адрес) — система не даст оформить заказ без этих данных.
Настройка правил: Приложения → MiniShop3 → Настройки → Доставка → (выбрать доставку) → Правила валидации.
Страница редактирования товара стала удобнее. Вкладка «Товар» теперь содержит подвкладки:
В принципе, повторил путь miniShop2. Василий в свое время тоже сначала расположил все вкладки в одну линию, потом по мере развития компонентов уперся в то, что вкладок стало много и родные для минишопа переехали ниже, став вложенными.
Если вы пишете свои компоненты и хотите добавить вкладку в карточку товара — теперь это просто:
Мне не хватает времени и желания описывать каждый релиз отдельно, потому сегодня обзор самого интересного за месяц в честь выхода версии 1.3.0
Виджет msOrderTotal обновляется на лету.
Ранее был доступен статичный сниппет, для желающих отобразить на экране краткую статистику по заказу, без корзины. Добавил свежий чанк для оформления, добавил стилей, добавил поддержку в JS. Теперь он обновляется как и корзина. на любые события.
Вызов на странице:
<div id="orderTotalBlock">
{'!msOrderTotal' | snippet :'selector' => '#orderTotalBlock']}
</div>Что покажет:<span class="ms3-order-total">
<span class="ms3-order-total__count">10</span>
<span class="ms3-order-total__cost">14400 руб.</span>
</span>Добавили товар — сумма обновилась. Убрали — тоже. Без перезагрузки страницы.Товары из дополнительных категорий
Выяснился неприятный баг. В pdoTools по умолчанию вшита поддержка доп категорий минишопа. Когда мы вызываем сниппет msProducts — тот в свою очередь поручает всю работу pdoTools — который не работает с MiniShop3. Пришлось взять всю работу на себя и прямо внутри сниппета реализовать работу с категориями. Как физической, так и виртуальной. Заодно решил еще одну фундаментальную проблему.
PdoTools, показывая в категории все товары, в том числе вложенные в дочерние категории, строит довольно неприятный запрос в базу данных. Он берет текущую категорию и засовывает в запрос перечень ID ВСЕХ вложенных ресурсов, не обращая внимания, товары это или категории товаров. Итого в запросе могут быть десятки тысяч ID. Я эту проблему решил, сократив запрос на тестовом сайте количество ID с 40 000+ до 20+ (просто 20, без тысяч). Это значит теперь каталог будет строиться существенно быстрее, потребляя меньше памяти.
Сразу же сделал PR для miniShop2 — надеюсь @Евгений Webinmd который любезно присматривает за старичком проверит его и выпустит релиз.
Новый тип поля — Выпадающий список
В разделе админки «Свои поля» появился новый тип — выпадающий список с фиксированными значениями.
Как создать:
1. Идём в Приложения → MiniShop3 → Утилиты → Свои поля
2. Создаём новое поле, выбираем тип «Выпадающий список»
3. В поле «Опции» указываем варианты в формате:
new==Новый
used==Б/У
refurbished==ВосстановленныйФормат: значение==подпись (каждый вариант с новой строки).В карточке товара появится выпадающий список с этими вариантами.
Автоматический пересчёт стоимости
Теперь стоимость заказа пересчитывается автоматически когда:
- Меняете способ доставки
- Меняете способ оплаты
- Добавляете/удаляете товары из корзины
Совместимость с MySQL 8.0
Если у вас MySQL версии 8.0 и выше — теперь всё работает без ошибок. В MySQL 8 появились новые зарезервированные слова, из-за которых некоторые запросы падали. Исправлено.
Валидация заказа
При оформлении заказа теперь проверяются обязательные поля. Если в настройках доставки указаны правила валидации (например, обязательный адрес) — система не даст оформить заказ без этих данных.
Настройка правил: Приложения → MiniShop3 → Настройки → Доставка → (выбрать доставку) → Правила валидации.
Админка: вложенные вкладки товара
Страница редактирования товара стала удобнее. Вкладка «Товар» теперь содержит подвкладки:
- Свойства — основные поля товара
- Галерея — изображения
- Категории — привязка к категориям
- Связи — связанные товары
- Опции — цвет, размер и т.д.
В принципе, повторил путь miniShop2. Василий в свое время тоже сначала расположил все вкладки в одну линию, потом по мере развития компонентов уперся в то, что вкладок стало много и родные для минишопа переехали ниже, став вложенными.
Для разработчиков: Plugin Registry
Если вы пишете свои компоненты и хотите добавить вкладку в карточку товара — теперь это просто:
window.MS3ProductTabsRegistry.register({
key: 'my-custom-tab',
title: 'Мои данные',
component: MyVueComponent
});Ваша вкладка появится рядом со стандартными. Работает без пересборки MiniShop3. Можно добавлять вкладки как на Vue, так и на extJSПрочие исправления
- Корзина больше не пропадает после авто-регистрации клиента
- Галерея работает стабильно (загрузка/удаление изображений)
- Пагинация в настройках производителей и связей товаров
- Email-уведомления отправляются корректно
- Множество мелких улучшений интерфейса
Поблагодарить автора
Отправить деньги
Комментарии: 23
У меня без перезагрузки страницы вообще данные не меняются нигде не в корзине, не в msOrderTotal, товары в корзине удаляются но исчезают только после перезагрузки. Пришлось временно подключать Jquery. Что не так не пойму, в минишоп2 таких траблов не было, все работало с коробки.
Какую версию MiniShop3 используете? Покажите вызов сниппета корзины
1.3
по разному пробовали к примеру
{'!msCart' | snippet: ['tpl' => 'tpl.msCart']}
может конечно дело в selector
по разному пробовали к примеру
{'!msCart' | snippet: ['tpl' => 'tpl.msCart']}
может конечно дело в selector
может конечно дело в selectorИменно так. Параметр selector отвечает именно за обновление корзины на лету, без него JS просто не знает куда вставлять обновленную корзину.
да так и есть, упустили этот момент в туториале. впервые работаем с модх)) кстати у вас ошибка в тексте про order total в описание кода пропущена [. все ломается сразу))
При добавлении tv- migx для категории товара Minishop3 поле типа richtext шакалит, может сталкивались с таким?
Подскажите, пожалуйста, пытаюсь добавить свое кастомное поле в свойства товара MiniShop3 1.3.0-beta-1.
MiniShop3 — Утилиты — Свои поля — Создать поле. Форму заполняю как у вас в примере:
Ключ: wholesale_price
Название: Оптовая цена
xtype: numberfield
dbtype: decimal
Precision: 12,2
phptype: float
Default: NULL
Index: NONE
В результате получаю ошибку — Ошибка создания Failed to create field in database
MiniShop3 — Утилиты — Свои поля — Создать поле. Форму заполняю как у вас в примере:
Ключ: wholesale_price
Название: Оптовая цена
xtype: numberfield
dbtype: decimal
Precision: 12,2
phptype: float
Default: NULL
Index: NONE
В результате получаю ошибку — Ошибка создания Failed to create field in database
Попробовал на чистом, с нуля поднятом сайте — ошибку подтвердить не получилось. Все работает. Возможно проблема локальная или связана с конкретно вашим софтом Уточните какая у вас СУБД, версия PHP?
mysql и 8.2.29
msOrderTotal регистрирует все изменения только пока браузер открыт, после нового открытия браузера все пусто, пока не произвести действие с корзиной или товаром.
Привет! Хоть у ms3 указана совместимость с php >= 8.1, однако тянутся библиотеки symfony/*, которые просят php >= 8.2.
Более того, если используется на сайте 8.1 — то установку «клинит», сайт перестает работать вообще, выводится ошибка типа минимальная версия 8.2. И с другими компонентами тоже самое (mFilter и mSearch)
Да, есть такое) при попытке установить на 8,1 сломается все с концами
Это при актуальном 8.5 то. Может не стоит пытаться оживить давно умирающего дедушку?
конечно нет, просто в описании компонента нужно актуализировать версию пэхэпэ
Николай сделай пожалуйста, невозможность установки компонентов если версия меньше 8.2.
А то если на сайте 8.1, потребуется восстановление из резервной копии) после попытки установить компонент.
А то если на сайте 8.1, потребуется восстановление из резервной копии) после попытки установить компонент.
Переключил минммальную версию в modStore. Программно заменю при следующем обновлении
Подскажите, никак не получается понять почему — почему вывод корзины не работает после авторизации? причем добавление товаров уже после авторизации, ничего не решает, корзины не видно, так же не видно мини корзинки, все пусто. Может ге в системе что то щелкнуть нужно? типа сессий, итд?
Сложно сказать. Впервые про такую проблему слышу. Вы можете написать мне в телеграм доступы — вместе посмотрим
Добрый день! При обновлении modx 3.1.2 до 3.2.0 появились ошибки
Fatal error: Uncaught TypeError: array_diff_key(): Argument #1 ($array) must be of type array, string given in /home/setup/includes/upgrade.install.php:254 Stack trace: #0 /home/setup/includes/upgrade.install.php(254): array_diff_key('{"mscategory_sa...', Array) #1 /home/setup/includes/runner/modinstallrunnerweb.class.php(78): include('/home/hostcweb/...') #2 /home/setup/includes/runner/modinstallrunner.class.php(49): modInstallRunnerWeb->execute(1) #3 /home/setup/controllers/install.php(34): modInstallRunner->run(1) #4 /home/setup/includes/request/modinstallrequest.class.php(81): include('/home/hostcweb/...') #5 /home/setup/index.php(30): modInstallRequest->handle() #6 {main} thrown in /home/setup/includes/upgrade.install.php on line 254, оказалось, что в modx_access_policies у modx_access_policies стоял 0 template, а в data "{\"mscategory_save\":true,\"msproduct_save\":true,\"msproduct_publish\":true,\"msproduct_delete\":true,\"msorder_save\":true,\"msorder_view\":true,\"msorder_list\":true,\"msorder_remove\":true,\"mssetting_save\":true,\"mssetting_view\":true,\"mssetting_list\":true,\"msproductfile_save\":true,\"msproductfile_generate\":true,\"msproductfile_list\":true}", убрал лишние кавычки и /, поставил 8 шаблон руками, после этого modx обновился. Это баг minishop3 или я где-то напортачил?
Добрый день!
Это исправлено в github.com/modx-pro/MiniShop3/pull/107, в ближайшее время выйдет новая версия. @Николай Савин fyi
Это исправлено в github.com/modx-pro/MiniShop3/pull/107, в ближайшее время выйдет новая версия. @Николай Савин fyi
так же при обновлении minishop3 до версии 1.5.0-beta1 ошибка
[MiniShop3] System routes are in: core/components/minishop3/config/routes/
[MiniShop3] Scheduler not installed, skipping task registration. Install Scheduler component to enable background task processing.
PHP warning: Undefined array key "desc"
PHP warning: Undefined array key "desc"
Успешно установлен пакет minishop3-1.5.0-beta1
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.