Игорь Игамов

Игорь Игамов

С нами с 05 февраля 2016; Место в рейтинге пользователей: #156
Игорь Игамов
15 июля 2020, 19:59
0
Да, планируется.
В minishop2 есть поле properties :)
Игорь Игамов
12 июля 2018, 02:24
-1
Ну если хотите сделать вывод заказов на своем сайте, имею ввиду не в админке, то ничего сложного в этом нет. Читаете документацию и вперед.
Есть кстати уже готовое, только не приходилось использовать https://modstore.pro/packages/integration/mslistorders
Игорь Игамов
28 декабря 2017, 20:50
0
А пробовали phpThumbOn запускать без кеша?
Игорь Игамов
28 декабря 2017, 19:07
0
А зачем использовать @INLINE?
Игорь Игамов
16 ноября 2017, 21:42
0
Наверное попробую реализовать через AjaxSnippet
Игорь Игамов
16 ноября 2017, 17:39
0
Здравствуйте. У меня возник вопрос.
Мне необходимо вывести каталог с товарами в модальном окне. Прежде чем приобрести, попробовал на тестовом хостинге это воплотить, товары выводятся, всё гуд, но у меня не работает пагинация, то есть страница обновляется.
Вызов pdopage осуществляется в чанке. При включении ajax в pdopage, товары не появляются вообще.
Не подскажите возможно ли это сделать данным дополнением? Спасибо!
P.S. также пробовал через сниппет с параметрами, тоже самое.
Игорь Игамов
02 мая 2017, 16:08
+2
PS Совсем забыл выложить готовый код. Сейчас пользователя не перекидывает на оплату, а просто выводиться страница с его оформленными заказами и там уже ссылки на оплату. А как это сделать, уже совсем другая история :)
Сейчас после оформления заказов формируются след. вида ссылки: domain.ru/cart?msorder=23,24.
Просто нужно скопировать сниппет msGetOrder и немного его переделать :)
<?php
class msTest extends msOrderHandler {
	public function submit($data = array())
		{
			$response = $this->ms2->invokeEvent('msOnSubmitOrder', array(
				'data' => $data,
				'order' => $this,
			));
			if (!$response['success']) {
				return $this->error($response['message']);
			}
			if (!empty($response['data']['data'])) {
					$this->set($response['data']['data']);
			}

			$response = $this->getDeliveryRequiresFields();
			if ($this->ms2->config['json_response']) {
					$response = json_decode($response, true);
			}
			$requires = $response['data']['requires'];

			$errors = array();
			foreach ($requires as $v) {
					if (!empty($v) && empty($this->order[$v])) {
							$errors[] = $v;
					}
			}
			if (!empty($errors)) {
					return $this->error('ms2_order_err_requires', $errors);
			}

			$cart = $this->ms2->cart->get();
			$products = array();
			$partners = array();
			$idOrders = array();
			foreach ($cart as $v) {
			  if(!in_array($v['vendor'],$partners)){
				  $partners[] = $v['vendor'];
			  }
			}
			foreach ($partners as $partner){
				$user_id = $this->ms2->getCustomerId();
				$cart_status = $this->ms2->cart->status();
				$delivery_cost = $this->getCost(false, true);
				$createdon = date('Y-m-d H:i:s');
				$cart_cost = 0;
				$weight_cost = 0;

				// Adding products
				foreach ($this->ms2->cart->get() as $v) {
					if ($partner == $v['vendor']){
						if ($tmp = $this->modx->getObject('msProduct', $v['id'])) {
								$name = $tmp->get('pagetitle');
						} else {
								$name = '';
						}
						/** @var msOrderProduct $product */
						$product = $this->modx->newObject('msOrderProduct');
						$product->fromArray(array_merge($v, array(
								'product_id' => $v['id'],
								'name' => $name,
								'cost' => $v['price'] * $v['count'],
							)));
						$cart_cost = $cart_cost + ($v['price'] * $v['count']); //собираем стоимость заказа для партнера
						$weight_cost = $weight_cost + $v['weight'];
						$products[] = $product;
						$key = md5($v['id'] . $v['price'] . $v['weight'] . $v['vendor'] . (json_encode($v['options'])));
						$remove = $this->ms2->cart->remove($key); //Удаляем товар из корзины
					}
				}
				/** @var msOrder $order */
				$order = $this->modx->newObject('msOrder');
				$order->fromArray(array(
					'user_id' => $user_id,
					'createdon' => $createdon,
					'num' => $this->getNum(),
					'delivery' => $this->order['delivery'],
					'payment' => $this->order['payment'],
					'cart_cost' => $cart_cost,
					'weight' => $weight_cost,
					'delivery_cost' => $delivery_cost,
					'cost' => $cart_cost + $delivery_cost,
					'status' => 0,
					'context' => $this->ms2->config['ctx'],
					'partner' => $partner,
				));
				// Adding address
				/** @var msOrderAddress $address */
				$address = $this->modx->newObject('msOrderAddress');
				$address->fromArray(array_merge($this->order, array(
					'user_id' => $user_id,
					'createdon' => $createdon,
				)));
				$order->addOne($address);
				$order->addMany($products);
				$response = $this->ms2->invokeEvent('msOnBeforeCreateOrder', array(
					'msOrder' => $order,
					'order' => $this,
				));
				if (!$response['success']) {
					return $this->error($response['message']);
				}

				if ($order->save()) {
					$response = $this->ms2->invokeEvent('msOnCreateOrder', array(
						'msOrder' => $order,
						'order' => $this,
				));
				if (!$response['success']) {
					return $this->error($response['message']);
				}
				if (empty($_SESSION['minishop2']['orders'])) {
					$_SESSION['minishop2']['orders'] = array();
				}
				$_SESSION['minishop2']['orders'][] = $order->get('id');	
				// Trying to set status "new"
				$response = $this->ms2->changeOrderStatus($order->get('id'), 1);
				if ($response !== true) {
					return $this->error($response, array('msorder' => $order->get('id')));
				}
				unset($products);
				} else{
					$this->modx->log(1, 'Oh no, the wand failed to save!');
				}
				$idOrders[] = $order->get('id');
		}
			$this->ms2->cart->clean();
			$this->clean();
			/*$this->modx->sendRedirect(
												$this->modx->context->makeUrl(
														$this->modx->resource->id,
														array('msorder' => $response['data']['msorder'])
												)
										);*/
				
						/** @var msPayment $payment */
						/*if ($payment = $this->modx->getObject('msPayment',
								array('id' => $order->get('payment'), 'active' => 1))
						) {
								$response = $payment->send($order);
								if ($this->config['json_response']) {
										@session_write_close();
										exit(is_array($response) ? json_encode($response) : $response);
								} else {
										if (!empty($response['data']['redirect'])) {
												$this->modx->sendRedirect($response['data']['redirect']);
										} elseif (!empty($response['data']['msorder'])) {
												$this->modx->sendRedirect(
														$this->modx->context->makeUrl(
																$this->modx->resource->id,
																array('msorder' => $response['data']['msorder'])
														)
												);
										} else {
												$this->modx->sendRedirect($this->modx->context->makeUrl($this->modx->resource->id));
										}

										return $this->success();
								}
						} 
						else {*/
			if ($this->ms2->config['json_response']) {
				return $this->success('', array('msorder' => implode(",", $idOrders)));
			} else {
				$this->modx->sendRedirect(
					$this->modx->context->makeUrl(
						$this->modx->resource->id,
						array('msorder' => implode(",", $idOrders))
					)
				);
			}
			return $this->success();
			return $this->error();
		}
}
Игорь Игамов
20 апреля 2017, 15:43
0
Спасибо большое за алгоритм!!!
Игорь Игамов
20 апреля 2017, 12:34
0
Ахах ну хорошо, буду думать дальше))

Пока понял только то, что я
return $this->success();
в цикле, а не после его выполнения, из-за этого приходится несколько раз нажимать оформить заказ.
Игорь Игамов
19 апреля 2017, 17:03
1
+2
Вот так получить можно содержимое корзины.
P.S/ смотрите в журнале ошибок
$tmp = $cart->get();
$modx->log(1, print_r($tmp, 1));
Игорь Игамов
16 февраля 2017, 02:14
0
Здравствуйте. В обновлении указано что добавили пункты доставок, скажите пожалуйста как их получить?
Как еще получить выбранный город после Ajax запроса? Просто написал свой сниппет, который получает город, но только он работает после перезагрузки.
Спасибо!
Игорь Игамов
10 февраля 2017, 18:08
0
Московское метро. Только без МЦК.

Просто нет API Яндекс.Метро, ну или я не нашел :c
Игорь Игамов
10 февраля 2017, 17:54
0
Если необходим поиск по карте метро, то могу выслать исходники. (сама схема png + JS)
Что-то сравнение в демо не работает
Игорь Игамов
03 февраля 2017, 20:15
0
Спасибо за смайлики. А не подскажите, как сделать, чтобы в
<code></code>
они не отображались? Спасибо!
Игорь Игамов
08 марта 2016, 02:20
0
Через фильтр вывода. Знаю как на wayfinder сделать. Что то типа:
[[+wf.id:is=`ID_страницы_Каталог`:then=`<li class="li1"></li>`:else=`<li class="l2"></li>`]]
Пишу с телефона. Думаю понятно. Это указываем в чанке вывода подменю.
Игорь Игамов
06 февраля 2016, 22:28
0
Решил эту проблему таким образом:
return tokens.replace(/&amp;&amp;/g, '&')
Игорь Игамов
06 февраля 2016, 22:07
0
:tag оказывается заменяет и & на
&amp;
в итоге происходит двойная замена на спецсимволы, в Code Sample и через phx и в статье выводит так:
[[!FormIt?
   &amp;hooks=`spam,email,redirect`
   &amp;emailTpl=`modal-zv-tpl`
   &amp;emailTo=`mail@mail.ru`
   &amp;redirectTo=`33`]]