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

Maks
03 декабря 2025, 15:49
0
Никак не получается настроить. Ошибка такая же как выше писали. Уже раз 100 перепробовал.
Николай Савин
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;