Закладки без регистрации 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, переходим в меню «Дизайн > Макеты» и создаем новый макет.

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

С помощью этих простых манипуляций мы избавились от меню личного кабинета на странице избранного товара Opencart.
Далее, для того, чтоб стилизовать вывод сохраненных товаров, нужно открыть файл шаблона:
catalog/view/theme/тема/template/account/wishlist.tpl
Где «тема» — это название используемой темы магазина.
Не буду описывать что именно нужно править в этом файле, так как каждый магазин уникален. Я же всегда удаляю вывод товара таблицей. Стилизую превью закладок в соответствии с товарами на странице категории.
Всем удачных продаж и удобных интернет-магазинов на Opencart и не только.
