Настолько менять процедуру оформления заказа крайне сложно.
Глупость!
Логика зашита очень жестко.
Глупость!
Вы сначала обязан создать клиента и его адрес, а потом выбирать варианты оплаты и доставки.
Глупость!
Возможно ли поменять местами выбор доставки и ввод адреса? Если человек выбрал самовывоз, какой смысл ему вводить свой адрес?
Три решения:
1. Установить модуль быстрого оформления заказа.
2. Заказать отдельную разработку под ваше ТЗ -
раздел работа.
3. Переписать OrderController, например:
/controllers/front/OrderController.php
Код:
$this->_assignAddress();
$this->processAddressFormat();
if (Tools::getValue('multi-shipping') == 1)
{
$this->_assignSummaryInformations();
$this->context->smarty->assign('product_list', $this->context->cart->getProducts());
$this->setTemplate(_PS_THEME_DIR_.'order-address-multishipping.tpl');
}
else
$this->setTemplate(_PS_THEME_DIR_.'order-address.tpl');
заменить на:
Код:
$this->autoStep();
$this->_assignCarrier();
$this->setTemplate(_PS_THEME_DIR_.'order-carrier.tpl');
/themes/ваш-шаблон/order-carrier.tpl
Код:
<input type="hidden" name="step" value="3" />
заменить на:
Код:
<input type="hidden" name="step" value="2" />
/controllers/front/OrderController.php
Код:
if (Tools::isSubmit('processAddress'))
$this->processAddress();
$this->autoStep();
$this->_assignCarrier();
$this->setTemplate(_PS_THEME_DIR_.'order-carrier.tpl');
заменить на:
Код:
if ($this->context->cart->id_carrier == 3)
Tools::redirect('index.html?controller=order&step=3');
else
Tools::redirect('index.html?controller=order&step=1');
Примечание:
3 - ID самовывоза.
Код обрабатывает только ситуацию с самовывозом, дописать в
case 2 прочие ситуации.