COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

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


shturmavik

Recommended Posts

Как можно на странице 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 years later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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

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

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.