Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 099 комментариев

Николай Савин
Николай Савин
У 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
  • При оформлении заказа создаётся системный пользователь
  • Ему можно назначить права и группу пользователей
Илья Уткин
Илья Уткин
А вообще покупатели могут быть связаны с пользователями MODX? Ведь порой надо будет добавить магазин на сайт, где уже есть личный кабинет и пользователи. Или наоборот на сайте с магазином может быть и другой функционал, завязанный на юзеров
Сергей Карпович
Сергей Карпович
Ребята, это нормально что при в режиме Импорт товаров — недоступен импорт остатков (msProductRemains)?
А в режиме импорта остатков не доступны TV и галерея.

Приходится запускать отдельно один импорт для товаров, другой для остатков
Сергей Карпович
Сергей Карпович
Алексей привет, из модстор пропал компонент ImgsPaste, как понимаю его убрали из-за отсутствия поддрежки
Tinymcerte-3.
Подскажи есть надежда, что компонент вернут с поддержкой нового редактора?
Я его ставлю на 100% сайтов, менеджеры пользуются и не портят сайт =)
Дмитрий
Дмитрий
есть поле 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;