Сделать шаг заполнения личной информации в заказе обязательным Demomarket

Материал из Umicms
Версия от 06:01, 12 апреля 2019; Alelekov (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 20

Для того, чтобы страница с заполнением личной информации выводилась для любого пользователя при совершении заказа, необходимо переопределить макрос getStage($stage):

  • 1. Откройте файл ~/classes/components/emarket/purchasingStages.php, в котором находится код нужного нам метода
  • 2. Скопируйте код метода в файл ~/classes/components/emarket/customMacros.php.
  • 3. В начало файла после <? php нужно добавить следующую строку: use UmiCms\Service;
  • 4. После этого нужно удалить в коде этого метода проверку, зарегистрирован ли пользователь. Вместо
if (!$customer->isUser() && !$customer->isFilled()) {
return 'required';
}

У вас должно быть просто:

return 'required';

В итоге код метода будет вот таким:

public function getStage($stage) {
			$umiRegistry = Service::Registry();
			$hasDelivery = $umiRegistry->get('//modules/emarket/enable-delivery');
			$hasPayment = $umiRegistry->get('//modules/emarket/enable-payment');
 
			if ($stage == 'delivery' && !$hasDelivery) {
				$stage = 'payment';
			}
 
			if ($stage == 'payment' && !$hasPayment) {
				return null;
			}
 
			if (!$stage ||
				(!in_array($stage, $this->module->purchaseStages) 
				&& !in_array($stage, $this->module->availableStages))) {
				return 'required';
			}
 
			return $stage;
		}


После применения этих изменений страница с заполнением личной информации будет выводиться для всех пользователей при оформлении заказа.