mss Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 Здравствуйте! Подскажите пжл, как реализовать в категории Плюс/минус вместо кнопки "Купить". http://joxi.ru/52a1l8GiEJEpy2 По нажатию Плюс - товар добавляется в корзину(+1) По нажатию Минус - Минусуется с корзины(-1) Надіслати Поділитися на інших сайтах More sharing options...
SergeTkach Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 Вопрос слишком общий. Но, возможно, триггеры Вам помогут. http://jquery.page2page.ru/index.php5/Вызов_события Надіслати Поділитися на інших сайтах More sharing options... iglin Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 17 минут назад, mss сказал: По нажатию Плюс - товар добавляется в корзину(+1) По нажатию Минус - Минусуется с корзины(-1) С плюсом всё легко - просто вызываете событие add которое на кнопке купить, оно и будет добавлять. А вот с удалением сложнее. Смотрите как это сделано в корзине. В корзине удаление идет по cart_id товара в корзине. Вам нужно найти все товары которые сейчас в корзине покупателя, выбрать только тот у которого product_id равен тому на котором тыкнули минус и уменьшить его количество. Недавно обсуждал подобную тему, может натолкнёт вас на нужные мысли Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 10 минут назад, iglin сказал: С плюсом всё легко - просто вызываете событие add которое на кнопке купить, оно и будет добавлять. Ага, с плюсом - проблем нет. 11 минут назад, iglin сказал: с удалением сложнее с минусом - пока не понятно Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 19 минут назад, SergeTkach сказал: возможно, триггеры Вам помогут. на плюс да. Надіслати Поділитися на інших сайтах More sharing options... iglin Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 Только что, mss сказал: с минусом - пока не понятно Ну если прям совсем образно, то нужно в js создать функцию del например по аналогии с add, в ней обращаться через ajax на новую функцию которую вы создадите в контроллере checkout/cart (пример такой функции я выше дал, но там полное удаление товара, в вашем случае нужно переделать и менять количество на -1, ну или удалять если всего 1 в корзине), дальше через js перерисовывать так же корзину как при добавлении... 1 Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 common.js $(function(){ $('.btn-remove-in-cart').click(function(){ let product_id = $(this).attr('data-productid'); $.ajax({ url: 'index.php?route=checkout/cart/removeAllProductsForCartId', type:'post', dataType:'json', data:{'product_id': product_id}, success: function(res){ // тут, обновляем корзину // удаляем кнопку } }) }) }); model/product public function getProductsCartId($product_id){ $query = $this->db->query("SELECT cart_id FROM " . DB_PREFIX . "cart WHERE product_id = '" . (int) $product_id . "' AND api_id = '" . (isset($this->session->data['api_id']) ? (int) $this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int) $this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "'"); return $query->rows; } category.php $query_cart_id = $this->model_catalog_product->getProductsCartId($result['product_id']); $in_cart = false; if($query_cart_id){ $in_cart = true; } ... 'in_cart' => $in_cart, category.tpl <?php if($product['in_cart']){?> <button data-productid="<?php echo $product['product_id']; ?>" class="btn-remove-in-cart btn btn-default">Удалить из корины</button> <?php } ?> Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 кнопка Удалить из корзины появилась, но не удаляет Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 2 минуты назад, mss сказал: common.js $(function(){ $('.btn-remove-in-cart').click(function(){ let product_id = $(this).attr('data-productid'); $.ajax({ url: 'index.php?route=checkout/cart/removeAllProductsForCartId', type:'post', dataType:'json', data:{'product_id': product_id}, success: function(res){ // тут, обновляем корзину // удаляем кнопку } }) }) }); model/product public function getProductsCartId($product_id){ $query = $this->db->query("SELECT cart_id FROM " . DB_PREFIX . "cart WHERE product_id = '" . (int) $product_id . "' AND api_id = '" . (isset($this->session->data['api_id']) ? (int) $this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int) $this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "'"); return $query->rows; } category.php $query_cart_id = $this->model_catalog_product->getProductsCartId($result['product_id']); $in_cart = false; if($query_cart_id){ $in_cart = true; } ... 'in_cart' => $in_cart, category.tpl <?php if($product['in_cart']){?> <button data-productid="<?php echo $product['product_id']; ?>" class="btn-remove-in-cart btn btn-default">Удалить из корины</button> <?php } ?> контроллер cart public function removeAllProductsForCartId(){ $this->load->language('checkout/cart'); $json = array(); // Remove if (isset($this->request->post['key'])) { $products = $this->cart->getProducts(); foreach ($products as $product) { if ($product['product_id'] == $this->request->post['key']) { $this->cart->remove($product['cart_id']); unset($this->session->data['vouchers'][$product['cart_id']]); } } $json['success'] = $this->language->get('text_remove'); unset($this->session->data['shipping_method']); unset($this->session->data['shipping_methods']); unset($this->session->data['payment_method']); unset($this->session->data['payment_methods']); unset($this->session->data['reward']); // Totals $this->load->model('extension/extension'); $totals = array(); $taxes = $this->cart->getTaxes(); $total = 0; // Because __call can not keep var references so we put them into an array. $total_data = array( 'totals' => &$totals, 'taxes' => &$taxes, 'total' => &$total ); // Display prices if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $sort_order = array(); $results = $this->model_extension_extension->getExtensions('total'); foreach ($results as $key => $value) { $sort_order[$key] = $this->config->get($value['code'] . '_sort_order'); } array_multisort($sort_order, SORT_ASC, $results); foreach ($results as $result) { if ($this->config->get($result['code'] . '_status')) { $this->load->model('extension/total/' . $result['code']); // We have to put the totals in an array so that they pass by reference. $this->{'model_extension_total_' . $result['code']}->getTotal($total_data); } } $sort_order = array(); foreach ($totals as $key => $value) { $sort_order[$key] = $value['sort_order']; } array_multisort($sort_order, SORT_ASC, $totals); } $json['total'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total, $this->session->data['currency'])); } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } Надіслати Поділитися на інших сайтах More sharing options... iglin Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 9 минут назад, mss сказал: кнопка Удалить из корзины появилась, но не удаляет ну как минимум в js у вас data:{'product_id': product_id}, а в removeAllProductsForCartId вы ждёте key Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 34 минуты назад, iglin сказал: ну как минимум в js у вас data:{'product_id': product_id}, а в removeAllProductsForCartId вы ждёте key копипаст, он такой. Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 18 лютого 2021 Share Опубліковано: 18 лютого 2021 по внешнему виду такого +/- можно подрубить вот такой плагинчик, вроде ничего Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 18 лютого 2021 Автор Share Опубліковано: 18 лютого 2021 сейчас главное - функционал) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Плюс/Минус Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
iglin Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 17 минут назад, mss сказал: По нажатию Плюс - товар добавляется в корзину(+1) По нажатию Минус - Минусуется с корзины(-1) С плюсом всё легко - просто вызываете событие add которое на кнопке купить, оно и будет добавлять. А вот с удалением сложнее. Смотрите как это сделано в корзине. В корзине удаление идет по cart_id товара в корзине. Вам нужно найти все товары которые сейчас в корзине покупателя, выбрать только тот у которого product_id равен тому на котором тыкнули минус и уменьшить его количество. Недавно обсуждал подобную тему, может натолкнёт вас на нужные мысли Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 10 минут назад, iglin сказал: С плюсом всё легко - просто вызываете событие add которое на кнопке купить, оно и будет добавлять. Ага, с плюсом - проблем нет. 11 минут назад, iglin сказал: с удалением сложнее с минусом - пока не понятно Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 19 минут назад, SergeTkach сказал: возможно, триггеры Вам помогут. на плюс да. Надіслати Поділитися на інших сайтах More sharing options... iglin Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 Только что, mss сказал: с минусом - пока не понятно Ну если прям совсем образно, то нужно в js создать функцию del например по аналогии с add, в ней обращаться через ajax на новую функцию которую вы создадите в контроллере checkout/cart (пример такой функции я выше дал, но там полное удаление товара, в вашем случае нужно переделать и менять количество на -1, ну или удалять если всего 1 в корзине), дальше через js перерисовывать так же корзину как при добавлении... 1 Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 common.js $(function(){ $('.btn-remove-in-cart').click(function(){ let product_id = $(this).attr('data-productid'); $.ajax({ url: 'index.php?route=checkout/cart/removeAllProductsForCartId', type:'post', dataType:'json', data:{'product_id': product_id}, success: function(res){ // тут, обновляем корзину // удаляем кнопку } }) }) }); model/product public function getProductsCartId($product_id){ $query = $this->db->query("SELECT cart_id FROM " . DB_PREFIX . "cart WHERE product_id = '" . (int) $product_id . "' AND api_id = '" . (isset($this->session->data['api_id']) ? (int) $this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int) $this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "'"); return $query->rows; } category.php $query_cart_id = $this->model_catalog_product->getProductsCartId($result['product_id']); $in_cart = false; if($query_cart_id){ $in_cart = true; } ... 'in_cart' => $in_cart, category.tpl <?php if($product['in_cart']){?> <button data-productid="<?php echo $product['product_id']; ?>" class="btn-remove-in-cart btn btn-default">Удалить из корины</button> <?php } ?> Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 кнопка Удалить из корзины появилась, но не удаляет Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 2 минуты назад, mss сказал: common.js $(function(){ $('.btn-remove-in-cart').click(function(){ let product_id = $(this).attr('data-productid'); $.ajax({ url: 'index.php?route=checkout/cart/removeAllProductsForCartId', type:'post', dataType:'json', data:{'product_id': product_id}, success: function(res){ // тут, обновляем корзину // удаляем кнопку } }) }) }); model/product public function getProductsCartId($product_id){ $query = $this->db->query("SELECT cart_id FROM " . DB_PREFIX . "cart WHERE product_id = '" . (int) $product_id . "' AND api_id = '" . (isset($this->session->data['api_id']) ? (int) $this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int) $this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "'"); return $query->rows; } category.php $query_cart_id = $this->model_catalog_product->getProductsCartId($result['product_id']); $in_cart = false; if($query_cart_id){ $in_cart = true; } ... 'in_cart' => $in_cart, category.tpl <?php if($product['in_cart']){?> <button data-productid="<?php echo $product['product_id']; ?>" class="btn-remove-in-cart btn btn-default">Удалить из корины</button> <?php } ?> контроллер cart public function removeAllProductsForCartId(){ $this->load->language('checkout/cart'); $json = array(); // Remove if (isset($this->request->post['key'])) { $products = $this->cart->getProducts(); foreach ($products as $product) { if ($product['product_id'] == $this->request->post['key']) { $this->cart->remove($product['cart_id']); unset($this->session->data['vouchers'][$product['cart_id']]); } } $json['success'] = $this->language->get('text_remove'); unset($this->session->data['shipping_method']); unset($this->session->data['shipping_methods']); unset($this->session->data['payment_method']); unset($this->session->data['payment_methods']); unset($this->session->data['reward']); // Totals $this->load->model('extension/extension'); $totals = array(); $taxes = $this->cart->getTaxes(); $total = 0; // Because __call can not keep var references so we put them into an array. $total_data = array( 'totals' => &$totals, 'taxes' => &$taxes, 'total' => &$total ); // Display prices if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $sort_order = array(); $results = $this->model_extension_extension->getExtensions('total'); foreach ($results as $key => $value) { $sort_order[$key] = $this->config->get($value['code'] . '_sort_order'); } array_multisort($sort_order, SORT_ASC, $results); foreach ($results as $result) { if ($this->config->get($result['code'] . '_status')) { $this->load->model('extension/total/' . $result['code']); // We have to put the totals in an array so that they pass by reference. $this->{'model_extension_total_' . $result['code']}->getTotal($total_data); } } $sort_order = array(); foreach ($totals as $key => $value) { $sort_order[$key] = $value['sort_order']; } array_multisort($sort_order, SORT_ASC, $totals); } $json['total'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total, $this->session->data['currency'])); } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } Надіслати Поділитися на інших сайтах More sharing options... iglin Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 9 минут назад, mss сказал: кнопка Удалить из корзины появилась, но не удаляет ну как минимум в js у вас data:{'product_id': product_id}, а в removeAllProductsForCartId вы ждёте key Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 34 минуты назад, iglin сказал: ну как минимум в js у вас data:{'product_id': product_id}, а в removeAllProductsForCartId вы ждёте key копипаст, он такой. Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 18 лютого 2021 Share Опубліковано: 18 лютого 2021 по внешнему виду такого +/- можно подрубить вот такой плагинчик, вроде ничего Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 18 лютого 2021 Автор Share Опубліковано: 18 лютого 2021 сейчас главное - функционал) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Плюс/Минус Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 10 минут назад, iglin сказал: С плюсом всё легко - просто вызываете событие add которое на кнопке купить, оно и будет добавлять. Ага, с плюсом - проблем нет. 11 минут назад, iglin сказал: с удалением сложнее с минусом - пока не понятно Надіслати Поділитися на інших сайтах More sharing options...
fanatic Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 19 минут назад, SergeTkach сказал: возможно, триггеры Вам помогут. на плюс да. Надіслати Поділитися на інших сайтах More sharing options... iglin Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 Только что, mss сказал: с минусом - пока не понятно Ну если прям совсем образно, то нужно в js создать функцию del например по аналогии с add, в ней обращаться через ajax на новую функцию которую вы создадите в контроллере checkout/cart (пример такой функции я выше дал, но там полное удаление товара, в вашем случае нужно переделать и менять количество на -1, ну или удалять если всего 1 в корзине), дальше через js перерисовывать так же корзину как при добавлении... 1 Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 common.js $(function(){ $('.btn-remove-in-cart').click(function(){ let product_id = $(this).attr('data-productid'); $.ajax({ url: 'index.php?route=checkout/cart/removeAllProductsForCartId', type:'post', dataType:'json', data:{'product_id': product_id}, success: function(res){ // тут, обновляем корзину // удаляем кнопку } }) }) }); model/product public function getProductsCartId($product_id){ $query = $this->db->query("SELECT cart_id FROM " . DB_PREFIX . "cart WHERE product_id = '" . (int) $product_id . "' AND api_id = '" . (isset($this->session->data['api_id']) ? (int) $this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int) $this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "'"); return $query->rows; } category.php $query_cart_id = $this->model_catalog_product->getProductsCartId($result['product_id']); $in_cart = false; if($query_cart_id){ $in_cart = true; } ... 'in_cart' => $in_cart, category.tpl <?php if($product['in_cart']){?> <button data-productid="<?php echo $product['product_id']; ?>" class="btn-remove-in-cart btn btn-default">Удалить из корины</button> <?php } ?> Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 кнопка Удалить из корзины появилась, но не удаляет Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 2 минуты назад, mss сказал: common.js $(function(){ $('.btn-remove-in-cart').click(function(){ let product_id = $(this).attr('data-productid'); $.ajax({ url: 'index.php?route=checkout/cart/removeAllProductsForCartId', type:'post', dataType:'json', data:{'product_id': product_id}, success: function(res){ // тут, обновляем корзину // удаляем кнопку } }) }) }); model/product public function getProductsCartId($product_id){ $query = $this->db->query("SELECT cart_id FROM " . DB_PREFIX . "cart WHERE product_id = '" . (int) $product_id . "' AND api_id = '" . (isset($this->session->data['api_id']) ? (int) $this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int) $this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "'"); return $query->rows; } category.php $query_cart_id = $this->model_catalog_product->getProductsCartId($result['product_id']); $in_cart = false; if($query_cart_id){ $in_cart = true; } ... 'in_cart' => $in_cart, category.tpl <?php if($product['in_cart']){?> <button data-productid="<?php echo $product['product_id']; ?>" class="btn-remove-in-cart btn btn-default">Удалить из корины</button> <?php } ?> контроллер cart public function removeAllProductsForCartId(){ $this->load->language('checkout/cart'); $json = array(); // Remove if (isset($this->request->post['key'])) { $products = $this->cart->getProducts(); foreach ($products as $product) { if ($product['product_id'] == $this->request->post['key']) { $this->cart->remove($product['cart_id']); unset($this->session->data['vouchers'][$product['cart_id']]); } } $json['success'] = $this->language->get('text_remove'); unset($this->session->data['shipping_method']); unset($this->session->data['shipping_methods']); unset($this->session->data['payment_method']); unset($this->session->data['payment_methods']); unset($this->session->data['reward']); // Totals $this->load->model('extension/extension'); $totals = array(); $taxes = $this->cart->getTaxes(); $total = 0; // Because __call can not keep var references so we put them into an array. $total_data = array( 'totals' => &$totals, 'taxes' => &$taxes, 'total' => &$total ); // Display prices if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $sort_order = array(); $results = $this->model_extension_extension->getExtensions('total'); foreach ($results as $key => $value) { $sort_order[$key] = $this->config->get($value['code'] . '_sort_order'); } array_multisort($sort_order, SORT_ASC, $results); foreach ($results as $result) { if ($this->config->get($result['code'] . '_status')) { $this->load->model('extension/total/' . $result['code']); // We have to put the totals in an array so that they pass by reference. $this->{'model_extension_total_' . $result['code']}->getTotal($total_data); } } $sort_order = array(); foreach ($totals as $key => $value) { $sort_order[$key] = $value['sort_order']; } array_multisort($sort_order, SORT_ASC, $totals); } $json['total'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total, $this->session->data['currency'])); } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } Надіслати Поділитися на інших сайтах More sharing options... iglin Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 9 минут назад, mss сказал: кнопка Удалить из корзины появилась, но не удаляет ну как минимум в js у вас data:{'product_id': product_id}, а в removeAllProductsForCartId вы ждёте key Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 34 минуты назад, iglin сказал: ну как минимум в js у вас data:{'product_id': product_id}, а в removeAllProductsForCartId вы ждёте key копипаст, он такой. Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 18 лютого 2021 Share Опубліковано: 18 лютого 2021 по внешнему виду такого +/- можно подрубить вот такой плагинчик, вроде ничего Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 18 лютого 2021 Автор Share Опубліковано: 18 лютого 2021 сейчас главное - функционал) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Плюс/Минус Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
iglin Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 Только что, mss сказал: с минусом - пока не понятно Ну если прям совсем образно, то нужно в js создать функцию del например по аналогии с add, в ней обращаться через ajax на новую функцию которую вы создадите в контроллере checkout/cart (пример такой функции я выше дал, но там полное удаление товара, в вашем случае нужно переделать и менять количество на -1, ну или удалять если всего 1 в корзине), дальше через js перерисовывать так же корзину как при добавлении... 1 Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 common.js $(function(){ $('.btn-remove-in-cart').click(function(){ let product_id = $(this).attr('data-productid'); $.ajax({ url: 'index.php?route=checkout/cart/removeAllProductsForCartId', type:'post', dataType:'json', data:{'product_id': product_id}, success: function(res){ // тут, обновляем корзину // удаляем кнопку } }) }) }); model/product public function getProductsCartId($product_id){ $query = $this->db->query("SELECT cart_id FROM " . DB_PREFIX . "cart WHERE product_id = '" . (int) $product_id . "' AND api_id = '" . (isset($this->session->data['api_id']) ? (int) $this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int) $this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "'"); return $query->rows; } category.php $query_cart_id = $this->model_catalog_product->getProductsCartId($result['product_id']); $in_cart = false; if($query_cart_id){ $in_cart = true; } ... 'in_cart' => $in_cart, category.tpl <?php if($product['in_cart']){?> <button data-productid="<?php echo $product['product_id']; ?>" class="btn-remove-in-cart btn btn-default">Удалить из корины</button> <?php } ?> Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 кнопка Удалить из корзины появилась, но не удаляет Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 2 минуты назад, mss сказал: common.js $(function(){ $('.btn-remove-in-cart').click(function(){ let product_id = $(this).attr('data-productid'); $.ajax({ url: 'index.php?route=checkout/cart/removeAllProductsForCartId', type:'post', dataType:'json', data:{'product_id': product_id}, success: function(res){ // тут, обновляем корзину // удаляем кнопку } }) }) }); model/product public function getProductsCartId($product_id){ $query = $this->db->query("SELECT cart_id FROM " . DB_PREFIX . "cart WHERE product_id = '" . (int) $product_id . "' AND api_id = '" . (isset($this->session->data['api_id']) ? (int) $this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int) $this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "'"); return $query->rows; } category.php $query_cart_id = $this->model_catalog_product->getProductsCartId($result['product_id']); $in_cart = false; if($query_cart_id){ $in_cart = true; } ... 'in_cart' => $in_cart, category.tpl <?php if($product['in_cart']){?> <button data-productid="<?php echo $product['product_id']; ?>" class="btn-remove-in-cart btn btn-default">Удалить из корины</button> <?php } ?> контроллер cart public function removeAllProductsForCartId(){ $this->load->language('checkout/cart'); $json = array(); // Remove if (isset($this->request->post['key'])) { $products = $this->cart->getProducts(); foreach ($products as $product) { if ($product['product_id'] == $this->request->post['key']) { $this->cart->remove($product['cart_id']); unset($this->session->data['vouchers'][$product['cart_id']]); } } $json['success'] = $this->language->get('text_remove'); unset($this->session->data['shipping_method']); unset($this->session->data['shipping_methods']); unset($this->session->data['payment_method']); unset($this->session->data['payment_methods']); unset($this->session->data['reward']); // Totals $this->load->model('extension/extension'); $totals = array(); $taxes = $this->cart->getTaxes(); $total = 0; // Because __call can not keep var references so we put them into an array. $total_data = array( 'totals' => &$totals, 'taxes' => &$taxes, 'total' => &$total ); // Display prices if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $sort_order = array(); $results = $this->model_extension_extension->getExtensions('total'); foreach ($results as $key => $value) { $sort_order[$key] = $this->config->get($value['code'] . '_sort_order'); } array_multisort($sort_order, SORT_ASC, $results); foreach ($results as $result) { if ($this->config->get($result['code'] . '_status')) { $this->load->model('extension/total/' . $result['code']); // We have to put the totals in an array so that they pass by reference. $this->{'model_extension_total_' . $result['code']}->getTotal($total_data); } } $sort_order = array(); foreach ($totals as $key => $value) { $sort_order[$key] = $value['sort_order']; } array_multisort($sort_order, SORT_ASC, $totals); } $json['total'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total, $this->session->data['currency'])); } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } Надіслати Поділитися на інших сайтах More sharing options... iglin Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 9 минут назад, mss сказал: кнопка Удалить из корзины появилась, но не удаляет ну как минимум в js у вас data:{'product_id': product_id}, а в removeAllProductsForCartId вы ждёте key Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 34 минуты назад, iglin сказал: ну как минимум в js у вас data:{'product_id': product_id}, а в removeAllProductsForCartId вы ждёте key копипаст, он такой. Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 18 лютого 2021 Share Опубліковано: 18 лютого 2021 по внешнему виду такого +/- можно подрубить вот такой плагинчик, вроде ничего Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 18 лютого 2021 Автор Share Опубліковано: 18 лютого 2021 сейчас главное - функционал) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Плюс/Минус Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV
mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 common.js $(function(){ $('.btn-remove-in-cart').click(function(){ let product_id = $(this).attr('data-productid'); $.ajax({ url: 'index.php?route=checkout/cart/removeAllProductsForCartId', type:'post', dataType:'json', data:{'product_id': product_id}, success: function(res){ // тут, обновляем корзину // удаляем кнопку } }) }) }); model/product public function getProductsCartId($product_id){ $query = $this->db->query("SELECT cart_id FROM " . DB_PREFIX . "cart WHERE product_id = '" . (int) $product_id . "' AND api_id = '" . (isset($this->session->data['api_id']) ? (int) $this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int) $this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "'"); return $query->rows; } category.php $query_cart_id = $this->model_catalog_product->getProductsCartId($result['product_id']); $in_cart = false; if($query_cart_id){ $in_cart = true; } ... 'in_cart' => $in_cart, category.tpl <?php if($product['in_cart']){?> <button data-productid="<?php echo $product['product_id']; ?>" class="btn-remove-in-cart btn btn-default">Удалить из корины</button> <?php } ?> Надіслати Поділитися на інших сайтах More sharing options...
mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 кнопка Удалить из корзины появилась, но не удаляет Надіслати Поділитися на інших сайтах More sharing options...
mss Опубліковано: 17 лютого 2021 Автор Share Опубліковано: 17 лютого 2021 2 минуты назад, mss сказал: common.js $(function(){ $('.btn-remove-in-cart').click(function(){ let product_id = $(this).attr('data-productid'); $.ajax({ url: 'index.php?route=checkout/cart/removeAllProductsForCartId', type:'post', dataType:'json', data:{'product_id': product_id}, success: function(res){ // тут, обновляем корзину // удаляем кнопку } }) }) }); model/product public function getProductsCartId($product_id){ $query = $this->db->query("SELECT cart_id FROM " . DB_PREFIX . "cart WHERE product_id = '" . (int) $product_id . "' AND api_id = '" . (isset($this->session->data['api_id']) ? (int) $this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int) $this->customer->getId() . "' AND session_id = '" . $this->db->escape($this->session->getId()) . "'"); return $query->rows; } category.php $query_cart_id = $this->model_catalog_product->getProductsCartId($result['product_id']); $in_cart = false; if($query_cart_id){ $in_cart = true; } ... 'in_cart' => $in_cart, category.tpl <?php if($product['in_cart']){?> <button data-productid="<?php echo $product['product_id']; ?>" class="btn-remove-in-cart btn btn-default">Удалить из корины</button> <?php } ?> контроллер cart public function removeAllProductsForCartId(){ $this->load->language('checkout/cart'); $json = array(); // Remove if (isset($this->request->post['key'])) { $products = $this->cart->getProducts(); foreach ($products as $product) { if ($product['product_id'] == $this->request->post['key']) { $this->cart->remove($product['cart_id']); unset($this->session->data['vouchers'][$product['cart_id']]); } } $json['success'] = $this->language->get('text_remove'); unset($this->session->data['shipping_method']); unset($this->session->data['shipping_methods']); unset($this->session->data['payment_method']); unset($this->session->data['payment_methods']); unset($this->session->data['reward']); // Totals $this->load->model('extension/extension'); $totals = array(); $taxes = $this->cart->getTaxes(); $total = 0; // Because __call can not keep var references so we put them into an array. $total_data = array( 'totals' => &$totals, 'taxes' => &$taxes, 'total' => &$total ); // Display prices if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $sort_order = array(); $results = $this->model_extension_extension->getExtensions('total'); foreach ($results as $key => $value) { $sort_order[$key] = $this->config->get($value['code'] . '_sort_order'); } array_multisort($sort_order, SORT_ASC, $results); foreach ($results as $result) { if ($this->config->get($result['code'] . '_status')) { $this->load->model('extension/total/' . $result['code']); // We have to put the totals in an array so that they pass by reference. $this->{'model_extension_total_' . $result['code']}->getTotal($total_data); } } $sort_order = array(); foreach ($totals as $key => $value) { $sort_order[$key] = $value['sort_order']; } array_multisort($sort_order, SORT_ASC, $totals); } $json['total'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total, $this->session->data['currency'])); } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } Надіслати Поділитися на інших сайтах More sharing options...
iglin Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 9 минут назад, mss сказал: кнопка Удалить из корзины появилась, но не удаляет ну как минимум в js у вас data:{'product_id': product_id}, а в removeAllProductsForCartId вы ждёте key Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 34 минуты назад, iglin сказал: ну как минимум в js у вас data:{'product_id': product_id}, а в removeAllProductsForCartId вы ждёте key копипаст, он такой. Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 18 лютого 2021 Share Опубліковано: 18 лютого 2021 по внешнему виду такого +/- можно подрубить вот такой плагинчик, вроде ничего Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 18 лютого 2021 Автор Share Опубліковано: 18 лютого 2021 сейчас главное - функционал) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Плюс/Минус
fanatic Опубліковано: 17 лютого 2021 Share Опубліковано: 17 лютого 2021 34 минуты назад, iglin сказал: ну как минимум в js у вас data:{'product_id': product_id}, а в removeAllProductsForCartId вы ждёте key копипаст, он такой. Надіслати Поділитися на інших сайтах More sharing options... Prooksius Опубліковано: 18 лютого 2021 Share Опубліковано: 18 лютого 2021 по внешнему виду такого +/- можно подрубить вот такой плагинчик, вроде ничего Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 18 лютого 2021 Автор Share Опубліковано: 18 лютого 2021 сейчас главное - функционал) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Prooksius Опубліковано: 18 лютого 2021 Share Опубліковано: 18 лютого 2021 по внешнему виду такого +/- можно подрубить вот такой плагинчик, вроде ничего Надіслати Поділитися на інших сайтах More sharing options... mss Опубліковано: 18 лютого 2021 Автор Share Опубліковано: 18 лютого 2021 сейчас главное - функционал) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 2
mss Опубліковано: 18 лютого 2021 Автор Share Опубліковано: 18 лютого 2021 сейчас главное - функционал) Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts