Закладки без регистрации Opencart 2 — избранные товары без авторизации

Во всех крупных магазинах пользователь без авторизации может легко добавить и просмотреть любой товар в избранное. К сожалению в CMS Opencart по умолчанию такой функции нет, приходится покупать различные модули или искать подходящий шаблон.

В этой статье я расскажу как реализовать возможность просмотра добавленных товаров в избранное без регистрации и авторизации в магазине написанном на движке Opencart.

Тестировалось на версии: Opencart 2.1

Добавление товара в избранное без регистрации Opencart 2

Обязательно сделайте резервную копию файлов сайта или же просто скачайте на компьютер файл, который будете править.

Открываем файл контроллера избранных товаров (wishlist.php):

catalog/controller/account/wishlist.php

В самом верху находим блок с кодом:

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

			$this->response->redirect($this->url->link('account/login', '', 'SSL'));
		}

И комментируем его, должно получится так:

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

			$this->response->redirect($this->url->link('account/login', '', 'SSL'));
		}*/

Далее находим строку:

$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'] = array();
				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 (!empty($this->session->data['wishlist'])) {
$prods = $this->session->data['wishlist'];
foreach ($prods as $prod) {
$results[]['product_id'] = $prod;
}
}

На этом все, теперь товары будут добавляться в сохраненные товары без регистрации и авторизации.

Товары, которые были добавлены в избранное в авторизированном аккаунте, будут сохраняться для следующей авторизации.

Стилизовать страницу с избранными товарами (закладками)

Теперь предлагаю немного улучшить страницу с избранными товарами. По умолчанию в Опенкарте на страницу закладок добавлено меню личного кабинета, а так как мы уже не обязаны заходить в кабинет, для того, чтоб их просмотреть, то и данное меню нам не интересно.

Для того, чтоб убрать меню личного кабинета, заходим в административную панель Opencart, переходим в меню «Дизайн > Макеты» и создаем новый макет.

Закладки без регистрации аккаунта Opencart 2

Нажимаем «Плюс» и переходим к этапу создания нового макета «Избранное». Прописываем любое название, Поле «Магазин» оставляем «По умолчанию». В поле «Путь» добавляем путь к нашему фалу: account/wishlist и Сохраняем макет.

С помощью этих простых манипуляций мы избавились от меню личного кабинета на странице избранного товара Opencart.

Далее, для того, чтоб стилизовать вывод сохраненных товаров, нужно открыть файл шаблона:

catalog/view/theme/тема/template/account/wishlist.tpl

Где «тема» — это название используемой темы магазина.

Не буду описывать что именно нужно править в этом файле, так как каждый магазин уникален. Я же всегда удаляю вывод товара таблицей. Стилизую превью закладок в соответствии с товарами на странице категории.

Всем удачных продаж и удобных интернет-магазинов на Opencart и не только.

Автор статьи
Автор статьи: Роман Евтушенко
Разработчик
Пост опубликован: 16.12.2021
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *