msOptionsPrice - разные цены для опций товара

msOptonsPrice
Купить msOptonsPrice в магазине дополнений Simple Dream.
--

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


— В настройках выставляете поле товара к которому нужны дополнительные цены.
— Скрипт для обновления цены на фронте при выборе в селект. Цену обернуть .pr_change
например:
<span class="pr_change">[[!+price]]</span>
— Можно полностью отключить доп.цены.
немного картинок




Ну и в корзине соответственно


Реализовал, по просьбе Александра
Немного допилил для работы с любым дополнительный полем товара и собрал в пакет.
Хотелось бы разместить в Simple Dream за небольшие деньги.
Будет пользоваться спросом — буду дальше развивать…
Всем спасибо за внимание.

p.s. Для импорта дополнительных цен через скрипт импорта

в строке указываем поле properties
в файле выгрузки записываем в json виде
{"msoptionsprice":{"100x50":"100","120x60":"150","20x30":"300"}}
разделитель указывайте любой отличный от ,
Володя
04 июля 2014, 10:21
modx.pro
6
12 044
+14
Поблагодарить автора Отправить деньги

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

Андрей Сухомозгий
04 июля 2014, 14:38
+2
Я бы купил!:)
    Виталий
    04 июля 2014, 14:51
    +3
    После проверки компонента Василием на соответствие правилам примем решение о размещении.

    После этого нужно будет подготовить документацию, оформить дополнение на сайте и начать продавать. Напиши, пожалуйста, на почту — какой ценник ты считаешь адекватным трудозатратам на создание и поддержку компонента?

    P. S. На первый взгляд — отличная вещь!
      Марк Валерич
      04 июля 2014, 15:54
      +2
      Классная вещь.

      Было бы год назад, облегчил бы жизнь манагерам)))
      Я бы тоже купил)
        Василий Столейков
        04 июля 2014, 16:57
        +2
        Только месяц назад в прошлом проекте ломал себе голову над костылями похожего рода. Очень нужная и часто спрашиваемая вещь!
          Алексей
          04 июля 2014, 20:26
          0
          Вообще класс! год назад обсуждали эту тему, но все уперлось в реализацию. Может ли это дополнение работать с доп. расширяемыми полями товара через плагины?
            Володя
            04 июля 2014, 21:17
            0
            да, конечно.
              Алексей
              04 июля 2014, 23:45
              0
              я смотрю и на страничке товара цена меняется в зависимости от опций, не только в корзине!
                Алексей
                08 июля 2014, 08:45
                0
                Тест как обычно тут.
                Сайт s6074.test.modx.pro/ больше недоступен. Где-то еще можно посмотреть наглядный пример?
                  Василий Наумкин
                  08 июля 2014, 09:00
                  0
                  Теперь уже можно пробовать на test.modx.pro
                    Алексей
                    08 июля 2014, 09:27
                    0
                    какие-то ошибки при установке
                    Пробуем установить пакет с подписью: msoptionsprice-0.0.1-beta
                    Пакет найден... сейчас идёт подготовка к его установке.
                    Невозможно открыть файл для чтения: msoptionsprice-0.0.1-beta.transport.zip?revolution_version=Revolution-2.2.14-pl
                    MODX could not download the file. You must enable allow_url_fopen, cURL or fsockopen to use remote transport packaging.
                    Невозможно осуществить передачу пакета msoptionsprice-0.0.1-beta.transport.zip в /var/www/s6097/www/core/packages/.
                    Невозможно установить пакет с подписью: msoptionsprice-0.0.1-beta
                      Василий Наумкин
                      08 июля 2014, 09:40
                      0
                      Поправил, устанавливай заново =)
                        Алексей
                        08 июля 2014, 10:11
                        0
                        Все заработало. И стало понятно почему такая низкая стоимость дополнения) кстати сразу насторожило.
                        Нельзя указать цену для параметров размер+цвет+остаток
                        примеры:
                        размер 120х40 цвет: синий остаток:10 — 100руб
                        размер 120х40 цвет: золотой остаток:10- 200руб
                        размер 60х40 цвет: синий остаток:10- 50руб
                        размер 60х40 цвет: золотой остаток:10- 100руб

                        размер 120х40 цвет: синий остаток:1 — 50руб
                        размер 120х40 цвет: золотой остаток:1- 100руб
                        размер 60х40 цвет: синий остаток:1- 25руб
                        размер 60х40 цвет: золотой остаток:1- 50руб
                          Володя
                          08 июля 2014, 10:23
                          0
                          причем тут остаток? Вы выбираете параметр товара к которому проставляете доп. цены.
                          У вас цена зависит и от размера и от цвета. Это пока не реализовано! Я думал еще над введением коэф. по типу цена = доп.цена.параметра * коэф.другого.парам.
                          Но пока не уверен что так лучше. Хотелось бы услышать больше предложений и мнений.
                          Спасибо за отзыв!
                            Виктор
                            08 июля 2014, 11:47
                            +2
                            в качестве мозгового штурма:
                            А если цену за параметр указывать не абсолютную, а относительно дефолтной, т.е.:

                            Цена товара: 100 рублей
                            размер 120х40: +20 рублей
                            размер 120х50: +25 рублей
                            цвет: синий: +5 рублей
                            цвет: золотой: +10руб

                            И тогда получается что:

                            размер 120х40 + цвет: синий = 125 рублей
                            размер 120х40 + цвет: золотой = 130 рублей
                            размер 120х50 + цвет: синий = 130рублей
                            размер 120х50 + цвет: золотой = 135 рублей
                              but1head
                              08 июля 2014, 11:50
                              0
                              Тоже хотел предложить такую реализацию, virtuemart например, так и построен.
                                Володя
                                08 июля 2014, 13:02
                                0
                                приму к рассмотрению такой вариант.
                                предлагайте еще варианты вашего видения…
                  Василий Наумкин
                  05 июля 2014, 05:52
                  0
                  Ни одно дополнение не узнает, что поля расширены, потому что для него они выглядят как родные.

                  В этом главная крутота системы плагинов miniShop2.
                  Владимир
                  05 июля 2014, 02:16
                  0
                  Тоже купил бы! Полезный компонент, и будет часто востребован.
                    Василий Наумкин
                    05 июля 2014, 05:53
                    +3
                    Выглядит очень круто!

                    Я, честно говоря, и не подумал о такой простой и красивой реализации. Автор — большой молодец!
                      Олег Сергеевич
                      05 июля 2014, 13:17
                      0
                      Володя, спасибо тебе огромное!!! Столько раз приходилось изощряться… Очень желанное дополнение для многих, уже давно!
                      Большой вклад в minishop2 и modx в целом!
                        Дмитрий Кондаков
                        05 июля 2014, 13:22
                        0
                        Круто Володя! Обязательно куплю при надобности) Кстати как-раз сейчас занимаюсь проектом где не только цены разные, но и артикул у каждого цвета товара. Я сделал через связи «многие ко многим», ну а если реализуешь такое и в этом компоненте(если это реально), думаю многим такой функционал понадобится)
                          Александр Мелихов
                          05 июля 2014, 18:00
                          0
                          Рад, что моя просьба помогла решиться на такой полезный шаг к улучшению minishop и MODX в целом и очень благодарен автору.
                          Со своей стороны хочу задать еще один вопрос, будет ли организовано лёгкое программное добавление в новые поля ( метод аля ->set())?
                            Володя
                            05 июля 2014, 19:05
                            0
                            спасибо, по вопросу — не понял что ты спросил. Объясни…
                              Александр Мелихов
                              06 июля 2014, 21:35
                              0
                              ну например чтобы через сниппет задать товару цену нужно вызвать объект товара и выполнить ->set('price', 555). Каким образом будет реализован этот механизм тут, ведь имена полей заранее не известны?
                            Виталий Князь
                            05 июля 2014, 22:23
                            0
                            Всем спасибо за внимание. Тест как обычно тут.
                            Не работает, хочется «пощупать».
                              Федор
                              06 июля 2014, 22:30
                              0
                              Когда можно приобрести? нужно по зарез, прям желательно в течении этих дней, решали как организовать(у железки есть 4-5 вариантов комплектаций, естественно парт номер разный, по хорошему описание одно, добавляется несколько мелочей, заниматься копипастом и делать из одной железки 4-5 отдельных товаров, чтобы цена была разная очень плохо для СЕО, особенно что в каталоге такиех позиций будет тысячи… никакой копирайтер не спасет, тем более описывать и переписывать особо нечего) или вы его продаете магазину как встроенный компонет в minishop2, и нам нужно будет только обновится?.. ведь сам минишоп бесплатный, а это решение обычное дело в других магазинах… в общем, отпишитесь пожалуйста, очень ждем… хочется хотя бы в начале недели сказать, когда по срокам можно будет это использовать.
                                Виталий
                                07 июля 2014, 15:26
                                +1
                                Привет.

                                Дополнение доступно для загрузки в магазине store.simpledream.ru/packages/ecommerce/msoptionsprice.html
                                  but1head
                                  07 июля 2014, 15:28
                                  0
                                  Дороговато для функционала, который должен бы быть сразу в магазине :/
                                    Василий Наумкин
                                    07 июля 2014, 15:33
                                    0
                                    Ты может сразу список выложишь того, что должно быть в бесплатном магазине?

                                    Ну, я быстренько сделаю, а то как-то неловко выходит.
                                      but1head
                                      07 июля 2014, 15:34
                                      0
                                      Вопрос не в «хочу все бесплатно», а в адекватной цене за дополнение которое по логике должно быть вшито в систему изначально
                                        Виталий
                                        07 июля 2014, 15:35
                                        0
                                        А какую цену за minishop2 вы считаете адекватной?
                                          but1head
                                          07 июля 2014, 15:39
                                          0
                                          Учитывая, что минишоп еще разрабатывется — та, что сейчас есть. Вы ведь предоставляете не «магазин из коробки», а гибконастраиваимаю систему для разнообразных магазинов которую нужно настроить и адаптировать под свои нужды. Если бы была не бета версия, а готовые варианты для разнообразных магазинов то 5-10т.р./копия.
                                          Василий Наумкин
                                          07 июля 2014, 15:45
                                          +1
                                          которое по логике должно быть вшито в систему изначально
                                          По какой логике? Давно люди начали работать бесплатно?

                                          Ты не понимаешь, что разработка бесплатных дополнений оплачивается продажей платных?

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

                                          Это не отдельный магазин, это дополнение для CMS, у которой есть свои правила и ограничения. miniShop2 нельзя сравнивать с Magento или CS-Cart — это разные вещи изначально.

                                          Он не спроста называется MINI Shop2. В общем, логику твою я не понимаю.
                                            but1head
                                            07 июля 2014, 15:58
                                            +1
                                            Я прекрасно знаю уровень цен за работу и что на халяву никто не станет работать.
                                            Вы развиваете modx и за это вам огромный плюс и поклон, но не очень правильно делать стандартные вещи платно. Да minishop2 не cms магазина, а дополнение, но такая маленькая фича есть во всех магазинах и должна быть у вас изначально. По поводу других дополнений вопросов нет, офис и прочее стоят своих денег т.к. это не совсем стандартный функионал и на базе его можно многое построить. Все кто разрабатывают свои системы показывают их плюсы, а не хотите стандартного функионала — заплатите.
                                            Меня жаба не душит потратить 790р, но осадок немного не приятный остается.
                                              Василий Наумкин
                                              07 июля 2014, 16:01
                                              +2
                                              Что в лоб, что по лбу.

                                              Спасибо за отзыв.
                                                Evgeny Epifanov
                                                08 июля 2014, 00:06
                                                -1
                                                О чем разговор? 790 руб. — дорого? Когда читал ветку, думал цена тысяч 5. А тут за 790 рублей… Если делать магазин, то это вообще не деньги.
                                                Цена более чем адекватная. Вот теперь думаю, переделывать свой магазин или оставить как есть.
                                                  but1head
                                                  08 июля 2014, 00:46
                                                  +1
                                                  Вчитайтесь повнимательней, вопрос не в деньгах
                                                    Федор
                                                    08 июля 2014, 02:08
                                                    +1
                                                    ну, я думаю, чтобы душе было легче — считай, что minishop2 стоит 790 рублей :) Это я по поводу, что минишоп беслатный, а такая нужная фича денег стоит
                                                      Марк Валерич
                                                      08 июля 2014, 14:15
                                                      +1
                                                      Не понимаю я товарищей, которые такие слова вообще пишут.
                                                      But1head, пойми, Василий и сам store никому ничем и никак не обязаны.
                                                      Хочешь покупай, не хочешь — не покупай.
                                                      Ты приходишь в магазин, хочешь купить машину, тебе дают разные варианты, хочешь бери — не хочешь — дело твое.
                                                      Автосалоны не обязаны за стоковые деньги отдавать весь функционал предлагаемой машины. Это рыночные отношения.

                                                      А ты хочешь, за минимум получить максимальную версию.
                                                      Для таких как ты, я бы ценник поставил вообще на порядок выше.
                                                      Чтобы желанное всегда было и оставалось желанным!
                                                    Михаил
                                                    08 июля 2014, 14:09
                                                    +1
                                                    Жаба душит?? НЕ покупайте, напишите сами. В чем проблема? Не можете? Тогда покупайте. Не хотите? тогда просто не делайте эту «по умолчанию» фишку в Вашем магазине. В чем вопрос? Человек сделал и хоть лям может запросить. Это ЕГО право. А покупать или нет это уже Ваше право.
                                              Виталий
                                              07 июля 2014, 15:34
                                              0
                                              Я думаю, что при выборе политики ценообразования, автор исходил из трудозатрат и востребованности дополнения, а не из того, что его функционал «должен бы быть сразу в магазине».

                                              Тем не менее, спасибо за отзыв.
                                                Павел Левин
                                                08 июля 2014, 09:33
                                                +2
                                                Ведь дополнение сделано по заказу, соответственно за дополнение было заплачено… вопрос: кому принадлежат авторские права, заказчику или исполнителю? =)

                                                Был бы заказчик «компания», то тут без вариантов, когда это частное лицо — по договоренности.

                                                На самом деле дополнение дороговатое, но если учитывать, что оно для магазина т.е. коммерческая деятельность, возможно не так уж и сильно дорого, но на мой взгляд, уместная цена (490 рублей) т.к. товар единичен (1 проект = 1 дополнение) да и с точки зрения маркетинга, новое продают со скидкой, чтоб познакомить покупателей с товаром и в дальнейшем установить цену выше, ну или заведомо высокую цену снизить и подразнить скидкой. Конверсия штука тонкая =)

                                                — Я сам не использую шоп т.к. незачем, но и не исключая факт возможной надобности. Личное мнение.
                                                  Володя
                                                  08 июля 2014, 09:58
                                                  0
                                                  То что требовалось заказчику уже вылилось в другой пакет со своими требованиями (НДС, перерасчет цен...). То что предлагается тут — это другое решение.
                                                  По поводу дорого даже говорить ничего не буду…
                                              Федор
                                              08 июля 2014, 02:05
                                              0
                                              шикарно, спасибо парни!
                                              Марк Валерич
                                              08 июля 2014, 14:26
                                              0
                                              Владимир, вот лучше скажи.
                                              Эти цены для размерностей в каком виде и где содержатся в MySql?
                                              Импорт в них возможен?? или они только ручками заполняются?
                                                Володя
                                                08 июля 2014, 16:22
                                                0
                                                все сохраняется в properties ресурса — 'msoptionsprice'
                                                то есть можно сделать как то так:
                                                $res = $modx->getObject('modResource', ID);
                                                $prop = $res->get('properties');
                                                $prop = $prop['msoptionsprice'];
                                                $prop[свойство_продукта_minishop] = '88888'; 
                                                $res->set('properties',array('msoptionsprice' => $prop));
                                                $res->save();
                                                  Дмитрий Аюпов
                                                  Дмитрий Аюпов
                                                  30 июня 2015, 00:23
                                                  0
                                                  В какой таблице сохраняется этот properties ресурса — 'msoptionsprice'?
                                                Купчинский Михаил
                                                26 августа 2014, 23:32
                                                0
                                                Владимир, добрый вечер! Заметил один глюк в этом компоненте. При четырехзначных ценах, указанных в размерах — цена в карточке товара сбрасывается в ноль. С трехзначными ценами этого не происходит.
                                                  Володя
                                                  27 августа 2014, 04:02
                                                  0
                                                  возможно у вас старый js подключен на фронте. в первой версии пакета форматирование цены происходило там. Сейчас все нормально, вот только что попробовал — demo.vgrish.ru/category/tovar-3.html
                                                  Отпишите в техподдержку — решим.
                                                    Купчинский Михаил
                                                    27 августа 2014, 08:49
                                                    0
                                                    вопрос решился, msOptionsPrice оперирует на фронтенде сразу с отформатированными ценами, на сайте же была последующая обработка скриптами этих цен И получалось, что для 4хзначных цен появлялся пробел, который нарушал преобразование цены в числовое значение.
                                                      Володя
                                                      27 августа 2014, 08:54
                                                      0
                                                      ну и отлично
                                                  Володя
                                                  03 сентября 2014, 09:34
                                                  0
                                                  дополнил описание импорта дополнительных цен через скрипт от Василия
                                                    Andrey Aksyuta
                                                    24 сентября 2014, 12:08
                                                    0
                                                    Доброго времени суток, будет ли в будущем реализована зависимость, например, не только цены от размера, но и, допустим, меняя «модель» товара меняется его «цена» и «габариты». Или она уже там есть?))) Или после покупки можно ползти в код и пытаться «улучшить» своими руками эту крутую опцию?))))
                                                      Илья Уткин
                                                      24 сентября 2014, 13:11
                                                      0
                                                      Немного поторопился написать в магазин. Сейчас объясню проблему и предлагаемое решение.

                                                      В студии «London PM» разрабатываем интернет-магазин. В магазине продаются товары разных размеров. У товара цена не заполнена, так как она зависит от размера. s311.h1.simpledream.ru/ Если товар добавить в корзину прямо из списка товаров (с главной страницы, например), то в корзине размер товара не отображается (так как он не был выбран, что логично, в общем-то), как и цена.

                                                      Вот плагин, чтобы вывести минимальную цену в списке товаров, если цены указаны только у разных размеров:
                                                      if ($modx->event->name == 'msOnGetProductPrice') {
                                                      	$values = & $modx->event->returnedValues;
                                                      	if (isset($values['price'])) {
                                                      		$price = $values['price'];
                                                      	}
                                                      	if (!$price) {
                                                      	    if (isset($data['properties']['msoptionsprice'])) {
                                                      	        $optionPrices = $data['properties']['msoptionsprice'];
                                                      	    } else {
                                                      	        $res = $modx->getObject('modResource', $product->id);
                                                      	        $optionPrices = $res->getProperties('msoptionsprice');
                                                      	    }
                                                      	    $optionPrices = array_filter($optionPrices, function($elem) {
                                                      	        return $elem;
                                                      	    });
                                                      	    $values['price'] = min($optionPrices);
                                                      	}
                                                      }

                                                      А это правки кода существующего плагина, чтобы в корзину передавались и цена, и размер:
                                                      public function msOnBeforeAddToCart($scriptProperties,$product = 0) {
                                                      
                                                          if (is_array($scriptProperties['options']) && !empty($scriptProperties['options'][$this->ms_op_options])) {
                                                              $size = $scriptProperties['options'][$this->ms_op_options];
                                                          } else {
                                                              $optionPrices = $product->getProperties('msoptionsprice');
                                                      	    $minPrice = 0;
                                                      	    foreach ($optionPrices as $optionsize => $price) {
                                                      	        if (($price > 0 && $price < $minPrice) || !$minPrice) {
                                                      	            $minPrice = $price;
                                                      	            $size = $optionsize;
                                                      	        }
                                                      	    }
                                                          }
                                                      
                                                      	$id = $product->get('id');
                                                      	$res = $this->modx->getObject("modResource",$id);
                                                      	$properties = $res->get('properties');
                                                      	
                                                      	$new_price = $properties['msoptionsprice'][$size];
                                                      	$values = & $this->modx->event->returnedValues;
                                                      	if (isset($new_price)) $product->set('price', $new_price);
                                                      	if (isset($size)) $values['options']['size'] = $size;
                                                      
                                                      }
                                                        Володя
                                                        24 сентября 2014, 14:54
                                                        0
                                                        Да я сразу понял что ты имеешь ввиду добавление с каталога… Спасибо что высказываешь свое мнение.
                                                        Но идеально под все сразу заточить не возможно. В другом магазине будут новые требования…
                                                        Подумаю над твоими правками…
                                                        p.s.
                                                        а вообще опцию товара с каталога можно просто передать и не нужно ничего велосипедить…
                                                        в чанк добавим в форму 
                                                        <input type="hidden" name="options[size]" value="[[+size.0]]">
                                                        p.p.s СПАСИБО!
                                                          Илья Уткин
                                                          24 сентября 2014, 14:59
                                                          0
                                                          Дам-с… )))

                                                          Первый магазин делаю, еще не вник целиком в логику))) Все получилось, теперь обновление и не нужно))
                                                        Юрий Эффа
                                                        27 октября 2014, 15:55
                                                        0
                                                        Поставил… К сожалению, работает либо только по «color», либо только по «size» — две опции выбрать нельзя. Конечно, вариант с возможностью указания значения смещения цены на фиксированное положительное\отрицательное значение или процент был бы приемлемее…
                                                          Юрий Эффа
                                                          27 октября 2014, 16:00
                                                          0
                                                          Как его можно заставить работать со сторонним свойством товара? В mysql оно как tinyint, в админке — чекбокс. Надо хранить в ms_product варианты чекбокса как [«0»,«1»]? ))
                                                            Володя
                                                            27 октября 2014, 16:10
                                                            0
                                                            незнаю, с чекбоксом не пробовал…
                                                            Алексей
                                                            22 декабря 2014, 23:02
                                                            0
                                                            вот отличный прототип, только для магенто amasty.com/color-swatches-pro.html
                                                              Андрей
                                                              07 января 2015, 03:58
                                                              0
                                                              Не работает в корзине почему-то, хотя на карточке товаров все ок
                                                                Володя
                                                                07 января 2015, 09:32
                                                                0
                                                                Смена параметров товара в корзине это другой компонент — store.simpledream.ru/packages/ecommerce/msquickview.html
                                                                  Андрей
                                                                  07 января 2015, 14:05
                                                                  0
                                                                  А, спасибо, просто сразу увидел скрин примера корзины и подумал, что и там будет работать смена, да и логично как-то.
                                                                mekirile
                                                                12 февраля 2015, 09:19
                                                                0
                                                                Понимаю, что компонент для зависимости цен, но всё же спрошу совета…

                                                                В описание Msklad (http://modstore.pro/packages/integration/msklad) пишут…

                                                                Вариант 5 — импорт цен/наличия для нескольких торговых предложений одного товара
                                                                … Наличие в соответствии с характеристикой выгружается при настроенной связи с источником «Количество» в аналогичном формате — 110х120==15||200х200==2||300х300==0.


                                                                Так как всё-таки реализовать учёт остатков для каждого размера? Т.е. если кол-во товара размера S больше 0, то выводим этот размер в селекте на карточке товара, а если 0, то не выводим.

                                                                Кто-то может взяться написать такой сниппет. Работу оплачу и объясню подробно.
                                                                  Володя
                                                                  12 февраля 2015, 11:35
                                                                  0
                                                                  напиши в скайп — vgrish_vgrish
                                                                  Просветов Игорь
                                                                  24 февраля 2015, 18:31
                                                                  0
                                                                  Хотел узнать, удалось ли реализовать учёт остатков для каждого размера? Тоже очень надо.
                                                                  Просветов Игорь
                                                                  24 февраля 2015, 18:41
                                                                  0
                                                                  Владимир, напишите, что надо что бы это сделать?
                                                                    Володя
                                                                    24 февраля 2015, 18:45
                                                                    0
                                                                    напишите в скайп vgrish_vgrish. Пообщаемся.
                                                                    Валерий Савинов
                                                                    08 июня 2015, 10:31
                                                                    0
                                                                    не подскажете как вывести все стоимости?
                                                                    Например есть таблица товара, в ней вывожу:
                                                                    товар и партию(сколько за раз можно купить)
                                                                    Например Визитка односторонняя — до 100штук 1 цена, до 500штук вторая и так далее.

                                                                    Проще говоря надо вывести цены всех свойств. Как это можно сделать?
                                                                    nekto
                                                                    07 октября 2015, 20:07
                                                                    0
                                                                    А можно как-нибудь вывести сразу все цены. Например три цены, каждая со своей опцией в столбик, и под каждой кнопка «купить»?
                                                                      Сергей
                                                                      10 апреля 2016, 11:19
                                                                      0
                                                                      Добрый день!
                                                                      Эта версия не работает с последним minishop2?
                                                                        Alexsandr
                                                                        20 июня 2016, 12:07
                                                                        0
                                                                        Здравствуйте а как сделать вывод с выборкой цены на страницу фронтенда???? что нужно прописать в шаблоне ????
                                                                          web3
                                                                          15 ноября 2017, 12:57
                                                                          1
                                                                          0
                                                                          Может кто сталкивался с изменением цен у товаров в каталоге при фильтрации? Фильтруешь товары с опциями, а в каталоге у товаров даже цена не изменяется. Это как-то решено?
                                                                            web3
                                                                            16 ноября 2017, 07:48
                                                                            0
                                                                            С данным моментом разобрался, все отлично. Но, появился другой момент, как фильтровать по ценам модификаций, а не товаров? Получается что у товара цена указана 30к, в модификации цена 35к, а в фильтре максимальное 30к и получается дикая несуразица при взгляде на фильт с выведенными данными…
                                                                              Володя
                                                                              16 ноября 2017, 09:33
                                                                              0
                                                                              Научить фильтр работать с ценами модификаций. Если у вас mFilter читать тут docs.modx.pro/components/msearch2/extension/components/msearch2/the-extension/filtering-methods
                                                                                web3
                                                                                16 ноября 2017, 12:20
                                                                                0
                                                                                Спасибо, это дало какое-то направление размышлений, но до конца, ясности так и не появилось. По идее, если я правильно понял, нужен стандартный метод для фильтрации по цене, но только он должен обращаться к другой таблице и выбирать другое поле.
                                                                                Володя
                                                                                16 ноября 2017, 11:57
                                                                                1
                                                                                +1
                                                                                — вызов в mFilter2
                                                                                Для вывода слайдера цен с учетом модификаций необходимо положить кастомный класс фильтрации в папку и указать в настройке mse2_filters_handler_class класс msopFilters
                                                                                /core/components/msearch2/custom/filters/
                                                                                [[!mFilter2?
                                                                                	&limit=`5`
                                                                                	&parents=`0`
                                                                                	&element=`msProducts`
                                                                                	&setMeta=`1`
                                                                                	&filters=`
                                                                                		msop|price:number
                                                                                		msoption|size
                                                                                	`
                                                                                	&tpls=`tpl.msProducts.row,tpl.msProducts.row`
                                                                                	&class=`msProduct`
                                                                                	&sort=`ms|price:desc`
                                                                                	&tplOuter=`tpl.mFilter2.outer`
                                                                                
                                                                                	&tplFilter.outer.msop|price=`tpl.mFilter2.filter.slider`
                                                                                	&tplFilter.row.msop|price=`tpl.mFilter2.filter.number`
                                                                                ]]
                                                                                Можно обновить пакет и применить вышеизложенное.
                                                                                  web3
                                                                                  16 ноября 2017, 12:40
                                                                                  0
                                                                                  Спасибо, все хорошо работает. Но все же остался один недостаток, с которым, наверное, придется смириться или очень долго исправлять. Теперь при выборе цены в верхнем диапазоне, товары фильтруются правильно, но отображаются с базовыми ценами, цены меняются только при выборе какой-либо из опций…
                                                                                    Володя
                                                                                    16 ноября 2017, 13:23
                                                                                    1
                                                                                    0
                                                                                    феном приходит на помощь… В чанке продукта вверху добавить
                                                                                    {if $tmp = $.request['msop|price']|split}
                                                                                        {var $m = '!msOptionsPrice.modification'|snippet:[
                                                                                        'product' => $id,
                                                                                        'limit' => 1,
                                                                                        'return' => 'data',
                                                                                        'where' => ["msopModification.price >= "~$tmp[0]~" AND msopModification.price <= "~$tmp[1]],
                                                                                        ]}
                                                                                        {set $m = $m[0]}
                                                                                        {if $m.price?}{set $price = $m.price}{/if}
                                                                                    {/if}
                                                                                      web3
                                                                                      21 ноября 2017, 10:21
                                                                                      0
                                                                                      Только попробовал, выводит с учетом фильтра по ценам и потом сразу затирает, т.к. цены зависят не от одно параметра. Выше просто изменили цену на ближайшую подходящую, но при этом остальные параметры не изменили и не учитывали.
                                                                                        Володя
                                                                                        21 ноября 2017, 10:51
                                                                                        0
                                                                                        Выше просто изменили цену на ближайшую подходящую, но при этом остальные параметры не изменили и не учитывали.
                                                                                        да, взяли цену подходящую под запрос.
                                                                                        Если вам нужно учитывать еще и опции — вы можете это дописать в вызов сниппета.
                                                                                          web3
                                                                                          05 декабря 2017, 12:32
                                                                                          0
                                                                                          Я правильно понимаю, что, для учета других свойств модификации требуется дописать в вызове сниппета следующее
                                                                                          {if $.request['msoption|size']}
                                                                                                 {var $m = '!msOptionsPrice.modification'|snippet:[
                                                                                                 'product' => $id,
                                                                                                 'limit' => 1,
                                                                                                 'return' => 'data',
                                                                                                 'where' => ["msopModification.price >= "~$tmp[0]~" AND msopModification.price <= "~$tmp[1]~" AND msop_modification_options.value <= "~$.request['msoption|size']~" AND msop_modification_options.key =='size' "]],
                                                                                                 ]}
                                                                                              {/if}
                                                                                            Андрей
                                                                                            18 июля 2018, 09:21
                                                                                            +1
                                                                                            Добрый день. Столкнулся с такой же задачей. Подскажите, как вы сделали работу с 2 и более опциями?
                                                                                              web3
                                                                                              20 июля 2018, 10:33
                                                                                              0
                                                                                              Требовалась работа только с 2-я параметрами. Делал по указаниям выше, только там сначала пришлось учитывать активные параметры и для конкретного набора параметров править запрос к базе. Не самое гибкое решение.
                                                                                                Андрей
                                                                                                20 июля 2018, 10:53
                                                                                                0
                                                                                                Мне сейчас тоже нужно 2 параметра учесть (но они оба НЕ цена), можете поделиться вашим кодом, чтобы я сделал?
                                                                                                web3
                                                                                                20 июля 2018, 11:00
                                                                                                1
                                                                                                0
                                                                                                К сожалению, пример уже не смогу дать, исходников не осталось. Могу сказать, что код выше будет рабочим при небольшой допилке (переработать запрос к базе и добавить условие на параметр).
                                                                                                {if $.request['msoption|size']}
                                                                                                       {var $m = '!msOptionsPrice.modification'|snippet:[
                                                                                                       'product' => $id,
                                                                                                       'limit' => 1,
                                                                                                       'return' => 'data',
                                                                                                       'where' => ["msopModification.price >= "~$tmp[0]~" AND msopModification.price <= "~$tmp[1]~" AND msop_modification_options.value <= "~$.request['msoption|size']~" AND msop_modification_options.key =='size' "]],
                                                                                                       ] /*Это условие чуть исправить, оставить только присутствующие запросе поля*/
                                                                                                    } 
                                                                                                    {/if}
                                                                                    Мартин Очоа
                                                                                    23 июня 2019, 01:11
                                                                                    0
                                                                                    Привет! Не осталось кастомного класса для фильтрации по ценам модификаций? Думаю, многим будет полезен.
                                                                              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                                                              89