плагины в Minishop 2.4.2
В старой версии наделал доп. полей (свойств) товарам (не могу найти заметку, короче там в папку plugins кладешь файл .map с новыми полями в БД)
После обновления до последней версии, эти свойства перестали работать.
Скажите они теперь не работают? Типа появились опции товаров, или что-то надо сделать (включить что-то или где-то что-то написать)?
После обновления до последней версии, эти свойства перестали работать.
Скажите они теперь не работают? Типа появились опции товаров, или что-то надо сделать (включить что-то или где-то что-то написать)?
Комментарии: 20
вот же оно!!! )
Сделал как там описано, но доп свойства у товаров не появляются.
Я сделал плагин при событии OnMODXInit запускается это:
if ($miniShop2 = $modx->getService('miniShop2')) {
$miniShop2->addPlugin('myfields', '{core_path}components/myfields/index.php');
}
Правильно я регистрирую плагин?
короче доп. поля не появляются. Хотя на старой версии Минишопа из папки Plugins они работали
Чё делать незнаю, там до хрена товаров и значения новых полей БД прописаны, создавать опции и переносить эти значения туды не вариант.
Мож я как неправильно запускаю этот плагин? Или вообще как проверить что мой новый плагин загрузился?
Я сделал плагин при событии OnMODXInit запускается это:
if ($miniShop2 = $modx->getService('miniShop2')) {
$miniShop2->addPlugin('myfields', '{core_path}components/myfields/index.php');
}
Правильно я регистрирую плагин?
короче доп. поля не появляются. Хотя на старой версии Минишопа из папки Plugins они работали
Чё делать незнаю, там до хрена товаров и значения новых полей БД прописаны, создавать опции и переносить эти значения туды не вариант.
Мож я как неправильно запускаю этот плагин? Или вообще как проверить что мой новый плагин загрузился?
Плагин нужно зарегистировать 1 (один) раз, дальше он будет грузиться самостоятельно.
Проверить наличие дополнительного поля можно вот так:
Если поле в массиве есть, а в админке его нет — смотри системные настройки и добавляй его там.
Проверить наличие дополнительного поля можно вот так:
$modx->newObject('msProduct')->toArray();
и в массиве ты должен увидеть все поля товара.Если поле в массиве есть, а в админке его нет — смотри системные настройки и добавляй его там.
Нет не получается.
Сделал следующее.
-Колонка opt_price в табл. БД есть (там данные на все товары от старого подключения плагина)
— в системный настройках вывод поля opt_price в товарах есть
— скопировал все файлы из примера и закинул их туда куда нужно, заменив color на opt_price. Папки тоже называются opt_price в component
— Запустил добавления плагина
Ни фига не работает. Не добавляются поля. А в массиве при выборе любого товара так $modx->getObject('msProduct', 16)->toArray(); поле opt_price не появляется
Что еще можно сделать, например мож куда сунуть вывод ошибки в тот момент когда происходит регистрация плагина?
Сделал следующее.
-Колонка opt_price в табл. БД есть (там данные на все товары от старого подключения плагина)
— в системный настройках вывод поля opt_price в товарах есть
— скопировал все файлы из примера и закинул их туда куда нужно, заменив color на opt_price. Папки тоже называются opt_price в component
— Запустил добавления плагина
Ни фига не работает. Не добавляются поля. А в массиве при выборе любого товара так $modx->getObject('msProduct', 16)->toArray(); поле opt_price не появляется
Что еще можно сделать, например мож куда сунуть вывод ошибки в тот момент когда происходит регистрация плагина?
Ну, значит не работает.
Может, починит кто-то, а я уже задолбался разбираться в чужих проблемах.
Может, починит кто-то, а я уже задолбался разбираться в чужих проблемах.
Ладно буду ковырять потом выложу решение.
Только пару вопросов:
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. тут $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')}
}
}
Разобрался!)))
Сам тормоз, когда боролся ошибками после обновления Минишопа отключил
$miniShop2->loadMap();
поэтому не загружалась карта плагина
Но теперь другой косячек поле opt_price: {xtype: 'numberfield'
в свойствах товара почему-то 2 раза выводится
Сам тормоз, когда боролся ошибками после обновления Минишопа отключил
$miniShop2->loadMap();
поэтому не загружалась карта плагина
Но теперь другой косячек поле opt_price: {xtype: 'numberfield'
в свойствах товара почему-то 2 раза выводится
Всё разобрался окончательно.
Советы автору мож актуально:
— В одном файле можно замутить несколько плагинов, но в настройку ms2_plugins почему-то пишется только первое доп. свойство. Хотя это наверно по фиг раз все работает
-Если юзер по глупости (как я) создал свойство товара с таким же именем как имя доп. поле товара, то в товаре будет выводится кривое поле. Мож какую проверочку замутить? Тоже не критично, но вдруг кто попадет также заканает вопросами.
-В документации наверно надо написать, как запускать (1 раз !!!) плагин, а то пока расковыряешь все, время пройдет, а оказывается надо просто сниппет создать, запустить и забыть, или еще проще руками прописать в настройку JSON строку.
Короче все работает спс.
Советы автору мож актуально:
— В одном файле можно замутить несколько плагинов, но в настройку ms2_plugins почему-то пишется только первое доп. свойство. Хотя это наверно по фиг раз все работает
-Если юзер по глупости (как я) создал свойство товара с таким же именем как имя доп. поле товара, то в товаре будет выводится кривое поле. Мож какую проверочку замутить? Тоже не критично, но вдруг кто попадет также заканает вопросами.
-В документации наверно надо написать, как запускать (1 раз !!!) плагин, а то пока расковыряешь все, время пройдет, а оказывается надо просто сниппет создать, запустить и забыть, или еще проще руками прописать в настройку JSON строку.
Короче все работает спс.
А как в итоге регистрируется плагин? Создается плагин на событие OnMODXInit? Или нужно сниппет создавать?
снипет создать и запустить один раз хотябы, вроде так ща непомню уже
А где создать и как запустить? Куда вставить этот код —
if ($miniShop2 = $modx->getService('miniShop2')) {
$miniShop2->addPlugin('msplColor', '{core_path}components/msplcolor/index.php');
}
Вызов функции
$miniShop2->addPlugin('myfields', '{core_path}components/myfields/index.php');
приводит к ошибке 500 на сервере. Проверяю наличие метода addPlugin с помощью Reflection$class = new ReflectionClass('miniShop2');
$methods = $class->getMethods();
var_dump($methods);
и в выходном массиве его нет.
Конечно, он есть только в miniShop2.4+
А подскажите, как сделать свойство, аналогичное производителю или цвету, чтобы одно хранилось в таблице modx_ms2_products, а не tv-параметром. Для версии minishop 2.2.0
Василий, пожалуйста ответьте про версию minishop 2.2.0. Очень интересно узнать корректный способ реализации такого функционала.
Владимир, пожалуйста, прочитайте документацию.
Василий, я читал документацию и первоначальный вопрос задал именно по ней. Из вашего ответа от 23 декабря 2016, 15:34
Конечно, он есть только в miniShop2.4+я понял, что документация не актуальна для версии 2.2.0. Давайте я переформулирую вопрос так: на какие параграфы из документации нужно ориентироваться при работе с minishop 2.2.0?
Старый, не рекомендуемый — положить свой контроллер в директорию MODX_CORE_PATH. 'components/minishop2/plugins/имяплагина/'. Он должен выдать пути для подключения изменения модели и админки, так что эти файлы вы вольны класть куда угодно.
Добрый день!
Я сейчас добавлял свойство (Объем), согласно инструкции, все получилось.
Я сейчас добавлял свойство (Объем), согласно инструкции, все получилось.
К стати не подскажите когда ожидать обновления miniShop2 в официальном репозитарии Modx?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.