MS2: Как реализовать несколько цен с опциям?

Суть: есть товар «Пицца», у него два размера, и два способа приготовления — итого 4 цены
Подскажите, пожалуйста, каким образом можно реализовать на «странице товара» выпадающий список с 4мя вариантами выбора, чтобы при выборе из списка сразу менялась цена и при клике на заказать товар с указанными опциями попадал в заказ.
С первой частью я понимаю как сделать через tv + js, но при добавлении товара в заказ он туда попадает с дефолтной ценой… ((
Юрий Эффа
21 апреля 2013, 14:45
modx.pro
1
1 294
0

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

Василий Наумкин
21 апреля 2013, 20:01
0
Всё, что есть в первой части, есть и во второй.
    Юрий Эффа
    21 апреля 2013, 20:07
    0
    Я имел ввиду первую часть вопроса, а не MS1
    d start
    22 апреля 2013, 11:26
    0
    Подобная задача была на проекте с погонажём всяким, стоимость рассчитывалась исходя из кучи параметров. Использовали МС 2, в результате от МС2 ничего не осталось, всё переписали.
      Василий Наумкин
      22 апреля 2013, 12:37
      0
      Зачем всё переписывать, если можно написать только свой класс корзины?
        d start
        22 апреля 2013, 12:41
        0
        Ну вот у нас только корзина и осталась, да и то мы в тупую класс корзины переписали, не расширяя.
        Вывод заказов в админке пришлось переделывать, ещё не закончили правда.
          Василий Наумкин
          22 апреля 2013, 12:49
          0
          Ты, видимо, документацию по расширению классов не читал?
          Меньше бы работать пришлось и совместимость с будущими версиями бы сохранили.

          Вот как можно, без изменения исходников:
            d start
            22 апреля 2013, 12:51
            0
            Документацию читал, но особо она мне не помогла.
      Василий Наумкин
      22 апреля 2013, 12:46
      0
      2 варианта, попроще и посложнее.

      Попроще: создавай 4 товара, и склеивай их через связи. Нужно будет написать простенький сниппет, который будет проверять, есть ли у товара нужные связи и выводить их в виде селектбокса.
      При его переключении — перезагрузка на нужную страницу, или сразу добавление нужного id товара в корзину.

      Посложнее: один товар, но у него создать специально поле (или использовать поле size). Туда писать варианты в формате «размер: цена», прямо из админки.

      Другой простенький сниппет на сайте должен будет получать это поле, разбирать на варианты и выводить селектбокс с «размер — цена».
      При его переключении ты меняешь цену на странице, скриптом, а при добавлении с корзину отправляешь размер на сервер, вместе с id.

      А вот на сервере нужно получить поле со списком размеров и ценами, а потом выделить цену, соответствующую размеру. Тут либо кастомный класс корзины, либо используй системный параметр ms2_price_snippet — для указания сниппета, который будет это делать.
      Таким образом, товар добавится в корзину с нужной ценой.

      В общем, выбор за тобой.
        Юрий Эффа
        24 апреля 2013, 16:43
        0
        Сделал ещё проще, хотя, с точки зрения использования функционала магазина, и не совсем правильно. Позицию товара завел как «категорию товара», а опции как вложенные в категорию товары. Дальше Wayfinder'ом строю селектбокс, выводя в атрибуты option: id и price товара. И по change селектбокса меняю значение data-id на кнопке и содержимое дива с ценой. В селектбокс название позиции беру из longtitle, в корзину же он попадает с pagetitle

        Единственный «затык» — после нажатия кнопки отправки товара в заказ перестаёт работать onChange на селектбоксе и data-id не меняется. «Вылечил» убиванием модального окна со страницей товара (у меня так), но понимаю, что тоже не правильно…
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        9