Я пытаюсь реализовать функцию, при которой, когда гость добавляет товар в корзину, после входа он / она должен быть перенаправлен на страницу оформления заказа.
Если корзина пуста, пользователь долженперенаправлен на страницу с информацией об учетной записи (это условие по умолчанию).
Однако я попытался выполнить следующее условие в этом файле:
catalog / controller / account / login.php
if ($this->customer->isLogged() && $this->cart->hasProducts()) {
$this->response->redirect($this->url->link('checkout/cart', '', true));
}
else {
$this->response->redirect($this->url->link('account/account', '', true));
}
Проблема теперь в том, что она работает, когда я вхожу в существующую учетную запись, в которой уже есть продукт, добавленный в корзину, но не работает, если я добавляюпродукт в качестве гостя, и после входа я все еще перенаправлен на страницу информации об учетной записи.
Если мое объяснение не ясно, пожалуйста, дайте мне знать, любая помощь будет очень признательна!
РЕДАКТИРОВАТЬ:
Вот экран записи вопроса https://vimeo.com/307006071
Вот мой код обновления:
if ($this->customer->isLogged()) {
$this->response->redirect($this->url->link('account/account', '', true));
}
$this->load->language('account/login');
$this->document->setTitle($this->language->get('heading_title'));
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
// Unset guest
unset($this->session->data['guest']);
// Default Shipping Address
$this->load->model('account/address');
if ($this->config->get('config_tax_customer') == 'payment') {
$this->session->data['payment_address'] = $this->model_account_address->getAddress($this->customer->getAddressId());
}
if ($this->config->get('config_tax_customer') == 'shipping') {
$this->session->data['shipping_address'] = $this->model_account_address->getAddress($this->customer->getAddressId());
}
// Wishlist
if (isset($this->session->data['wishlist']) && is_array($this->session->data['wishlist'])) {
$this->load->model('account/wishlist');
foreach ($this->session->data['wishlist'] as $key => $product_id) {
$this->model_account_wishlist->addWishlist($product_id);
unset($this->session->data['wishlist'][$key]);
}
}
// Added strpos check to pass McAfee PCI compliance test (http://forum.opencart.com/viewtopic.php?f=10&t=12043&p=151494#p151295)
if (isset($this->request->post['redirect']) && $this->request->post['redirect'] != $this->url->link('account/logout', '', true) && (strpos($this->request->post['redirect'], $this->config->get('config_url')) !== false || strpos($this->request->post['redirect'], $this->config->get('config_ssl')) !== false)) {
$this->response->redirect(str_replace('&', '&', $this->request->post['redirect']));
} else {
if ($this->cart->hasProducts()) {
$this->response->redirect($this->url->link('checkout/cart', '', true));
}
else {
$this->response->redirect($this->url->link('account/account', '', true));
}
}
}