Релиз miniShop2 ver. 4.4.1 & 4.4.2

Добрый день!

Нашлось немного времени, чтобы провести «санитарную» работу в нашем любимом минишопе.
В репозитории было обработано и закрыто около 30 issue по разным причинам: это и дубли, и уже реализованный функционал, и узконаправленные пожелания.
Надеемся, никто не обиделся.
Спасибо всем, кто помогал находить и описывать эти issue!


Кроме этого были влиты пару некритичных PR с исправлениями:

### Fixed
— Исправления Vanila JS #939
— Исправлена опечатка в лексиконе #940
— Исправлен показ скидки при ненулевой старой цене #941

### Added
— Возможность изменять покупателя в плагине #926
— Добавлена возможность загружать изображения в галерею без расширения файла #943
— В схему добавлены поля remains и reserved #927

Новая версия в репозитории, перед обновлением не забываем про бэкапы.

06.10.2025
На данный момент, по косвенным признакам и парочке сообщений были выявлены 2 проблемы:
1. После обновления, в админ панели не отображаются товары. Такое происходит из-за того что новые поля не создались.
Быстрое решение:
Создать через phpMyAdmin 2 поля в таблице ms2_products
— remains (int)
— reserved (int)

2. Если есть плагин на событие msOnBeforeChangeOrderStatus или msOnChangeOrderStatus, то заказы создаются со статусом null
Быстрое решение:
В файле core/components/minishop2/model/minishop2/minishop2.class.php
Найти строку 'old_status' => $old_status->get('id'), и за комментрировать.

Напоминаю, что о найденных ошибках можно сообщать в репозитории github, либо тут в комментариях (касательно только версии 4.4.1) с подробным описанием как воспроизвести ошибку.

06.10.2025
Выпустили патч 4.4.2 с исправлением указанных ошибок
Евгений Webinmd
22 сентября 2025, 12:20
modx.pro
1 365
+13

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

Scorp Satex
22 сентября 2025, 14:04
0
Спасибо.

А есть какие-то новости по MiniShop3? Уже 8 месяцев проект не обновляется судя по
github.com/modx-pro/MiniShop3

Просто без этого компонента — не будет всего остального и народ так и будет на 2 ветке сидеть.
    Евгений Webinmd
    22 сентября 2025, 14:12
    +1
    есть только такой ответ на данный момент
      Василий Наумкин
      24 сентября 2025, 12:11
      +1
      Рад за Николая! Еще один разработчик вышел за пределы MODX и открыл для себя много интересного.

      Скопирую сюда его текст для удобства:


      Я еще в прошлом году от скуки сделал composer-версию, в которой перелопатил классы и добавил инсталлятор — но интереса никто не проявил.

      Думаю, выхода miniShop 3 можно уже и не ждать. Да и просто выйти — это только половина дела, его нужно поддерживать и дорабатывать, а желающих давно нет.
        Артур Шевченко
        24 сентября 2025, 14:38
        0
        Думаю, выхода miniShop 3 можно уже и не ждать
        Свято место пусто не бывает, вот @Aleksandr Huz разрабатывает свою экосистему на базе pageBlocks, тамбудет магазин

        Но и miniShop 3 я надеюсь выйдет, надо просто начать, а доработать можно и потом, в конец концов miniShop2 так и существует, в нём многое изменилось с момента первого релиза.
          Наумов Алексей
          24 сентября 2025, 15:36
          0
          А что начинать, вон альфа версия, пожалуйста: github.com/modx-pro/miniShop3/

          Альфа — это значит в целом то основное все работает. Собери небольшой магазин (может личный какой или для друзей), потестируй, что можно улучшить — присылай PR. Нюанс в том, что никто не делает этого, все предпочитают на двойке собирать.
    Andrey
    01 октября 2025, 10:13
    0
    Обновил два магазина, сломал два магазина. Откатил обратно
      Артур Шевченко
      05 октября 2025, 10:05
      0
      А почему бы не написать что конкретно сломалось? Религия не позволяет?
        Andrey
        05 октября 2025, 11:35
        0
        Ответ весьма остроумный. Надеюсь, такой же подход у тебя и в программировании
          Артур Шевченко
          05 октября 2025, 12:58
          +2
          Ага, именно такой: если что-то ломается, я стараюсь определить причину и, если проблема в компоненте, сообщаю делали ошибки разработчику, чтобы можно было их исправить. А всё на что тебя хватило, это сообщить нам как ты героически сломал два магазина и потом не менее героически их починил, только зачем сообществу эта информация? Ищешь сочувствия?
          Дмитрий
          25 ноября 2025, 16:30
          0
          Добрый день. Подскажите, какая версия php лучше подойдет 7.4., или с 8 тоже должно хорошо работать? Так же заметил, что c minishop2 4.4.0 если версия бд более новая (допустим 8.0.42-cll-lve), то при наполнении товаров или категорий сильно возрастает нагрузка на сервер (иногда 300% и сайт перестает работать). а многие хостинги ставят уже такую бд, и нужно постоянно просить, чтоб переносили на более старые сервера с бд 5.7.42-cll-lve. В версии 4.4.2? или причина нагрузки может быть в чем-то так и minishop2 хорошо работает и с 8.0.42-cll-lve?
            Николай Савин
            25 ноября 2025, 19:28
            0
            Здравствуйте. Стабильная версия PHP для minishop2 — это 7.4. До 8.1 тоже все работает, но могут быть проблемы с подключаемыми компонентами. Что касается СУБД — рекомендую использовать mariaDB 10.6 — она довольно современна, но при этом не вызывает проблем.
            Оптимизацию под mysql 8 насколько я знаю специально никто не делал. Вернее закрывали ряд проблем, но не все.
            Насчет возрастания нагрузки не знаю что сказать. Таких замечаний отдельно не встречал никогда.

            Если вы хотите вы можете заказать оптимизацию минишоп2 под mysql8 — я думаю сделаем. Можете попробовать организовать сбор средств.

            Ну и замечу что начинается эпоха MiniShop3 — он уже почти готов и к новому году я думаю увидит свет в магазине дополнений Modstore
              Дмитрий
              26 ноября 2025, 08:43
              0
              Спасибо за ответ!
          Марат
          06 октября 2025, 05:36
          0
          Последняя безумкинская версия минишопа — 2.4
          Сергей Карпович
          04 октября 2025, 19:56
          0
          я успел сломать только один =)
            Дмитрий
            26 ноября 2025, 08:46
            0
            Доброе утро.
            [2025-11-25 23:10:22] (ERROR @ /home/public_html/core/components/msdiscount/model/msdiscount/msdiscount.class.php : 452) PHP warning: Illegal offset type
            [2025-11-25 23:10:22] (ERROR @ /home/public_html/core/components/msdiscount/model/msdiscount/msdiscount.class.php : 412) PHP warning: Illegal offset type in isset or empty
            [2025-11-25 23:10:22] (ERROR @ /home/public_html/core/xpdo/om/xpdoobject.class.php : 240) Error 42S22 executing statement: 
            Array
            (
                [0] => 42S22
                [1] => 1054
                [2] => Unknown column 'msProduct.article' in 'where clause'
            )
            Появились такие ошибки( Версия minishop2 4.4.2.
              Николай Савин
              26 ноября 2025, 10:55
              0
              Проверь наличие поля article в таблице ms2_products.
              Это стандартное поле, оно всегда было в минишопе. Никаких манипуляций с ним никогда не производилось.
                Дмитрий
                26 ноября 2025, 11:37
                0
                есть поле prnt.sc/gTm16QUgah9S
                вот часть кода
                public function getProductGroups($id) {
                		if (isset($this->cache['products'][$id])) {
                			return $this->cache['products'][$id];
                		}
                		$groups = array();
                
                		if ($product = $this->modx->getObject('msProduct', $id)) {
                			$ids = $this->modx->getParentIds($id, 10, array('context' => $product->get('context_key')));
                			$ids[] = $id;
                		}
                		else {
                			$ids = array($id);
                		}
                		$q = $this->modx->newQuery('msCategoryMember', array('product_id' => $id));
                		$q->select('category_id');
                		$tstart = microtime(true);
                		if ($q->prepare() && $q->stmt->execute()) {
                			$this->modx->queryTime += microtime(true) - $tstart;
                			$this->modx->executedQueries++;
                			if ($tmp = $q->stmt->fetchAll(PDO::FETCH_COLUMN)) {
                				$ids = array_merge($ids, $tmp);
                			}
                		}
                		$ids = array_unique($ids);
                		$where = count($ids) > 1
                			? array('document:IN' => $ids)
                			: array('document' => $ids[0]);
                
                		$q = $this->modx->newQuery('modResourceGroupResource', $where);
                		$q->leftJoin('msdProductGroup', 'msdProductGroup', 'msdProductGroup.id = modResourceGroupResource.document_group');
                		$q->select('document_group, discount');
                		$q->sortby('discount');
                		$q->groupby('modResourceGroupResource.id');
                		$tstart = microtime(true);
                		if ($q->prepare() && $q->stmt->execute()) {
                			$this->modx->queryTime += microtime(true) - $tstart;
                			$this->modx->executedQueries++;
                			while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
                				$groups[$row['document_group']] = $row['discount'];
                			}
                		}
                		$this->cache['products'][$id] = $groups;
                
                		return $groups;
                	}
                строка 412
                if (isset($this->cache['products'][$id])) {
                			return $this->cache['products'][$id];
                		}
                строка 452
                $this->cache['products'][$id] = $groups;
                  Николай Савин
                  26 ноября 2025, 11:39
                  0
                  Дмитрий. первые две строки в вашем логе — это не ошибки. Это предупреждения о плохом коде. Они сами по себе ничего не ломают.
                  Настоящая проблема у вас только одна, та, что про article
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              18