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

Товар с опциями не удаляется из корзины


igorfelix

Recommended Posts

Непонятная проблема, товар с двумя опциями не удаляется из корзины. ( пробывал так же с модулем "Обновление цены при выборе опции" - включал выключал, не помогло)

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

http://protein.tomsk.ru/protein/Carb_conscious.html

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


наш любимый Apple Cinema 30" из дэмо товаров говорит, что все нормально (а ведь там еще и файл загружать надо).

это означает что? - верно: сами опции и их кол-во - не проблема.

вывод: либо настройки сервера (magic_quotes самая распространенная причина), либо стороннее дополнение, либо вы что-то мутите со своими опциями.

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

наш любимый Apple Cinema 30" из дэмо товаров говорит, что все нормально (а ведь там еще и файл загружать надо).

это означает что? - верно: сами опции и их кол-во - не проблема.

вывод: либо настройки сервера (magic_quotes самая распространенная причина), либо стороннее дополнение, либо вы что-то мутите со своими опциями.

If access to the server configuration is unavailable, use of .htaccess is also an option. For example:

php_flag magic_quotes_gpc Off

дописал в .htaccess строчку :

php_flag magic_quotes_gpc Off

сайт вообще вырубило ошибка 500.

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


вот в теме http://opencartforum...B8%D0%BD%D1%8B/ аналогично была проблема. модули все выключил, xml удалил, на денвере все нормально работает., на хостинге- нет.

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


капец..... нашел в чем проблема...... оказывается это все было из-за поля : Текстовая область , которую я расположил ниже ( в ней было написано пояснение о покупке) из за этой текстовой области товар не удалялся из корзины.post-23316-0-92300500-1362687870_thumb.png

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


  • 4 months later...
  • 1 year later...

Находил я эту тему раза 3-4, больше в интернете нет ничего. Уж простите за некропост, но из-за этой ^%&^% корзины клиенты мне проели все что можно и нельзя, я даже освоил как дебаггер запускать, а все начиналось с банальной верстки  :ugeek:  В общем лично у меня какие были проблемы - клиенты создали большое кол-во опций для товара, неважно как и что я делал до этого, дебаггер показал что get запрос сразу теряет все знаки "+", т.е. вместо 792:egerhGHV+cScc+blalala - уходит все тоже но с пробелами, потому и не кусают(с).

 

Для себя решил костылем на своем любимом jquery (ох какой он мой спаситель :-) ):

 

в catalog/view/theme/default/template/checkout/cart.tpl   после строки

<!-- <a href="<?php echo $product['remove']; ?>">  вот эту автогенеру убрал-->
       <a id="remove_link" href="link">  <!-- тут добавил id чтобы удобнее ловить, на всякий случай, т.к. я монтажник, а не программист, href любой указывайте, скрипт дальше, все равно его заменит на нормальный урл -->
 <!-- и далее добавил собственно скрипт, что кей через encodeURIComponent прогоняет, как советуют на w3c -->
              <script>
                var uri = "<?php echo $product['key']; ?>";
                var res = encodeURIComponent(uri);
               // и на всякий случай 2 варианта, для чпу и без
               // $('a#remove_link').attr('href', '/index.php?route=checkout/cart&remove='+res);
                $('a#remove_link').attr('href', '/cart/?remove='+res);
              </script>

Пытался сперва на php найти решение, но я его не люблю, и там какие-то извращения были из серии что я чуть было не начал рвать волосы, плюнул и сделал костылем, главное что заработало, дальше кто элегантнее ссылку обработает, тот и молодец, надеюсь пригодится кому-нибудь и сэкономит время драгоценное. Т.к. я из-за этих му*?:*?ов что так все сделали, тратив время на левые разборы, 2 проекта по срокам опоздал, моя недоволен.

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


+ кнопка назад и на 2 опенкарте до сих пор не реализована, как хотелось бы, верстал под нее тему одну, так и кидает на главную, тоже может не идеально, но в контроллер/checkout/cart.php

 

~386 строка

if (stripos($_SERVER['HTTP_REFERER'],'/cart')===false) {
$_SESSION['back']=$_SERVER['HTTP_REFERER'];
}
else {
if (empty($_SESSION['back'])) {
$_SESSION['back']='/';
}
}
$continue_link = $_SESSION['back'];
 
$this->data['continue'] = $continue_link;

будет возвращать на последнюю просмотренную страницу, а не на хоум.

 

ps гадости я писал про тех кто до этого им сайт делали, и все параметры в опции запихали, а то вдруг подумаете что я на разрабов ругаюсь, опенкарт как по мне самый мимими движок, для верстки по-крайне мере)) Все удобно, все замечательно и скорость получше чем у части моих клиентов в престе.

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


  • 7 months later...
  • 6 months later...

Также недавно столкнулся у клиента с данной проблемой на oc 1.5.5.1.2 Проблема заключается в методе построения ключа товара при добавлении его в корзину в файле system\library\cart.php функция add строка 258
....$key = (int)$product_id . ':' . base64_encode(serialize($option));...

этот самый base64_encode на выходе дает строку, которая согласно спецификации может содержать символы +/=. А т.к потом этот ключ используется в гет запросах для удаления товара, то эти символы  там недопустимы отсюда и "неудаление", по сути идет попытка удалить товар с несуществующим ключом.

воспроизвести в 1.5 можно следующим образом - добавьте к товару опцию текстового ввода и вручную в базе присвойте ей номер 12960, забейте в поле текст "напол" к примеру и добавьте в корзину- данное сочетание опции и значения опции приведет к формированию ключа, содержащего + и товар не удалится из корзины стандартной кнопкой.

encodeURIComponent для исправления как предлагалось выше не совсем корректно. Как вариант можно "доработать" функции для генерации ключа: 

   public function base64_url_encode($input) {
        return strtr(base64_encode($input), '+/=', '-_,');
    }

    public function base64_url_decode($input) {
        return base64_decode(strtr($input, '-_,', '+/='));
    }

. их необходимо прописать в библиотеку корзины и заменить стандартный вызов base64_decode  / base64_encode на них и товар будет удалятся с любым набором опций.  В теории может к коллизиям привести, но вероятность куда меньше, чем генерация "кривого ключа".

 

P.S. прошу прощения за некропост, но может пригодится кому-нибудь. Да и бага по факту устойчивая и гарантированно воспроизводится, можно и пофиксить в сборке.
 

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


  • 6 months later...

Друзья, появилась аналогичная проблема, но решить её не смог с помощью указанных выше рекомендаций. Товары, к которым добавлены опции не удаляются из корзины. Сайт https://ольгагринюк.рф

 

Консоль ошибок не выдает. Без опций все норм. Куда можно копнуть?

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

31 минуту назад, Slavec86 сказал:

Товары, к которым добавлены опции не удаляются из корзины. Сайт https://ольгагринюк.рф

 

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

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

1. у вас опции в корзине никак не отображаются

 

2. удаление товаров только визуальное

т.е. из списка они удаляются - но фактически по-прежнему в корзине, здесь и копайте

 

2376a629b456409ea4d498e6241d229c.png

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

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

Видимо да, т.к. опции в корзину не вытащены, они препятствуют полному удалению товара. Ок. Спасибо! Буду смотреть.

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

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

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

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

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

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

Вхід

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

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

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

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

Important Information

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