Управления плагинам minishop2 или добавление полей в ms2_products через компонент [msAddField]

Все давно уже познакомились с методом добавления полей через плагины который написал Василий еще в каком то 17 или 2018 году, может раньше

Давно уже написал класс для управления полями через мой компонент который так и не представился миру msCml (синхронизация 1С с характеристикам msOptionsPrice2).

На этих выходных все таки дошли руки и собрал таки компонент msAddField (пока только на github, для самых маленьких))))): там же ссылка на яндекс диск)


Что делает компонент


  • Создает поле в базе данных;
  • Создает JS файл в директории assets/components/minishop2/plugins/msaddfield/msproductdata.js;
  • Расширяет карту полей для msProductData записывая новые полея в файл core/components/minishop2/plugins/msaddfield/msproductdata.inc.php;
  • Выводит поле в карточке товара;
  • Добавляет в системную настройку ms2_product_extra_fields новое поле которое будет выводиться в карточке товара;

Демонстрация


Видео о том как добавятся два поля, текстовое и множественное:


После публикации компонент будет абсолютно бесплатен
https://modstore.pro/packages/utilities/msaddfield

Возможно что публикации не будет. Но ничего страшного, можно скачать с github:
github.com/webnitros/msAddField
Андрей Степаненко
13 октября 2020, 17:11
modx.pro
12
718
+22
Поблагодарить автора Отправить деньги

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

Aleksandr Huz
13 октября 2020, 19:46
+1
Напоминает msFieldsManager
Павел Бигель
14 октября 2020, 01:46
+1
А вот за это респект!
Расширять поля по одиночке надоело
    Александр Мельник
    14 октября 2020, 09:23
    0
    Ничего себе, выглядит удобно. Спасибо что поделились.
      Alexey
      14 октября 2020, 10:56
      0
      Спасибо, очень удобно!
        Дмитрий Суворов
        15 октября 2020, 15:15
        0
        Спасибо!
          Роман
          15 октября 2020, 15:25
          0
          Хорошее решение, быстрое и удобное. Спасибо за проделанную работу. Кинул соточку! =)
            Константин Ильин
            16 октября 2020, 22:56
            0
            Круто! Получается он в полной мере может заменить «Опции товара» входящие по умолчанию в ms2?
              Андрей Степаненко
              17 октября 2020, 08:36
              0
              Не совсем альтернатива «Опции товара». Опции работают как и обычные ТВ параметры, только данные храниться в другой таблице.

              Например создать поле в Опции товара то оно будет обновляться так:
              // Опции товаров
              /** @var $product msProduct */
              if ($product = $modx->getObject('msProductData', 11)) {
                  $product->set('options', [
                      'new_price' => [3500]
                  ]);
                  $product->save();
                  // Здесь при сохранении срабатывает метод saveProductOptions который удаляет старые значения и добавляет новые
                  // Что замедляет скорость сохранения
              }

              Через расширения полей плагинами (msAddField)
              /** @var $product msProduct */
              if ($product = $modx->getObject('msProductData', 11)) {
                  $product->set('new_price', 3500);
                  $product->save();
              }

              В общем чтобы обновить обычную цену или получить её на фронте приходиться постоянно обращаться к msProductOption msOption

              Намного легче управлять данными когда все в одной таблице(ms2_prodcuts) храниться.
                Константин Ильин
                17 октября 2020, 12:35
                0
                Мне больше процессоры по душе :) Так создаю:
                $response = $modx->runProcessor('resource/create', [
                'class_key' => 'msProduct',
                'pagetitle' => $pagetitle,
                'parent' => $parentID,
                'content' => $description,
                'published' => 0,
                
                //Данные
                'price' => $price,
                'old_price' => 0,
                //'favorite' => 0,
                //'popular' => 0,
                'vendor' => $idVendor,
                
                //стандартные опции товара
                'color' => ['Синий', 'Красный'],
                'size' => ['S', 'M'],
                'tags' => ['Тег1', 'Тег2'],
                
                //свои опции созданные в настройках
                'options-postavshik' => 'Москва',
                'options-postavshik-article' => $articleNum,
                
                //TV - 10 это id TV
                'tv10' => 'Значение'
                ]);
                
                $id = $response->response['object']['id'];
                А в целом опции товара неудобны тем, что они в отдельно вкладке, люди путаются. Аж две вкладки(Свойства и Опции) с характеристиками товара. Опции хороши тем что есть выбор в какой категории показывать, но ощущение недоработанности. Ну а так MS2 давно надо переписывать под современные реалии магазинов.

                Спасибо за компонент, наверняка буду пользоваться!
                  Андрей Степаненко
                  17 октября 2020, 13:59
                  0
                  Разница особо нет, функция save() там также выполняется, которая запускает saveProductOptions
              Элл
              Вчера в 17:34
              0
              Добрый вечер! Подскажите пожалуйста, как установить на сайт это дополнение?
                Андрей Степаненко
                Вчера в 18:48
                0
                Там есть ссылка на установочный файл
                  Элл
                  Вчера в 19:00
                  0
                  По ссылке я скачал его к себе на компьютер, но как его внедрить в сам modx? Я очень плохо разбираюсь в modx, и мне не понятно, как установить на сайт это дополнение, чтобы как в вашем видео добавлять новые поля к товарам
                    Андрей Степаненко
                    Вчера в 19:05
                    0
                    Набери в гуле: Modx загрузка компонента локально
                      Элл
                      Вчера в 19:27
                      0
                      Я загрузил скачанный пакет в core-->packages потом сделал загрузить локально в установщике, но он не находит

                      что я делаю не так? подскажите пожалуйста!
                        Андрей
                        12 минут назад
                        0
                        Нажми Загрузить пакет с компьютера, загрузи и установи.
                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                17