[msOptionsPrice2] - Небольшие изменения.

[msOptionsPrice2] с версии 2.2.6 beta добавлена обработка старой цены продукта.
Плейсходер [[+old_price]] — можно задать значение вручную в админке, либо при модификации стоимости туда попадает старая цена продукта.

В итоге мы видим перечеркнутую стоимость товара, вот к примеру minishop2.com/catalog/category-3/item-66

Обработка старой цены продукта
В случае с модификациями продукта, разница может быть очень значительна и практически всегда ее сумма выглядит нелогично. Поэтому была добавлена обработка старой цены продукта.
Логика расчета очень простая
цена продукта   старая цена продукта
----------------------------------------- =             -----------------------------------------
цена модификации продукта   старая цена модификации продукта

(цена продукта / старая цена продукта = цена модификации продукта / старая цена модификации продукта)
Достаточно проставить старую цену в основное поле продукта и старая стоимость модификации будет автоматически рассчитана.

Для смены на фронте нужно добавить необходимые классы. Пример чанка продукта тут gist.github.com/vgrish/b6998560c6a64c0f34109a9e632b9b56#file-gistfile1-txt-L22

В сниппете msOptionsPrice.modification поле так же доступно поле old_price.

Копия модификации
Добавлен процессор на копирование модификации.

Надеюсь заполнение станет намного удобнее.

рабочий пример s6200.h3.modhost.pro/katalog/tovar1.html
Володя
17 января 2017, 15:30
modx.pro
1
2 596
+9
Поблагодарить автора Отправить деньги

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

Виктор
18 января 2017, 08:57
0
Не появилось поля для указания старой цены модификации, где оно заполняется?
    Володя
    18 января 2017, 09:03
    +2
    Поля старой цены модификации и нет. Значение рассчитывается автоматически исходя из отношения полей цены и старой цены продукта магазина.
      Виктор
      18 января 2017, 12:10
      0
      Работает отлично! (Не работало по причине браузерного кэша)
    Константин Ильин
    28 мая 2017, 19:02
    0
    Здравствуй Володя!

    В чанке tpl.msOptionsPrice.modification пытаюсь вывести дамп масива $_pls
    {$_pls | print_r : true}
    В логе php ошибка о нехватке памяти, аж все 500мб теряются…
    PHP Fatal error:  Allowed memory size of 524288000 bytes exhausted (tried to allocate 511180801 bytes)
    Хочу узнать как подключать оригиналы изображений, для этого и лезу в этот массив, да вообще другие переменные посмотреть
      Константин Ильин
      28 мая 2017, 19:13
      0
      Быстро мне пришла мысль указать для вызова несуществующий чанк и получил весь дамп:)
      {$_modx->runSnippet('!msOptionsPrice.modification', [
                  'tpl' => 'no',
                  'includeThumbs' => 'small',
      
              ])}
        Володя
        28 мая 2017, 20:28
        +1
        пришла мысль указать для вызова несуществующий чанк
        верная мысль)
          Константин Ильин
          28 мая 2017, 20:39
          0
          Володь, а как лучше получать название Опции например max_height(Максимальная высота)?
          В массиве название опции не содержится, только текущее значение для модификации.

          Я хочу вывести стартовую(только первую) модификацию и ее опции с названием
            Володя
            29 мая 2017, 08:57
            +1
            можно указать параметр processOptions, тогда в массиве опций будут все значения, название, описание и тд. и нужно будет переделать вызов стандартного чанка.
      Константин Ильин
      01 июня 2017, 19:06
      0
      Володь, а почему после создания опции в модификации ее можно только удалить или удалить из опции.
      Особенно это на копирование влияет, т.е. я скопировал, захожу обновить а менять опции нельзя тока удалить, не очень комильфо когда опций много. Это с чем связанно?
      joxi.ru/gmv6wPnhLJ7pBm
        Володя
        01 июня 2017, 20:15
        +1
        а то что опции одновременно добавляются и удаляются и у товара, а так же в этот момент обновляются на странице ресурса и совсем не комильфо если будет просто редактирование…
        кароче так чтоб избежать лишних проблем.
      Константин Ильин
      12 июня 2017, 18:54
      0
      Володь, не подскажешь, что за настройка пхп нужна чтоб нормально работало, ато при попытке выбрать картинку из галерии выдает:
      [2017-06-12 15:05:32] (ERROR @ /var/www/www-root/data/www/site/core/components/msoptionsprice/processors/mgr/misc/product/getimages.class.php : 169) PHP warning: Invalid argument supplied for foreach()
      Картинок конечно не получаю…

      Версия PHP 7.0.18 (native)
        Володя
        12 июня 2017, 19:24
        0
        Привет. Скинь доступы в ТП. Завтра посмотрю в чем дело. Спасибо.
          varanika
          17 февраля 2019, 13:59
          0
          С версии 7.1 пустой индекс массива может вызвать ошибку.
          Заменить
          foreach ($data['results'] as $array) {
          на
          foreach ($data['results'] as $i => $array) {
          в 169 строке
          Дмитрий Танцирев
          11 ноября 2019, 21:56
          0
          Этот ваш old_price в корзину отправляется? Или он только в карточке товара работает? =)
            Дмитрий Танцирев
            11 ноября 2019, 22:27
            0
            В корзине, old_price берется из дефолтного минишоповского поля old_price, вместо old_price модификации.

            Я бы и сам поправил, но в ваших хитровымудренных сплетениях хитровымудренного недокументированного кода — черт ногу сломит.
              Володя
              11 ноября 2019, 22:32
              0
              Добрый вечер.
              Пишите пожалуйста в ТП.
              Спасибо.
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            17