Воеводский Михаил

Воеводский Михаил

С нами с 07 февраля 2013; Место в рейтинге пользователей: #18
Воеводский Михаил
20 июня 2015, 12:47
+1
Сергей, я немного не о том, не предлагаю сделать 2 версии с разной стоимостью. Если делать мощный компонент без привязки к minishop2, то получится огромный объем работ. Но компонент коммерческий, поэтому такой объем тоже должен оплачиваться. Соответственно, может вырасти цена. Либо же добавить к oneBooking привязку к магазину и использовать всю его мощь, оставив стоимость на прежнем уровне.

Вариант, который Вы сейчас озвучили весьма интересен. Из коробки — простое бронирование с малым количеством способов оплаты. При необходимости наращивания возможностей — всего лишь добавить minishop2 к уже настроенному бронированию.
Отличный и правильный путь!

Хотя, лично я, сразу бы делал с максимальной привязкой. На мой взгляд, не всегда нужно предоставлять большую свободу выбора пользователю. Иногда именно из-за этого появляется слишком много лишних вопросов.
Воеводский Михаил
20 июня 2015, 12:22
0
Еще один аргумент: как думаете, что выберут клиенты — oneBooking за 990 р. + свободный minishop2 или только oneBooking, но за 2990 р.?
Воеводский Михаил
20 июня 2015, 11:50
+1
Сергей, все правильно — товар один, опции разные. Можно несколько товаров — по количеству типов номеров. Но это уже нюансы.

Смысл есть. Во-первых, Ваш компонент не надо будет раздувать, так как в минишопе очень много нужного функционала готово.

Плюс к тому, уже есть много дополнений для онлайн-оплаты. Зачем изобретать велосипед?

Для обычного сайта гостиницы наличие или отсутствие минишопа никак не скажется, а вот на компоненте бронирования его наличие отразится исключительно положительно.

Не забывайте еще вот о чем: все доп.услуги, которые гость заказывает к номеру, можно сделать отдельными товарами тогда значительно упростится процесс формирования брони и последующего учета этих услуг.
Воеводский Михаил
18 июня 2015, 10:03
+1
1. У всех прописан — это норма
2. Часто используется mSearch2
Воеводский Михаил
17 июня 2015, 13:35
0
Анастасия услышала мое предложение, взяла время обдумать.
Соберет все предложения и сделает выбор на основе своих критериев.
Воеводский Михаил
15 июня 2015, 11:33
0
Этот блок появляется для уже сохраненного товара. Если его нет — у Вас что-то пошло не так. Для начала, попробуйте переустановить minishop2.
Воеводский Михаил
15 июня 2015, 02:44
4
+3
Потребуется свой сниппет, который запустит всего 2 метода minishop2:

$minishop2->cart->add($productId, $count);

$orderData = array(/* Здесь много полей, имеющихся в стандартной форме заказа */);
$minishop2->order->submit($orderData);
Воеводский Михаил
15 июня 2015, 00:09
0
Мое письмо автору:

Спасибо за высланное ТЗ.
Увидел, что Василий Наумкин оставил свое предложение раньше моего письма.
Обратитесь к нему. Уверен, Ваше сотрудничество будет продуктивным!
Воеводский Михаил
13 июня 2015, 22:31
+1
Tickets, minishop2, Collections…
Способов масса. Прежде, чем что-то выбирать, составьте подробное тз — соотнести потребности и возможности компонентов будет проще.
Но если чтение документации не помогает, Вам прямая дорога в раздел «Работа», ибо нагородить костылей на начальном этапе легко, а их поддержка превратится в настоящий кошмар.
Воеводский Михаил
13 июня 2015, 11:34
0
Значит, какое-то действие пропущено. Ограничений на количество добавляемых полей нет.
Воеводский Михаил
12 июня 2015, 01:27
+2
Плагин правильнее на событие msOnSubmitOrder. Разница в том, что блокировать оформление заказа необходимо еще до его создания. Указанное событие вызывается самым первым, еще до создания нового объекта и проверки введенных полей.
А проверять на этом событии необходимо сумму в корзине.

Если делать именно таким образом, то не должно возникнуть необходимости изменять стандартный JS.
Воеводский Михаил
11 июня 2015, 20:48
0
Размести его здесь для потомков.
Воеводский Михаил
11 июня 2015, 17:36
2
+2
Номер заказа появляется только в событии msOnCreateOrder. До того заказа не существует.
В плагине, срабатывающем по этому событию, уже существует объект $msOrder:
$msOrder->get('num');
$msOrder->get('id');
Воеводский Михаил
11 июня 2015, 17:24
0
Однажды писал плагин для такой ситуации:
<?php
switch ($modx->event->name) {
	case 'OnMODXInit':
	        $output = '';
        	if (isset($_REQUEST['tv|price_from'])) {
	            $modx->setPlaceholder('price_from',(int) $_REQUEST['tv|price_from']);
        	    if (!strpos(',',$_REQUEST['tv|price_from'])) $_REQUEST['tv|price_from'] .= ',99999999';
	        }
        	if (isset($_REQUEST['tv|price_to'])) {
	            $modx->setPlaceholder('price_to',(int) $_REQUEST['tv|price_to']);
	            if (!strpos(',',$_REQUEST['tv|price_to'])) $_REQUEST['tv|price_to'] = '0,'.$_REQUEST['tv|price_to'];
	        }
        	break;
	default: break;
}
В текущем виде поля price_from и price_to предполагаются обычными текстовыми.
Воеводский Михаил
11 июня 2015, 15:47
0
Для MODX это одно и то же.