плагины в Minishop 2.4.2

В старой версии наделал доп. полей (свойств) товарам (не могу найти заметку, короче там в папку plugins кладешь файл .map с новыми полями в БД)
После обновления до последней версии, эти свойства перестали работать.
Скажите они теперь не работают? Типа появились опции товаров, или что-то надо сделать (включить что-то или где-то что-то написать)?
Сашок
16 августа 2016, 23:14
modx.pro
2
3 325
0

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

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

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

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

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

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

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

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

          Может, починит кто-то, а я уже задолбался разбираться в чужих проблемах.
            Сашок
            17 августа 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')}

            }
            }

              Сашок
              17 августа 2016, 13:34
              +1
              Разобрался!)))

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

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

              Короче все работает спс.
                Futuris
                18 декабря 2016, 13:59
                0
                А как в итоге регистрируется плагин? Создается плагин на событие OnMODXInit? Или нужно сниппет создавать?
                  Александр
                  18 декабря 2016, 15:41
                  0
                  снипет создать и запустить один раз хотябы, вроде так ща непомню уже
                    Futuris
                    18 декабря 2016, 16:08
                    1
                    0
                    А где создать и как запустить? Куда вставить этот код —
                    if ($miniShop2 = $modx->getService('miniShop2')) {
                        $miniShop2->addPlugin('msplColor', '{core_path}components/msplcolor/index.php');
                    }
            Владимир
            23 декабря 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);
            и в выходном массиве его нет.
              Василий Наумкин
              23 декабря 2016, 15:34
              0
              Конечно, он есть только в miniShop2.4+
                Владимир
                23 декабря 2016, 15:40
                1
                0
                А подскажите, как сделать свойство, аналогичное производителю или цвету, чтобы одно хранилось в таблице modx_ms2_products, а не tv-параметром. Для версии minishop 2.2.0
                  Владимир
                  26 декабря 2016, 15:50
                  0
                  Василий, пожалуйста ответьте про версию minishop 2.2.0. Очень интересно узнать корректный способ реализации такого функционала.
                    Василий Наумкин
                    26 декабря 2016, 16:15
                    +1
                    Владимир, пожалуйста, прочитайте документацию.
                      Владимир
                      27 декабря 2016, 12:44
                      0
                      Василий, я читал документацию и первоначальный вопрос задал именно по ней. Из вашего ответа от 23 декабря 2016, 15:34
                      Конечно, он есть только в miniShop2.4+
                      я понял, что документация не актуальна для версии 2.2.0. Давайте я переформулирую вопрос так: на какие параграфы из документации нужно ориентироваться при работе с minishop 2.2.0?
                        Василий Наумкин
                        27 декабря 2016, 13:19
                        0
                        Старый, не рекомендуемый — положить свой контроллер в директорию MODX_CORE_PATH. 'components/minishop2/plugins/имяплагина/'. Он должен выдать пути для подключения изменения модели и админки, так что эти файлы вы вольны класть куда угодно.
              Алексей
              17 августа 2016, 10:12
              0
              Добрый день!
              Я сейчас добавлял свойство (Объем), согласно инструкции, все получилось.
            Deja_Vu
            27 декабря 2016, 16:18
            0
            К стати не подскажите когда ожидать обновления miniShop2 в официальном репозитарии Modx?
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              20