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


shturmavik
 Поделиться

Рекомендуемые сообщения

Как можно на странице product.tpl и category.tpl проверить есть ли товар в Избранном/ Закладках?
Хочу применить css стиль.
Движок OpenCart 2.1.0.2 (rs.1)

Ссылка на комментарий
Поделиться на других сайтах

Честно я 10 часов просидел в поисках овтетов с форумов, в основном с англоязычных. Мне сложно понять куда подставлять данные коды: в controller или в view.

Есть ли такая возможность проверить на своём движке или скинуть код и куда подставлять его и я у себя реализую.

Мне, по правде, сложно понять куда это вставить 

$this->model_account_wishlist->getTotalWishlist());

Ну и скорее всего это часть какого-то большого кода.

Спасибо, что ответили. Погуглю инфу по вашему куску кода.

Ссылка на комментарий
Поделиться на других сайтах

смотрите вот весь кусок кода который в шапку получает данные про закладки

// Wishlist
		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));
		}

собственно тут данных достаточно что бы что то этакое которое вам нужно сварганить

дальше остается или эксперементировать или в раздел для лентяев :-)

Ссылка на комментарий
Поделиться на других сайтах

Подскажите. Вставил в catalog/model/account/wishlist.php
 

        public function getAllWishlist() {
        if ($data = $this->getWishlist()) {
            $out = array();
            foreach ($data as $key => $value) {
                $out[] = $value['product_id'];
            }
            return $out;
        } else if (isset($this->session->data['wishlist'])) {
            return $this->session->data['wishlist'];
        } else {
            return false;
        }

    }

Добавил код в catalog/controller/product/category.php
 

$this->load->model('account/wishlist');
        $data['AllWishlist'] = $this->model_account_wishlist->getAllWishlist();

И в файл catalog/view/theme/default/template/product/category.tpl
 

<?php if(in_array($product['product_id'], $AllWishlist)) { ?>
        Этот товар в закладках
        <?php } ?>

Браузер выдает ошибку 
 

Warning: in_array() expects parameter 2 to be array, boolean given in /home/u146021/best-socksru/www/catalog/view/theme/default/template/product/category.tpl on line 130
Ссылка на комментарий
Поделиться на других сайтах

Поступил совет.

не нужно в моделе что то добавлять. Все данные есть в сессии $this->session->data['wishlist']
Именно его вы можете перебрать, чтобы получить только id товара без ключа.

А если мне сделать такое сравнение товара с wishlist
 

$product_info = $this->model_catalog_product->getProduct($product_id);
    $this->load->model('account/wishlist');
  
        if ($product_info) {
            if ($this->session->data['wishlist'] == $this->request->post['product_id']) {  
                $data['AllWishlist'] = true;
            }
            }

Или есть вот такой код:
 

if (isset($this->session->data['wishlist'])) {
  if (in_array($product_id, $this->session->data['wishlist'])) {
    echo 'do something';
  }
} 

Но они у меня не сработали или я их ставлю не туда

Ссылка на комментарий
Поделиться на других сайтах

Или есть вот такой код:

вставьте его в catalog\controller\product\product.php
например перед

if ($product_info) {

и увидите результат.

 

 

вставьте его в catalog\controller\product\product.php
например перед
if ($product_info) {
и увидите результат.


Отлично. Уже есть движение. Но есть не достаток:
Когда например в сессии товара нет, залогинимся и добавим товар в закладки, то уже проверка не работает. Я так понял, что уже надо считывать из базы данных. Так как сессия отключается (в плане код). Какие могут быть дальше действия?

Ссылка на комментарий
Поделиться на других сайтах

  • 3 года спустя...

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Показать вместо этого как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Нельзя вставлять изображения напрямую. Загрузите или вставьте изображения по URL.

 Поделиться