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

Кнопка удалить из корзины в рекомендуемых товара


ruslanstroj

Recommended Posts

Посмотрите как аналогичная кнопка реализована в самой корзине и вперёд

Если сами не справитесь, то пишите в личку. Сделаю

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


Только что, openprice сказал:

Посмотрите как аналогичная кнопка реализована в самой корзине и вперёд

Если сами не справитесь, то пишите в личку. Сделаю

там как я вижу удаление идет ajax

onclick="cart.remove('261');"

но это действует только в корзине

значит еще в контролере написана функция, но просто перенести ее как я понимаю проблему не решит и кнопка работать не будет где мне нужно

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


никто не знает как сделать что бы сначала человек кликает на кнопку купить товарв и он отправляется в корзину, потом вместо кнопки купить будет кнопка убрать товар из корзины?

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


13 минут назад, ruslanstroj сказал:

никто не знает как сделать что бы сначала человек кликает на кнопку купить товарв и он отправляется в корзину, потом вместо кнопки купить будет кнопка убрать товар из корзины?

То есть, функции "купить" у вас вообще не будет? Покупатель будет развлекаться, то добавляя товар в корзину, то удаляя? Оригинальный вариант маркетинга.

Змінено користувачем Shureg
Надіслати
Поділитися на інших сайтах


10 минут назад, Shureg сказал:

То есть, функции "купить" у вас вообще не будет? Покупатель будет развлекаться, то добавляя товар в корзину, то удаляя? Оригинальный вариант маркетинга.

 

нет

вот скрин

1740829784_.thumb.png.d9bca5c30aa91c85b053bf8b697123b9.png

хочу сделать просто что если человек вдруг случайно нажал и выбрал какой то напиток - что бы потом вместо кнопки со значком check у него появилась кнопка с крестиком, типа отменить добавление в корзину (что бы не удалять товар в корзине)

изображение.png

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


в корзине, товар может быть с разными опциями, как быть в таком случае?

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

4 часа назад, fanatic сказал:

в корзине, товар может быть с разными опциями, как быть в таком случае?

при клике товар полностью с опциями убирается из корзины

точно также как и в корзине функция

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


10 минут назад, elken_collection сказал:

точно также как и в корзине функция

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

и как понять в модуле с какими опциями удалять товар?  или все удалять?

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

28 минут назад, fanatic сказал:

как понять в модуле с какими опциями удалять товар?  или все удалять?

Вы думаете у напитка будет много опций в данном конкретном случае?) 

 

В 16.12.2020 в 09:45, ruslanstroj сказал:

никто не знает как сделать что бы сначала человек кликает на кнопку купить товарв и он отправляется в корзину, потом вместо кнопки купить будет кнопка убрать товар из корзины?

Знаю) У меня такое реализовано. Там разница только в том что с корзины удаляет не по product_id, а по cart_id. 

Получаем весь список товаров которые в корзине, ищем товар с тем id который нужно удалить, берём его cart_id и удаляем.

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

1 час назад, iglin сказал:

Вы думаете у напитка будет много опций в данном конкретном случае?) 

да мне по барабану сколько будет опций у товара.

 как идентифицировать  товар, что бы удалить?

1 час назад, iglin сказал:

Получаем весь список товаров которые в корзине, ищем товар с тем id который нужно удалить,  берём его cart_id и удаляем.

серьезно?

а это?

1 час назад, fanatic сказал:

в корзине, может быть несколько позиций одного товара, но с разными опциями.

нашли десять позиций с id товара = 5.    какую удалять?

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

2 минуты назад, fanatic сказал:

нашли десять позиций с id товара = 5.    какую удалять?

Ну я ведь написал про конкретный случай. А так да, хоть все удалить можно если нужно.

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

14 часов назад, fanatic сказал:

да мне по барабану сколько будет опций у товара.

 как идентифицировать  товар, что бы удалить?

серьезно?

а это?

нашли десять позиций с id товара = 5.    какую удалять?

в корзине же это как то реализовано? при клике на кнопку удалить товар с корзины убирается

вот так же нужно и в карточке товара в модуле рекомендуемые

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


2 часа назад, elken_collection сказал:

в корзине же это как то реализовано? при клике на кнопку удалить товар с корзины убирается

 

18 часов назад, fanatic сказал:

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

 

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

34 минуты назад, elken_collection сказал:

будет удалять из корзины все вариации товара?

можно

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

модель product  создаем метод

получить все cart_id  товара

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;
}

в контроллере, перед формированием массива с товарами

$query_cart_id = $this->model_catalog_product->getProductsCartId($result['product_id']);
$in_cart = false;
if($query_cart_id){
    $in_cart = true;
}

в массив добавляем флаг(есть ли товар в корзине)

$data['products'][] = array(
  'in_cart' => $in_cart,
.................

в шаблоне, если флаг true, выводим кнопку "удалить из корзины"

<?php if($product['in_cart']){?>  
<button data-productid="<?php echo $product['product_id']; ?>" class="btn-remove-in-cart btn btn-default">Удалить из корины</button>
<?p

и 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){
                  // тут, обновляем корзину
                 // удаляем кнопку
            }
        })
    })
})

контроллер cart создаем метод удаления

public function removeAllProductsForCartId(){
    if (isset($this->request->post['product_id'])) {
        $this->load->model('catalog/product');
        $product_id = (int) $this->request->post['product_id'];

        $product_cart_id = $this->model_catalog_product->getProductsCartId($product_id);

        if($product_cart_id){
            $carts_id = array();

            foreach($product_cart_id as $cart_id){
                $carts_id[] = $cart_id['cart_id'];
            }

            $this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE cart_id IN(" . implode(',', $carts_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()) . "'");
        }
    } 
}

 

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

спасибо за вариант решения

мне примерно так и сделали, но там есть проблема с сессиями

вот человек пытается ее решить, в вашем варианте она тоже будет

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


10 минут назад, ruslanstroj сказал:

но там есть проблема с сессиями

а конкретней?

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

15 минут назад, ruslanstroj сказал:

вот человек пытается ее решить, в вашем варианте она тоже будет

Будет. И ещё будет проблема с тем что корзина не обновится. В этом ПРИМЕРЕ в removeAllProductsForCartId() ещё нужно много всего добавлять (удаление значений из сессий, пересчёт корзины, возвращение json массива для вывода в "корзину").

@fanatic ну и в контроллер встраивать SQL запрос мне кажется не самый красивый вариант, я думаю правильней там $this->cart->remove использовать.

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

41 минуту назад, ruslanstroj сказал:

спасибо за вариант решения

Самы простой наверное вариант это в catalog/controller/checkout/cart.php полностью скопировать public function remove()  в removeAllProductsForCartId() и заменить строчки

$this->cart->remove($this->request->post['key']);
 
unset($this->session->data['vouchers'][$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']]);
}
}

И с сессиями проблемы не будет и в корзину будет что нарисовать.

 

 

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

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

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

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

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

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

Вхід

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

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

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

×
×
  • Створити...

Important Information

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