Как очистить корзину используя javascript

Автор piter, 18 сентября 2015, 13:08:22

« назад - далее »

piter

При покидании сайта, клиенты, забывают оформит заказ и товар остается в корзине.
При попытки покидания сайта с товаром выводиться сообщение с кнопками на javascript:
Очистить корзину и покинуть сайт
Отмена.
Это все сделано.

Вопрос  такой. Как очистить корзину при выходе используя javascript ?
Или какой другой вариант?
Преста 1.6
Спасибо!

VictorD

Ссылка для удаления
<a href="{$link->getPageLink('cart', true, NULL, "emptyCart=1&amp;token={$token_cart}")}" title="{l s='Clear Cart'}">{l s='Clear Cart'}</a>
Метод в контроллер CartController.php
protected function emptyCart()
{
    $products = $this->context->cart->getProducts();

    foreach ($products as $product)
        $this->context->cart->deleteProduct($product["id_product"]);
}


piter

Спасибо большое! Сейчас попробую...

piter

Нет .. Это конечно все хорошо но мне нужно очистить корзину в header.tpl
То есть в  header.tpl идет сравнение на покидание сайта.
Если есть товары в корзине, то предложение или остаться, или очистить корзину и выйти с сайта.
И вот тут надо, очистить корзину, используя javascript.
Может есть другие мысли по решению именно из header.tpl .
Или можно создать станицу , перейти туда и там в HTML работать.
Но все равно вопрос и там, как очистить всю корзину целиком только эту.

Вопрос пока открыт.

Миколас

Цитата: VictorD от 18 сентября 2015, 16:00:54
Ссылка для удаления
<a href="{$link->getPageLink('cart', true, NULL, "emptyCart=1&amp;token={$token_cart}")}" title="{l s='Clear Cart'}">{l s='Clear Cart'}</a>
Метод в контроллер CartController.php
protected function emptyCart()
{
    $products = $this->context->cart->getProducts();

    foreach ($products as $product)
        $this->context->cart->deleteProduct($product["id_product"]);
}


Не работает в prestashop 1.6
У меня в prestashop 1.6 вот такой код работал

protected function emptyCart()
{
    $result = array();
    $result['summary'] = $this->context->cart->getSummaryDetails(null, true);
    foreach ($result['summary']['products'] as $key => &$product)
    {
        $this->processDeleteProduct($product['id_product'],$product['id_product_attribute'],$product['customization_id'],$product['id_address_delivery']);
    }
}

protected function processDeleteProduct($idProd, $idAttrib, $custom_id, $id_address)
{
    if ($this->context->cart->deleteProduct($idProd, $idAttrib, $custom_id, $id_address))
    {
        if (!Cart::getNbProducts((int)($this->context->cart->id)))
        {
            $this->context->cart->setDeliveryOption(null);
            $this->context->cart->gift = 0;
            $this->context->cart->gift_message = '';
            $this->context->cart->update();
        }
    }
    $removed = CartRule::autoAddToCart();
    if (count($removed) && (int)Tools::getValue('allow_refresh'))
        $this->ajax_refresh = true;
}


Еще в public function postProcess() добавить нужно
elseif (Tools::getIsset('emptyCart'))
$this->emptyCart();


piter

Спасибо проверю...
Благодарю за ответ!!

piter

#6
Нет.. вот скрипт в header.tpl Проверка то в нем...
<script type="text/javascript">
function is_confirm()
{
var r=confirm('Уважаемый покупатель!'+'\n' +'В вашей корзине есть не оформленный товар.'+'\n' +'Вы хотите очистить корзину и покинуть сайт?');
if (r==true)
{
Вот здесь нужно поставить очистку корзины, перед закрытием.
То-есть переход , к какой-то функции для очистки корзины.
Естественно, пользователь пока не регистрированный и только у него это корзина.
Но база то растет, брошенные корзины.
Вот для этого и нужно при выходе сбросить его корзину.
Ну а далее переход к выходу после очиски......
document.location.replace("http://Переход на страницу выхода");
}
else
{
}
}
</script>

Вопрос пока открыт.

Adik

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

DarinSr


coder

Вы пишите, что хотите чтобы не сохранялись брошенные корзины. Тогда вам такой js скрипт не поможет.
Нужно вызывать контроллер корзины и в нем удалять товары. Как менять контроллер вам написали.

А если хотите перенаправить клиента на свою страницу
document.location.replace("http://Переход на страницу выхода");
то создайте свой контроллер от контроллера корзины и тогда сможете использовать все методы родителя.

piter

Всем блогодарен!! Вопрос закрыт.
Спасибо всем, кто принимал участие!