плагины в Minishop 2.4.2 Новый


В старой версии наделал доп. полей (свойств) товарам (не могу найти заметку, короче там в папку plugins кладешь файл .map с новыми полями в БД)
После обновления до последней версии, эти свойства перестали работать.
Скажите они теперь не работают? Типа появились опции товаров, или что-то надо сделать (включить что-то или где-то что-то написать)?
17 august 2016, 02:14    Сашок   
1    669 0

Comments (20)

  1. Дмитрий Середюк 17 august 2016, 02:48 # 0
    вот же оно!!! )
    1. Сашок 17 august 2016, 03:27 # 0
      Сделал как там описано, но доп свойства у товаров не появляются.
      Я сделал плагин при событии OnMODXInit запускается это:
      if ($miniShop2 = $modx->getService('miniShop2')) {
      $miniShop2->addPlugin('myfields', '{core_path}components/myfields/index.php');
      }

      Правильно я регистрирую плагин?

      короче доп. поля не появляются. Хотя на старой версии Минишопа из папки Plugins они работали
      Чё делать незнаю, там до хрена товаров и значения новых полей БД прописаны, создавать опции и переносить эти значения туды не вариант.

      Мож я как неправильно запускаю этот плагин? Или вообще как проверить что мой новый плагин загрузился?
      1. Василий Наумкин 17 august 2016, 07:41 # 0
        Плагин нужно зарегистировать 1 (один) раз, дальше он будет грузиться самостоятельно.

        Проверить наличие дополнительного поля можно вот так:
        $modx->newObject('msProduct')->toArray();
        и в массиве ты должен увидеть все поля товара.

        Если поле в массиве есть, а в админке его нет — смотри системные настройки и добавляй его там.
        1. Сашок 17 august 2016, 11:59 # 0
          Нет не получается.
          Сделал следующее.
          -Колонка opt_price в табл. БД есть (там данные на все товары от старого подключения плагина)
          — в системный настройках вывод поля opt_price в товарах есть
          — скопировал все файлы из примера и закинул их туда куда нужно, заменив color на opt_price. Папки тоже называются opt_price в component
          — Запустил добавления плагина
          Ни фига не работает. Не добавляются поля. А в массиве при выборе любого товара так $modx->getObject('msProduct', 16)->toArray(); поле opt_price не появляется

          Что еще можно сделать, например мож куда сунуть вывод ошибки в тот момент когда происходит регистрация плагина?
          1. Василий Наумкин 17 august 2016, 12:15 # +1
            Ну, значит не работает.

            Может, починит кто-то, а я уже задолбался разбираться в чужих проблемах.
            1. Сашок 17 august 2016, 12:34 # 0
              Ладно буду ковырять потом выложу решение.

              Только пару вопросов:
              1. тут $miniShop2->addPlugin('msplColor', '{core_path}components/msplcolor/index.php');
              обязательно писать mspl ну типа у меня должно получиться msplOpt_price синтаксис то есть обязателен или по фиг на имя?
              2. У вас на Гитхабе в примере в файле index.php написано так:
              'map' => array(
              'msProductData' => require_once 'msproductdata.inc.php',
              ),
              map — индекс массива
              а при распаковки транспортного пакета, когда он встанет куда надо файл index выглядет по другому
              'xpdo_meta_map' => array(
              'msProductData' => require_once 'msproductdata.inc.php',
              ),
              то есть уже ключ массива xpdo_meta_map — так какой же ключ правильный?
              3. Куда можно воткнуть запись в лог в ваших скриптах, если регистрация плагина не удалась? Ну или в каком месте происходит эта регистрация? А я уж сам там покопаю
              4. Еще из вашего примера, после установки транспортного пакета, в core/components возникает папка /0 в которой лежит папка /msplcolor с файлом js — это так и положено?
              5. Можно ли в одном файле несколько полей добавлять типа так как у меня в старом виде было
              getFields: function(config) {
              return {
              opt_price: {xtype: 'numberfield', decimalPrecision: 2, description: '[[+opt_price]]
              '+_('ms2_product_opt_price_help')},
              in_stock: {xtype:'xcheckbox', inputValue:1, checked:parseInt(config.record.in_stock), description: '[[+in_stock]]
              '+_('ms2_product_in_stock_help')},
              stock: {xtype: 'minishop2-combo-autocomplete', description: '[[+stock]]
              '+_('ms2_product_stock_help')}

              }
              }

              1. Сашок 17 august 2016, 13:34 # +1
                Разобрался!)))

                Сам тормоз, когда боролся ошибками после обновления Минишопа отключил
                $miniShop2->loadMap();
                поэтому не загружалась карта плагина

                Но теперь другой косячек поле opt_price: {xtype: 'numberfield'
                в свойствах товара почему-то 2 раза выводится
              2. Сашок 17 august 2016, 14:23 # 0
                Всё разобрался окончательно.
                Советы автору мож актуально:
                — В одном файле можно замутить несколько плагинов, но в настройку ms2_plugins почему-то пишется только первое доп. свойство. Хотя это наверно по фиг раз все работает
                -Если юзер по глупости (как я) создал свойство товара с таким же именем как имя доп. поле товара, то в товаре будет выводится кривое поле. Мож какую проверочку замутить? Тоже не критично, но вдруг кто попадет также заканает вопросами.
                -В документации наверно надо написать, как запускать (1 раз !!!) плагин, а то пока расковыряешь все, время пройдет, а оказывается надо просто сниппет создать, запустить и забыть, или еще проще руками прописать в настройку JSON строку.

                Короче все работает спс.
                1. Georg 18 december 2016, 13:59 # 0
                  А как в итоге регистрируется плагин? Создается плагин на событие OnMODXInit? Или нужно сниппет создавать?
                  1. Александр 18 december 2016, 15:41 # 0
                    снипет создать и запустить один раз хотябы, вроде так ща непомню уже
                    1. Georg 18 december 2016, 16:08 # 0
                      А где создать и как запустить? Куда вставить этот код —
                      if ($miniShop2 = $modx->getService('miniShop2')) {
                          $miniShop2->addPlugin('msplColor', '{core_path}components/msplcolor/index.php');
                      }
            2. Владимир 23 december 2016, 15:32 # 0
              Вызов функции

              $miniShop2->addPlugin('myfields', '{core_path}components/myfields/index.php');
              приводит к ошибке 500 на сервере. Проверяю наличие метода addPlugin с помощью Reflection

              $class = new ReflectionClass('miniShop2');
              $methods = $class->getMethods();
              var_dump($methods);
              
              и в выходном массиве его нет.
              1. Василий Наумкин 23 december 2016, 15:34 # 0
                Конечно, он есть только в miniShop2.4+
                1. Владимир 23 december 2016, 15:40 # 0
                  А подскажите, как сделать свойство, аналогичное производителю или цвету, чтобы одно хранилось в таблице modx_ms2_products, а не tv-параметром. Для версии minishop 2.2.0
                  1. Владимир 26 december 2016, 15:50 # 0
                    Василий, пожалуйста ответьте про версию minishop 2.2.0. Очень интересно узнать корректный способ реализации такого функционала.
                    1. Василий Наумкин 26 december 2016, 16:15 # +1
                      Владимир, пожалуйста, прочитайте документацию.
                      1. Владимир 27 december 2016, 12:44 # 0
                        Василий, я читал документацию и первоначальный вопрос задал именно по ней. Из вашего ответа от 23 декабря 2016, 15:34
                        Конечно, он есть только в miniShop2.4+
                        я понял, что документация не актуальна для версии 2.2.0. Давайте я переформулирую вопрос так: на какие параграфы из документации нужно ориентироваться при работе с minishop 2.2.0?
                        1. Василий Наумкин 27 december 2016, 13:19 # 0
                          Старый, не рекомендуемый — положить свой контроллер в директорию MODX_CORE_PATH. 'components/minishop2/plugins/имяплагина/'. Он должен выдать пути для подключения изменения модели и админки, так что эти файлы вы вольны класть куда угодно.
              2. Алексей 17 august 2016, 10:12 # 0
                Добрый день!
                Я сейчас добавлял свойство (Объем), согласно инструкции, все получилось.
            3. Deja_Vu 27 december 2016, 16:18 # 0
              К стати не подскажите когда ожидать обновления miniShop2 в официальном репозитарии Modx?
              You need to login to create comments.