Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Проверить есть ли товар в Wishlist


Recommended Posts

Данное решение для Опенкарта 3.х

Допустим если есть желание менять цвет иконки у продукта если он есть в закладках

 

будем проверять и создавать массив

$this->session->data['wishlist']

 

Почему создавать? При регистрации/авторизации он будет пуст 

 

Итак, идем в контроллер header.php

 

там уже есть вот такой код

if ($this->customer->isLogged()) {
			$this->load->model('account/wishlist');

			$data['text_wishlist'] = sprintf($this->language->get('text_wishlist'), $this->model_account_wishlist->getTotalWishlist());
		} else {
			$data['text_wishlist'] = sprintf($this->language->get('text_wishlist'), (isset($this->session->data['wishlist']) ? count($this->session->data['wishlist']) : 0));
		}

 

после

$this->load->model('account/wishlist');

 

добавить

			$p_wishlist = $this->model_account_wishlist->getWishlist();
			
			if( !empty($p_wishlist) ) {
				foreach( $p_wishlist as $val ) {
					if( isset($this->session->data['wishlist']) && !in_array($val['product_id'], $this->session->data['wishlist']) ) {
					    $this->session->data['wishlist'][] = $val['product_id'];
				    }
				}
			}

 

 

Допустим будем проверять на странице категории

 

в контроллере category.php находим вот такой код

				$data['products'][] = array(
					'product_id'  => $result['product_id'],
					'thumb'       => $image,
					'name'        => $result['name'],
					'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..',
					'price'       => $price,
					'special'     => $special,
					'tax'         => $tax,
					'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,
					'rating'      => $result['rating'],
					'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
				);

 

добавляем в массив значение

'is_not' => ( isset($this->session->data['wishlist']) && in_array($result['product_id'], $this->session->data['wishlist']) ) ? true : false,

 

в итоге вот так выходит

				$data['products'][] = array(
					'product_id'  => $result['product_id'],
					'thumb'       => $image,
					'name'        => $result['name'],
					'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..',
					'price'       => $price,
					'special'     => $special,
					'tax'         => $tax,
					'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,
					'rating'      => $result['rating'],
					'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
                   'is_not' => ( isset($this->session->data['wishlist']) && in_array($result['product_id'], $this->session->data['wishlist']) ) ? true : false
				);

 

Теперь на фронте в шаблоне делаем проверку

{% if product.is_not %}
есть в закладках
{% else %}
нет продукта в закладках
{% endif %}

 

В общем всё. Далее, думаю сами разберетесь что куда вставить в проверке на фронте

 

  • +1 4
Надіслати
Поділитися на інших сайтах

Проверено, все работает как часы
Ну и не забыть добавить в common.js замену цвета после успешной обработки, тогда вообще красота. 

 

  • +1 1
Надіслати
Поділитися на інших сайтах

  • 9 months later...
'is_not' => ( isset($this->session->data['wishlist']) && in_array($result['product_id'], $this->session->data['wishlist']) ) ? true : false,

 

Отлично работает в контроллере category.php

 

 

А вот как написать, чтобы раюботало в контроллере product.php?

Надіслати
Поділитися на інших сайтах


  • 8 months later...

для товара так, может кому пригодиться

в catalog/controller/product/product.php
 

$data['is_not'] = ( isset($this->session->data['wishlist']) && in_array($product_info['product_id'], $this->session->data['wishlist']) ) ? true : false;

 

в catalog/view/theme/вашатема/template/product/product.twig

{% if is_not %}
есть в закладках
{% else %}
нет продукта в закладках
{% endif %}

 

 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.