Всего 125 366 комментариев

Николай Савин
30 ноября 2025, 19:10
+2
У msCustomer есть поле user_id, которое связывает покупателя с modUser:

// В модели msCustomer
  'aggregates' => [
      'User' => [
          'class' => 'MODX\\Revolution\\modUser',
          'local' => 'user_id',
          'foreign' => 'id',
          'cardinality' => 'one',
      ],
  ],
Режимы работы

1. Автономный режим (по умолчанию)
  • msCustomer работает независимо от modUser
  • Покупатели авторизуются через свой email/пароль
  • Подходит для магазинов без дополнительного функционала

2. Синхронизация с modUser
  • Включается настройкой ms3_customer_sync_enabled
  • При создании/обновлении modUser автоматически создаётся/обновляется msCustomer
  • Синхронизируются: email, fullname → first_name, phone, активность
  • При удалении modUser — покупатель НЕ удаляется (сохраняется история заказов), только отвязывается (user_id = 0)

3. Создание modUser при заказе
  • Настройка ms3_order_register_user_on_submit
  • При оформлении заказа создаётся системный пользователь
  • Ему можно назначить права и группу пользователей
Илья Уткин
30 ноября 2025, 17:27
+1
А вообще покупатели могут быть связаны с пользователями MODX? Ведь порой надо будет добавить магазин на сайт, где уже есть личный кабинет и пользователи. Или наоборот на сайте с магазином может быть и другой функционал, завязанный на юзеров
Артур Шевченко
30 ноября 2025, 15:25
+1
С визуальным конструктором полей прям огонь. Горжусь тобой!)))
Николай Савин
30 ноября 2025, 14:25
+2
Для желающих протестировать — создал релиз в GitHub. Там можно скачать готовый транспортный пакет.
Алексей Смирнов
30 ноября 2025, 12:45
0
Все чуток сложнее. Как только получится уладить юридические и иные вопросы этот пакет и остальные — вернуться.
Сергей Карпович
28 ноября 2025, 17:12
0
Ребята, это нормально что при в режиме Импорт товаров — недоступен импорт остатков (msProductRemains)?
А в режиме импорта остатков не доступны TV и галерея.

Приходится запускать отдельно один импорт для товаров, другой для остатков
Сергей Карпович
27 ноября 2025, 13:08
0
Алексей привет, из модстор пропал компонент ImgsPaste, как понимаю его убрали из-за отсутствия поддрежки
Tinymcerte-3.
Подскажи есть надежда, что компонент вернут с поддержкой нового редактора?
Я его ставлю на 100% сайтов, менеджеры пользуются и не портят сайт =)
Сергей Карпович
26 ноября 2025, 20:11
0
Артур, порадуй новостями.
Есть потребность купить компонент пока для одного сайта
Николай Савин
26 ноября 2025, 11:39
0
Дмитрий. первые две строки в вашем логе — это не ошибки. Это предупреждения о плохом коде. Они сами по себе ничего не ломают.
Настоящая проблема у вас только одна, та, что про article
Дмитрий
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, 10:55
0
Проверь наличие поля article в таблице ms2_products.
Это стандартное поле, оно всегда было в минишопе. Никаких манипуляций с ним никогда не производилось.
Дмитрий
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.
Николай Савин
25 ноября 2025, 19:28
0
Здравствуйте. Стабильная версия PHP для minishop2 — это 7.4. До 8.1 тоже все работает, но могут быть проблемы с подключаемыми компонентами. Что касается СУБД — рекомендую использовать mariaDB 10.6 — она довольно современна, но при этом не вызывает проблем.
Оптимизацию под mysql 8 насколько я знаю специально никто не делал. Вернее закрывали ряд проблем, но не все.
Насчет возрастания нагрузки не знаю что сказать. Таких замечаний отдельно не встречал никогда.

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

Ну и замечу что начинается эпоха MiniShop3 — он уже почти готов и к новому году я думаю увидит свет в магазине дополнений Modstore
Дмитрий
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, 13:49
0
Здравствуйте, устанавливаем msProductRemains перестаёт добавлять в корзину, по логам добавляет, на странице корзины ошибка minishop2 not defined и соответственно пустая корзина, удаляем модуль — ошибка удаления, но он удалён — переустанавливаем minishop всё работает, но нет остатков, ошибок в логах нету