Понимаю что всем хочеться уже пощупать но пока еще довожу до ума.
Но уже можно использовать на фронте с мелкими оговорками.

И так как же потестить уже у себя?:
1. Идем сюда: evoshop.pro. — тут у нас есть линк на github где можно скачать код а так же есть раздел документации по скрипту js, сразу замечу что логика работы немного выпадает от привычной в MODX так как вся корзина работает на js + localStorage, это дает свои плюсы но есть и пару минусов к примеру вся логика работы построенна на js тоесть чанков с шаблонами у нас нет. (Есть вариант сделать проброс чанков с параметров сниппета в js но особого смысла в этом не вижу)

2. Заливаем нужный нам файлик js сюда:
/assets/snippets/evoshop/js/evoShop.min.js

Хотя можно и в любое удобное для вас место.
И подключаем js, получиться должно как то так:
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script type="text/javascript" src="/assets/snippets/evoshop/js/evoShop.min.js"></script>


Я делаю вот так:

тоесть у меня есть сниппет evoShop с содержимым:
<?php
//подключение библиотеки js
$modx->regClientScript('/assets/snippets/evoshop/js/evoShop.min.js');
$settings = '<script type="text/javascript">
	evoShop({
		currency: "RUB",
	});
	//скрываем корзину если там пусто
	evoShop.bind("update", function(){
	  if( evoShop.quantity() === 0 ){
		$(".evoShop_cart").hide();
	  } else {
		$(".evoShop_cart").show();
	  }
	});
	//добавляем товары в корзину из локалстораже
	$(document).on("click",".evoShop_submit",function(ev){
		$(".evoShop_items_json").val( localStorage.getItem("evoShop_items").replace("}}","} }") );   
		//evoShop.empty();
	});
	
	//товар добавлен в карзину
	$(document).on("click",".item_add",function(ev){
		$(\'<span class="item_informer alert alert-success">товар добавлен в корзину</span>\').insertAfter($(this)).delay(800).fadeOut(800);
	});
	
</script>'; 
$modx->regClientScript($settings, true);

Его вызываем и он сам добавляет весь js, пока думаю зачем мне тут снипет и как будет удобней.

Собственно на этом все подключение evoShop к фрону сайта закончено.
Переходим к Бекенду.


3. Передача товаров в FormLister, отправка на почту а так же запись в базу.

Создаем вот такой вызов сниппета FormLister:
[!FormLister?
						&debug=`1`
						&formid=`orderForm`
						&to=`dmi3yy@gmail.com`
						&replyTo=`[+email.value+]`
						&prepareProcess=`evoShopFormLister`
						&protectSubmit=`0`
						&submitLimit=`0`
						&ccSender=`1`
						&subject=`Новый заказ с сайта evoShop demo`
						&errorClass=` has-error`
						&requiredClass=` has-warning`
						&rules=`{
							"name":{
								"required":"Обязательно введите имя"
							},
							"email":{
								"required":"Обязательно введите email",
								"email":"Введите email правильно"
							},
							"phone":{
								"required":"Обязательно введите номер телефона",
								"phone":"Введите номер правильно"
							}
						}`
						&formTpl=`@CODE:
							<h3>Оформление заказа:</h3>
							<form method='POST'>
								<input type="hidden" name="formid" value="orderForm">
								<input type="hidden" name="evoShop_items_json" class="evoShop_items_json" value="[+evoShop_items_json+]"/>
								<div class="form-group[+name.errorClass+][+name.requiredClass+]">
									<label for="name">Ваше имя</label>
									<input type="text" class="form-control" name="name" id="name" value="[+name.value+]">
									<div class="form-control-feedback">[+name.error+]</div>
								</div>
								<div class="form-group[+email.errorClass+][+email.requiredClass+]">
									<label for="email">Ваш email</label>
									<input type="text" class="form-control" name="email" id="email" value="[+email.value+]">
									<div class="form-control-feedback">[+email.error+]</div>
								</div>
								<div class="form-group[+phone.errorClass+][+phone.requiredClass+]">
									<label for="phone">Телефон</label>
									<input type="text" class="form-control" name="phone" id="phone" value="[+phone.value+]">
									<div class="form-control-feedback">[+phone.error+]</div>
								</div>
								<div class="form-group">
									<label for="message">Кмментарий к заказу</label>
									<textarea class="form-control" name="message" id="message" rows="3">[+message.value+]</textarea>
								</div>
								<button type="submit" class="btn btn-primary evoShop_submit">Оформить заказ</button>
							</form>			
						`
						&messagesOuterTpl=`@CODE: [+messages+]`
						&errorTpl=`@CODE: [+message+]`
						&successTpl=`@CODE: 
							<div class="alert alert-success mt-3">
								<h3>Спасибо за ваш заказ!</h3>
								<p>Наш менеджер свяжеться с вами в ближайшее время.</p>
							</div>`
						&reportTpl=`@CODE:
							<p>Имя: [+name.value+]</p>
							<p>Email: [+email.value+]</p>
							<p>Телефон: [+phone.value+]</p>
							<p>Комментарий к заказу: [+message.value+]</p>
							[+evoShop_items+]	
						`
						&ccSenderTpl=`@CODE:
							Вы оформили заказ на сайте:
							<p>Имя: [+name.value+]</p>
							<p>Email: [+email.value+]</p>
							<p>Телефон: [+phone.value+]</p>
							<p>Комментарий к заказу: [+message.value+]</p>
							[+evoShop_items+]
						`
						!]  


И добавляем вот такой сниппет evoShopFormLister:
<?php
if ($FormLister->getField('evoShop_items_json') != '') {
		$itemsArr = json_decode( $FormLister->getField('evoShop_items_json') , true);
		if (is_array($itemsArr)){
			//Подготовка к выводу в почте
			$total = '0';
			$evoShopItems = '
<h3>Состав заказа: </h3><ul>';
			foreach($itemsArr as $k => $v){
				$evoShopItems .='<li><b>'.$v['name'].'</b>    '.$v['size'].'   x'.$v['quantity'].' шт,   <b>'.$v['price'].'</b> руб</li>';
				$total = $total + ($v['quantity']*$v['price']);
			}
			$evoShopItems .= '</ul>
<h4>Сумма заказа: <b>'.$total.'</b> руб</h4>';
			//Запись в базу данных
			$short_txt = $data;
			unset($short_txt['evoShop_items_json']);
			$neworder = array('short_txt'  => json_encode($short_txt, JSON_UNESCAPED_UNICODE), 
							'content' => $FormLister->getField('evoShop_items_json'), 
							'price' => $total,  
							'currency'  => 'руб',
							'date'  => date('Y-m-d H:i:s'),
							'sentdate'  => date('Y-m-d H:i:s'),
							'note'  => $FormLister->getField('note'),
							'email'  => $FormLister->getField('email'),
							'phone'  => $FormLister->getField('phone'),
							'payment'  => $FormLister->getField('payment'),
							'delivery'  => $FormLister->getField('delivery'),
							'discount'  => $FormLister->getField('discount'),

							'status'  => '1',
							'userid'  => $_SESSION['webInternalKey'],
							'managerid'  => '',
							'1c_exchange'  => '',
							
							);   
			$orderId = $modx->db->insert( $neworder, $modx->getFullTableName( 'evoshop_orders' ) ); 
			$modx->db->insert(
			  array(
				'timestamp'     => time(),
				'managerid'     => '',
				'action'        => '1',
				'orderid'       => $orderId,
				'message'       => 'Поступил новый заказ',
				), $modx->getFullTableName('evoshop_log')
			  );
			
		}
		$FormLister->setField('evoShop_items', $evoShopItems );	
		$modx->regClientScript('<script>evoShop.empty();</script>', true);
	}


Так же не забываем выполнить запрос на создание базы с заказами:
CREATE TABLE `modx_evoshop_orders` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `short_txt` text NOT NULL,
  `content` text,
  `price` varchar(255) NOT NULL,
  `currency` varchar(255) NOT NULL,
  `date` datetime DEFAULT NULL,
  `sentdate` datetime DEFAULT NULL,
  `note` text NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `payment` varchar(128) NOT NULL,
  `delivery` text,
  `discount` text,
  `tracking_num` varchar(32) DEFAULT NULL,
  `status` int(11) NOT NULL,
  `userid` int(11) NOT NULL,
  `managerid` int(11) NOT NULL,
  `1c_exchange` int(10) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;


На этом все! :), мы получили на фронте:
— Корзину, страничку оформление заказа
— Отправку писем админу и клиенту
— Запись в базу заказов

p.s. В препаре надо еще добавить проверку правильности цен на товары ибо сейчас такой проверки нет соответственно никто не мешает в браузере поправить цену и отправить ее в заказ. Но в дальнейшем это допишу :)

p.s.s. Для работы с доставками и скидками так же все готово + уже адаптировал evoSale для evoShop. По хорошему еще чутка довылизываю js и переключусь на модуль. Как закончу базово с модулем будет релиз с автоинсталом, примерами и видео :)