Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

0 Пользователей и 1 Гость просматривают эту тему.

*

webtrend

  • **
  • 86
  • +0/-0
    • Просмотр профиля
Добрый день, необходимо в демодизи в корзину добавить 2 дополнительных поля, к примеру чтобы было после выбора доставки, перед выбором оплаты шаг Дополнительная информация с полями 1 - информация, 2 галочка запаковать в пакет, как осуществить данное деяние? И чтобы в заказ передавались эти данные.

*

aghigay

  • *****
  • 602
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Вывод дополнительных полей в корзине
« Ответ #1 : 12 Апрель 2016, 19:29:50 »
Информация - это типа поле комментария?

Ну вопрос не особо тривиальный. Я бы делал через события, добавлял бы проверку на оформление и ловил бы из представления эти поля. А потом пихал бы куда-нибудь, куда угодно. На ваше усмотрение.

Правда тут возникает вопрос, что в самом заказе не все доп. поля показываются. Возможно, придется кастомизировать админку.
Мой блог http://umicms.me

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Re: Вывод дополнительных полей в корзине
« Ответ #2 : 12 Апрель 2016, 22:39:18 »
Цитировать
Добрый день, необходимо в демодизи в корзину добавить 2 дополнительных поля, к примеру чтобы было после выбора доставки, перед выбором оплаты шаг Дополнительная информация с полями 1 - информация, 2 галочка запаковать в пакет, как осуществить данное деяние? И чтобы в заказ передавались эти данные.

Обычно добавляю поля в тип данных "Заказ" в группу полей "Свойства доставки заказа".

Если используете кастомный метод для оформления заказа - в нем получаете значения полей и устанавливаете их для заказа
$info = getRequest('info');
$package = getRequest('package');
$order->setValue('info', $info);
$order->setValue('package', $package);

Если используете стандартный макрос, нужно смотреть в сторону события order-status-changed http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/sobytijnaya_model_umicms/standartnye_tochki_vyzova/#sel=5:51,5:51

В этом событии проверяете статус заказа (для новых заказов он должен быть равен waiting). Что-то вроде
if($event->getMode() == "after" &&
$event->getParam("old-status-id") != $event->getParam("new-status-id") && $event->getParam("new-status-id") == order::getStatusByCode('waiting')) {
$order = $eventPoint->getRef('order');
/* Код, который записывает данные в объект заказа*/
}

Для примера можете посмотреть метод onStatusChanged файла classes/modules/emarket/__events.php
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/