Сделать шаг заполнения личной информации в заказе обязательным Demomarket — различия между версиями
Материал из Umicms
Alelekov (обсуждение | вклад) (Новая страница: «Для того, чтобы страница с заполнением личной информации выводилась для любого пользова…») |
Alelekov (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
+ | '''Актуально для версии 20''' | ||
Для того, чтобы страница с заполнением личной информации выводилась для любого пользователя при совершении заказа, необходимо переопределить макрос getStage($stage): | Для того, чтобы страница с заполнением личной информации выводилась для любого пользователя при совершении заказа, необходимо переопределить макрос getStage($stage): | ||
<ul> | <ul> | ||
Строка 11: | Строка 12: | ||
} | } | ||
</source> | </source> | ||
− | У | + | У вас должно быть просто: |
<source lang="php"> | <source lang="php"> | ||
return 'required'; | return 'required'; |
Версия 06:00, 12 апреля 2019
Актуально для версии 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;
}
После применения этих изменений страница с заполнением личной информации будет выводиться для всех пользователей при оформлении заказа.