Управления плагинам 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
21
1 467
+22
Поблагодарить автора Отправить деньги

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

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
              Элл
              27 октября 2020, 17:34
              0
              Добрый вечер! Подскажите пожалуйста, как установить на сайт это дополнение?
                Андрей Степаненко
                27 октября 2020, 18:48
                0
                Там есть ссылка на установочный файл
                  Элл
                  27 октября 2020, 19:00
                  0
                  По ссылке я скачал его к себе на компьютер, но как его внедрить в сам modx? Я очень плохо разбираюсь в modx, и мне не понятно, как установить на сайт это дополнение, чтобы как в вашем видео добавлять новые поля к товарам
                    Андрей Степаненко
                    27 октября 2020, 19:05
                    0
                    Набери в гуле: Modx загрузка компонента локально
                      Элл
                      27 октября 2020, 19:27
                      0
                      Я загрузил скачанный пакет в core-->packages потом сделал загрузить локально в установщике, но он не находит

                      что я делаю не так? подскажите пожалуйста!
                        Андрей
                        28 октября 2020, 10:39
                        0
                        Нажми Загрузить пакет с компьютера, загрузи и установи.
                          Элл
                          28 октября 2020, 11:04
                          0
                          Я так и делаю, но такая ошибка

                          не знаете почему?
                            Андрей
                            28 октября 2020, 11:20
                            0
                            А что это за архив? Там же в описании есть ссылка — https://yadi.sk/d/xzJNgfk28ZCdpA. И называться он должен — msaddfield-1.0.6-beta.transport.zip
                              Элл
                              28 октября 2020, 11:45
                              0
                              Спасибо за ответ! Получилось установить пакет, но установка все равно заканчивается ошибкой…
                                Андрей
                                28 октября 2020, 12:16
                                0
                                Возможно какая то проблема с настройками хостинга, как минимум нужно проверить права на папки, должны быть 755.

                                Для интереса установил на нескольких сайтах пакет, всё работает корректно.
                                  Элл
                                  29 октября 2020, 00:02
                                  0
                                  Добрый вечер! Мне удалось установить пакет! Спасибо! Получилось добавить новые поля для свойств, они отображаются в админке, но в карточке товара их нет. Как их вывести в карточку товара? Подскажите пожалуйста или дайте рекомендацию, что можно почитать…
              krion44
              30 октября 2020, 14:33
              0
              Установил пакет, добавил поле brend(на скрине), в админке появилось, на сайте информация отображается.
              Но при удалении поля почему то исчезают все поля во веладке Свойства товара.
              При добавлении/удалении новых полей все работает нормально. В чем может быть причина?



                krion44
                30 октября 2020, 15:11
                0
                Удалил папки, все стало норм.
                assets/components/minishop2/plugins/msaddfield
                core/components/minishop2/plugins/msaddfield
                Дмитрий
                19 ноября 2020, 11:22
                0
                Спасибо! Часто требуется сделать две цены (розница/опт). Раньше делал это ручками!))
                  Rrp2010
                  19 ноября 2020, 19:08
                  0
                  Можно подключить к полю, текстовый редактор

                  Добавляем плагин на событие OnDocFormRender

                  <?php
                  $modx->regClientStartupHTMLBlock('<script>Ext.onReady(function() {
                      if(MODx.loadRTE) MODx.loadRTE("modx-resource-introtext");
                  });</script>');
                  В данном случае, это будет introtext
                    Orange
                    14 января 2021, 15:39
                    0
                    Это колоссальная работа и думаю многие скажу спасибо тебе, так как не все понимаю как создавать расширение для modx revo.
                    Спасибо огромное за такое расширение.
                    Обязательно нужно донатить таким людям ))
                    Расширение отличное советую всем подписался на автора статьей очень много интересного, советую всем))
                    Автору Большое спасибо и обязательно донатим ребята ))
                      Алексей
                      27 февраля 2021, 14:47
                      0
                      Спасибо автору!
                      Упростил мне задачу
                      Задонатил)
                        Александр
                        18 марта 2021, 21:55
                        0
                        Подскажите пожалуйста. Текстовые поля выводятся, а если делаю тип поля: «Множественные значения», то не выводит ничего
                          Александр
                          18 марта 2021, 22:08
                          0
                          Только что заметил, если вывести с помощью тега modx
                          [[+tag]]
                          , ничего не выводит также.
                          А если так:
                          [[*tag]]
                          , то выводит:
                          Array ( [0] =>Содержимое тега )
                          То есть дело в феноме, ибо json и ещё в чем то.
                            Александр
                            18 марта 2021, 23:03
                            0
                            Разобрался, через сниппет:
                            {'msOptions' | snippet : [
                                            'options' => 'my_tag'
                                        ]}
                            Спасибо за компонент
                              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                              31