DEMETR Создание сайтов в Казани

Опубликовано

Небольшая проблема с корзиной Virtuemart

Небольшая проблема с корзиной VirtuemartДелаю интернет-магазин Joomla 1.5 + Virtuemart 1.1.8. Шаблон очень специфичный: главная страница — черная, внутренние — белые, т.е. интернет-магазин на белом фоне.

И тут случилась такая проблема: пользователь добавляет товар в корзину, потом вдруг решает удалить его из корзины, жмет на удаление и virtuemart при этом перенаправляет его на index.php, а там у нас черный фон — печаль. Тоже самое происходит, если пользователь обновляет количество товаров.

Стал искать в чем дело. Смотрю фаербагом, и вижу форму на странице «Корзина»:

<form style="display: inline;" action="http://site.ru/index.php" method="post">
....
</form>

Вместо index.php необходимо передать адрес текущей страницы. Для этого открываем файл /administrator/components/com_virtuemart/html/basket.php

Ищем строку:

$action_url = $mm_action_url.basename($_SERVER['PHP_SELF']);

Меняем ее на:

$action_url = $mm_action_url.basename($_SERVER['REQUEST_URI']);

Теперь при обновлении количества товаров или удалении из корзины virtuemart будет оставлять вас на текущей странице. Сохраняемся и радуемся.

1 июня.
Проблема затянулась:) Теперь обнаружил такую же проблему: при обновлении (заполнении) покупателем адреса доставки, его также перебрасывало на index.php. Каким то шестым чувством полез в дебри virtuemart’a, а именно в файл:
www/administrator/components/com_virtuemart/classes/ps_userfield.php

~287 строка:

echo '<form action="'. $mm_action_url .basename($_SERVER['PHP_SELF']) .'" method="post" name="adminForm">';

В этой строке нам нужно заменить PHP_SELF на REQUEST_URI. На этом пока работает как надо.

Небольшая проблема с корзиной Virtuemart: 64 комментария

  • Ale042 — 03.07.2012 в 15:48 #

    Стоит 2 шаблона — главная и для магазина. При переходе в корзину шла переадресация на index.php шаблона главной. То же с удалением товара и его обновлением. Помогло следующее:
    — для входа в корзину в папке /components/com_virtuemart/themes/default/templates/product_details/includes/
    внёс изменения в файл addtocart_form.tpl.php.
    В нем в строке 21
    <form action="index.php» method=»get» name=»addtocart» id=»» class=»addtocart_form» get_cfg( ‘useAjaxCartActions’, 1 ) && !$notify ) { echo ‘onsubmit=»handleAddToCart( this.id );return false;»‘; } ?>>
    заменил РОST на GET. Всё заработало.
    Для обновления и очистки корзину такую же замену делал в файле, который здесь рассматривали: basket.php. В строках 148 и 159.

    [Ответить]

  • Иван — 26.12.2012 в 03:36 #

    Вопрос по корзине (может быть Вы знаете)?

    Добавляю товар в корзину. Модуль мини-коризны обновляется. Показывается сумма товара и его количество. Далее, нажимаю кнопку «Оформить заказ». Всплывает окно (так и задумано) в котором я ввожу все свои данные и нажимаю «Подтвердить заказ». В этом же всплывающем окне осуществляется переход на другую страницу, информирующую об успешном завершении заказа. Закрываю окошко.
    Супер! Если бы не одно но…

    Страница с которой открывалось всплывающее окно до сих содержит 1 товар на сумму 490р. Но если перейти на другую страницу, то корзина становится пустой.

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

    [Ответить]

    Demetr - Декабрь 26th, 2012 в 11:54

    К сожалению, не знаю. Virtuemart давно не использовал.

    [Ответить]

    Иван - Декабрь 26th, 2012 в 15:01

    Благодарю, вопрос решился, с решением помог один хороший человек, за что ему огромная благодарность!

    GreyBox нужен для того, чтобы не перегружалась страница, откуда вызывается popup окно.
    А мне он нужен на самом деле, только для «красивости»

    Захожу: в components/com_virtuemart/js/greybox/gb_script.js
    меняю
    Код:
    this.reload_on_close=false;

    на код:
    this.reload_on_close=true;

    и код:
    window.location.reload();

    на Код:
    window.location.reload(true);

    Получилось!
    В итоге после оформления заказа во всплывающем окне, а потом закрывая его, основная страница (та, с которой открывалось всплывющее окно заказа) обнуляет корзину — «в вашей корзине нет товара».

    [Ответить]

  • Вадим — 06.06.2013 в 12:10 #

    подскажите, в чем ошибка на сайте, joomla 1.5+virtuemart 1.1+sh404sef
    при переходах по страницам сайта на главную вылезает ошибка 404, это если ссылка сайт.ру/категория/товар.html нажимаю на логотип чтобы перейти на главную страницу, ошибка 404. если же переходить также на лого(главную) по ссылке сайт.ру/категория.html то без ошибки переходит
    спасибо)

    [Ответить]

    Demetr - Июнь 6th, 2013 в 13:44

    При переходе на «сайт.ру» ошибки нет? Тогда попробуйте в шаблоне исправить ссылку на логотип:

    <a href="/" rel="nofollow">Логотип</a>

    [Ответить]

    Вадим - Июнь 6th, 2013 в 23:12

    спасибо! помогло просто поставить / в ссылке, и переходит нормально)
    <img src="templateurl();?>/files/logo0000.gif» alt=»» />

    и еще интересно как вы избавились от vmchk ? наверняка столкнулись)

    [Ответить]

    Demetr - Июнь 8th, 2013 в 09:49

    Не сталкивался. Сторонними компонентами для ЧПУ не пользовался.
    Рад, что помогло.

  • Дмитрий — 08.06.2013 в 12:46 #

    У тебя на сайте используется несколько шаблонов?

    [Ответить]

    Demetr - Июнь 8th, 2013 в 17:22

    Один.

    [Ответить]

  • AndyDu — 07.09.2013 в 15:47 #

    Дорогой уважаемый коллега! СПАСИБО!!!!!!!!!!!!!!!!!!!!!! Peace bro

    [Ответить]

  • ыфавыа — 13.02.2014 в 20:05 #

    аналогичная проблема с обновлением удалением товара и изменении адреса доставки только у меня виртуемарт 2…26d самая новая кароче и файлов типа basket нет, находил файлы по тексту «PHP_SELF» менял все и везде не помогло

    [Ответить]

  • Anatoli — 16.04.2014 в 17:46 #

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

    [Ответить]

    Demetr - Апрель 16th, 2014 в 21:01

    Здравствуйте. Возможно в яваскриптах конфликты.

    [Ответить]