Сделать шаг заполнения личной информации в заказе обязательным Demomarket
Материал из Umicms
Актуально для версии 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;
}
После применения этих изменений страница с заполнением личной информации будет выводиться для всех пользователей при оформлении заказа.