Приветствую, уважаемые форумчане. Ситуация: нужно чтобы в категории сохранялись отметки на товаре, который добавлен в сравнение. То есть, например значок fa-circle-o менялся на fa-check-circle-o после добавления в сравнение. Как-то немного несвязно объяснил, но надеюсь поймете и поможете. Заранее спасибо! С Уважением, я
какая версия движка, 2 или 1? нужно читать данные сессии, масив wishlist и делать проверку ето если не авторизирован покупатель, если авторизирован то делать выборку с БД с таблици customer_wishlist
отредактируйте модель, а именно catalog/model/account/wishlist.php добавьте вконце файла перед PHP: } следующую ф-цию PHP: public function getAllWishlist() {// by nix 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; } } как она работает: сначала проверяет если пользователь авторизован то выбирает из БД товары которые он добавил в избраные, потом если нет результата от етого, то из сессии достает товары которые добавил пользователь, если и там нет то возвращает лож ета ф-ция возвращает массив с ИД товаров Теперь осталось сделать проверку где удобно, лучше всего делать проверку ф-цией in_array(); Вот например в категории catalog/controller/product/category.php можно сразу перед кодом PHP: $data['breadcrumbs'] = array(); вставить следующий PHP: $this->load->model('account/wishlist'); $data['AllWishlist'] = $this->model_account_wishlist->getAllWishlist(); Теперь в самом шаблоне и сделаем проверку открываем файл catalog/view/theme/default/template/product/category.tpl и после кода PHP: <?php foreach ($products as $product) { ?> пишем проверку и выводим что надо PHP: <?php if(in_array($product['product_id'], $AllWishlist)) { ?> Цей товар вже в списку бажаних <?php } ?> Даную модель можно юзать где угодно, например и в товаре.
Но это со списком желаемых. А в сравнение так же? То есть, после нажатия на кнопку "Сравнить", пользователь должен видеть в категории отметки на тех товарах, которые он добавил. Чтобы не потерялся... Хз... шэф сказал сделать так. А начальник всегда прав)
Задача у меня такая: Как можно на странице product.tpl и category.tpl проверить есть ли товар в Избранном/ Закладках? Хочу применить css стиль. Движок OpenCart 2.1.0.2 (rs.1) Когда ставлю такой код для Wishlist как вы привели выше, то браузер выдает ошибку Что делать? Другие на этот повод советуют вот что: --- Добавлено, 27 мар 2016 --- Код: 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) { и увидите результат. Отлично. Уже есть движение. Но есть не достаток: Когда например в сессии товара нет, залогинимся и добавим товар в закладки, то уже проверка не работает. Я так понял, что уже надо считывать из базы данных. Так как сессия отключается (в плане код). Какие могут быть дальше действия? --- Добавлено, 27 мар 2016 --- Добавил код в catalog/model/account/wishlist.php Код: public function getAllWishlist() { // by nix 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']; } } Добавил код в catalog/controller/product/product.php Между этим кодом Код: $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); и этим Код: if ($product_info) { $url = ''; if (isset($this->request->get['path'])) { ВОт такой код: Код: $this->load->model('account/wishlist'); $zol_wish = $this->model_account_wishlist->getAllWishlist(); if (isset($product_id) && isset($zol_wish)) { if (in_array($product_id, $zol_wish)) { $data['AllWishlist'] = true; } } В файл catalog/view/theme/default/template/product/product.tpl добавил Код: <?php if(isset($AllWishlist)) { ?> style="color: red" <?php } ?> Теперь в карточке товара если добавлен товар в избранное, то загорается сердечко красным. Но такое теперь не работает в категории. Как минимум ругаеться на product_id. Как можно в catalog/controller/product/category.php получить product_id
Решено. Ответ на этих форумах http://forum.opencart-russia.ru/threads/proverit-est-li-tovar-v-wishlist.2644/ http://forum.opencart.pro/topic/2273-проверить-есть-ли-товар-в-wishlist/
Добрый день! В категориях все отлично получилось сделать, а как сделать тоже самое в самой карточке товара?