2 корзины на одном сайте

Всем привет.
Суть — есть сайт, с двумя разными каталогами товаров.

Клиент хочет чтобы -

  • Товары из этих каталогов добавлялись в одну корзину
  • Уже в корзине товары должны разделятся визуально — допустим на 2 столбца
  • Должна быть отдельно сумма по первому каталогу, отсдельно сумма по второму каталогу, и общая сумма всего заказа
  • И чтобы в процессе оформления заказа — заказ разделялся на 2 части, и оплачивался на 2 разных счета, с помощью robokassa или иного сервиса.

Пояснения -

Сайт один, соучредителя два.

Логичный и простой вариант с разделением каталогов и созданием второго сайта — клиент отмёл.
Принципиально чтобы оба каталога были на одном сайте и конечный заказ полностью выводился на одной странице.

Вопросы —

  • как это можно (и можно ли вообще) реализовать на modx revo + minishop2?
  • B как вообще это лучше реализовать? Возможен вариант с двумя корзинами — на одной странице.
  • Или нужный функционал есть у других cms/фрэймворков?
  • Или забить и написать свой компонент под эту задачу?
  • Думали в сторону контекстов modx — тут решается вопрос раздельных каталогов, корзин и заказа. Но как вывести две корзины из двух контекстов на одной странице, с сохранением функционала?
Прошу прощения за сумбурность, мозг чуть подкипает. В сети толковых примеров или решений не нашел.
Илья Катасонов
06 октября 2015, 16:10
modx.pro
1
3 058
0

Комментарии: 10

Павел Гвоздь
06 октября 2015, 21:08
0
Помоему многое придется переписывать в miniShop2.
    Максим Кузнецов
    06 октября 2015, 21:27
    +1
    По половине пунктов поможет расширение классов.
    А вот с оплатой через 2 разных счета, скорее всего, придется помучиться и править ядро.
      Илья Катасонов
      06 октября 2015, 21:38
      0
      Gracias за подсказку. Касательно счетов — еще раз обговорили с клиентом этот момент — он согласился чтобы пользователь оформлял (оплачивал) обе части заказа онлайн, по-очереди — сначала первый, потом второй. Да, я понимаю что это не комильфо с точки зрения юзабилити)
        Максим Кузнецов
        06 октября 2015, 21:41
        0
        К слову, у каждого товара есть параметр контекста, откуда он был добавлен => первым шагом будет разделение 2 раздела каталога по двум контекстам — так товары по умолчанию будут попадать в отдельные контексты (вызывать и отображать их не будет большой проблемой, т.к. у большинства сниппетов есть параметр, указывающий из каких контекстов брать данные). Ну и чуть-чуть придется подправить javascript корзины для динамичного обновления данных.
      Артем
      06 октября 2015, 21:28
      0
      тоже рою в эту сторону, пока кажется реальным только дублировать minishop
        Илья Катасонов
        06 октября 2015, 21:45
        0
        Об этом варианте думал, но это решение кажется слишком грубым, или костыльным… Хотя с другой стороны — как клонировать, ведь minishop2 — это же готовый класс, а значит его можно наследовать и на его основе дописать расширенную корзину) И это вероятно относится к комментарию Максима.
        Николай
        06 октября 2015, 21:32
        0
        На вскидку, нужно написать свою корзину, остальное можно не трогать. Ведь корзина это что? Это просто массив товаров, с которым можно работать. Реализовать не сложно.
          Николай
          06 октября 2015, 21:34
          0
          Единственное что нужно, это у товаров указывать принадлежность к счету, счет 1 и счет 2, а уже по этим двум счетам строить таблицу товаров 1 и таблицу товаров 2
            Илья Катасонов
            06 октября 2015, 21:49
            +1
            Да, вариант написать свою корзину на данный момент кажется самым адекватным.
              Воеводский Михаил
              07 октября 2015, 10:09
              0
              В классе корзины переопредели 3 метода: get(), status(), clean(). Сниппет вывода корзины сделай свой, удобнее всего скопировать msCart и его изменить.
              Сохранение принадлежности товара к определенному контексту в оформленном заказе — самое простое, достаточно при добавлении в корзину передавать эту информацию в options товара, дальше справится штатный механизм.

              Фактически, задача решается за несколько часов.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          10