0 Пользователей и 1 Гость просматривают эту тему.
  • 5 Ответов
  • 5729 Просмотров
*

crazymuzzle

  • Осваиваюсь на форуме
  • 23
  • 1 / 0
Joomla 1.5.10
VirtueMart 1.1.3


Добрый день!

Хочу научить корзину принимать товары только одного производителя. Пока покупатель не оформит заказ (и корзина обнулится), либо не удалит выбранные товары до оформления - ставить запрет на добавление товара с другим производителем.

Насколько я понял, надо добавить нехитрое условие в ps_cart.php
Передачу данных в сессию корзины (в блоке функции добавления товара в корзину) делаю следующим образом:
Код
$_SESSION['cart'][$k]["manufacturer_id"] = $e["manufacturer_id"];
И, в общем-то, успешно :) Дело за малым - написать условие для последующих добавлений товаров в корзину.

Итак, уважаемые знатоки, вопрос: где и как написать условие (почему-то кажется, что в том же ps_cart.php должна быть проверка), по которому в корзину не будут добавляться товары с отличным производителем товара от уже добавленного в корзину, а вместо этого пользователю выводился грозный "ай-яй-яй"?  ;D

P.S. идея родилась от безысходности в ожидании версии ВиртуМарта 1.2.х с поддержкой мульти-вендорности. Видел хак от esmark'a на Виртуй 1.0.14, но сложно всё это перенести на 1.5.10. Будем брать организационными мерами!
« Последнее редактирование: 12.06.2009, 04:04:54 от crazymuzzle »
*

crazymuzzle

  • Осваиваюсь на форуме
  • 23
  • 1 / 0
Цитировать
всё гениальное - просто
но не всё простое - гениально

 :D решение вымучалось!
Придется самому пить пиво  *DRINK*

В ps_cart.php необходимо добавить:
Код
// Проверяем уникальность производителей
            $main_manufacturer = $e["manufacturer_id"];
            for ($i=0;$i<$_SESSION["cart"]["idx"];$i++) {
        if ($_SESSION['cart'][$i]["manufacturer_id"] != $main_manufacturer)
        {
         $vmLogger->warning( $VM_LANG->_('MANUFACTURER_LIMIT',false) );
         return False;
        }
       }
Соответственно, в языковой файл добавлена соответствующая строка 'MANUFACTURER_LIMIT'
А кодом:
Код
$_SESSION['cart'][$k]["manufacturer_id"] = $e["manufacturer_id"];
всё-таки добавляю информацию о производителе в сессию корзины - его вставил после
Код
// added for the advanced attribute modification


То же самое можно реализовать и для других параметров добавляемого товара.
Кому решение пригодится - просьба не проходить мимо, критиковать или благодарить.
« Последнее редактирование: 22.07.2009, 15:34:06 от beagler »
*

hiway

  • Осваиваюсь на форуме
  • 24
  • 8 / 1
  • Это просто путь длинною в жизнь...
Здравствуйте!
Очень классное решение. Очень нужное.

А для совсем не умных  ^-^ Вы бы могли более детально описать  процесс внедрения. Точнее указать место куда нужно вставить код?

Спасибо.
*

hiway

  • Осваиваюсь на форуме
  • 24
  • 8 / 1
  • Это просто путь длинною в жизнь...
Не знаю правильно ли, но разобрался вроде.

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

// If we did not update then add the item

То есть перед апдейтом количества в цикле итерации по product_id Протестировал. Работает.

Если неправильно сделал, то поправьте пожалуйста. Спасибо.
*

DNK

  • Осваиваюсь на форуме
  • 23
  • 1 / 0
Joomla 1.5.25
VirtueMart 1.1.9


Встала аналогичная задача, только нужно ограничить по продавцу. Соответственно вставил перед строчкой:
Код
// If we did not update then add the item
Следующий код:
Код
// Проверяем уникальность продавца
            $main_vendor = $e["vendor_id"];
            for ($i=0;$i<$_SESSION["cart"]["idx"];$i++)
{
        if ($_SESSION['cart'][$i]["vendor_id"] != $main_vendor)
        {
         $vmLogger->warning( $VM_LANG->_('VENDOR_LIMIT',false) );
         return False;
        }
}
Затем, сразу после:
Код
// added for the advanced attribute modification
Вставил:
Код
//проверка для одного типа продавца
$_SESSION['cart'][$k]["vendor_id"] = $e["vendor_id"];
Но, что-то не срабатывает фишка, товары от разных продавцов спокойно добавляются в корзину  :(
*

goodmoodxd

  • Новичок
  • 7
  • 0 / 0
Всем привет!
У меня похожая ситуация. Не подскажете как реализовать ограничение на особенность товара?
Только нужно наоборот, чтобы товары с одинаковой особенностью не добавлялись в корзину.

Пробовал так же как с производителями, но получается так, что теперь вообще нельзя больше одного товара добавить. Независимо от того одинаковые у них особенности или нет :(
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться