Закладки без регистрации opencart 2-3

Закладки без регистрации opencart 2-3

Что бы получить работающий список закладок без регистрации нужно будет внести изменения в контроллер - /catalog/controller/account/wishlist.php

В результате получим отображение списка закладок и возможность удаления товаров и списка. Сам список будет взят из сессии (по-умолчанию только из базы с привязкой к пользователю)

Начнем. Откроем /catalog/controller/account/wishlist.php и внесем правки (все в порядке изменений в файле):

Убираем проверку авторизации

В самом начале файла комментируем строки (должно получиться так):

/*if (!$this->customer->isLogged()) {
$this->session->data['redirect'] = $this->url->link('account/wishlist', '', true);
$this->response->redirect($this->url->link('account/login', '', true));
}*/

Возможность удаления из закладок

Чуть дальше находим:

// Remove Wishlist
$this->model_account_wishlist->deleteWishlist($this->request->get['remove']);

Здесь добавим проверку - авторизован ли посетитель, если нет возьмем из сессии список закладок, кроме товара из запроса на удаление, почистим закладки и запишем обратно получившийся результат:

if ($this->customer->isLogged()) {
	$this->model_account_wishlist->deleteWishlist($this->request->get['remove']);
} else {
	$prods = $this->session->data['wishlist'];
	$this->session->data['wishlist'] = '';
	foreach ($prods as $prod) if ($prod != $this->request->get['remove']) {
		$this->session->data['wishlist'][] = $prod;
	}
}

Получение товаров из закладок

Здесь все по аналогии с удалением, работаем с закладками в сессии. Находим:

$results = $this->model_account_wishlist->getWishlist();

Меняем на следующий код:

$results = array();
if ($this->customer->isLogged()) {
	$results = $this->model_account_wishlist->getWishlist();
} else if (isset($this->session->data['wishlist'])) {
	$prods = $this->session->data['wishlist'];
	foreach ($prods as $prod) {
		$results[]['product_id'] = $prod;
	}
}

Вот и все, должно работать.

Добавить комментарий

Комментарии ()