Как подменять значение свойства на лету?
Как в плагине на ходу подставлять значение системной настройки, в зависимости от условия?
Ситуация: адреса менеджеров минишопа хранятся в системной настройке ms2_email_manager. В зависимости от условия нужно подставлять нужный адрес, в данном случае в зависимости от выбранного пользовтаелем города, заказы должны высылаться только в нужный город, а не всем менеджерам.
modx.pro/help/2658/ — а вариант настоящей смены системных настроек тоже не вариант, т.к. нужно подменять только для конкретного пользователя, а не для всех.
Как подсунуть минишопу нужную системную настройку «на лету» не меняя её оригинал?
UPD:
Решение плагином:
Ситуация: адреса менеджеров минишопа хранятся в системной настройке ms2_email_manager. В зависимости от условия нужно подставлять нужный адрес, в данном случае в зависимости от выбранного пользовтаелем города, заказы должны высылаться только в нужный город, а не всем менеджерам.
$modx->setOption('ms2_email_manager', $new_email);Такой вариант не срабатывает.modx.pro/help/2658/ — а вариант настоящей смены системных настроек тоже не вариант, т.к. нужно подменять только для конкретного пользователя, а не для всех.
Как подсунуть минишопу нужную системную настройку «на лету» не меняя её оригинал?
UPD:
Решение плагином:
case 'msOnChangeOrderStatus':
// $city_email = тут получаем нужный нам емайл в зависимости от условия
$modx->setOption('ms2_email_manager', $city_email);
break; Комментарии: 5
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
forums.modx.com/thread/72525/setoption-in-plugin-placeholder-not-working
Правда старая темка, может новое что появилось — не знаю.
Ну и все это нужно в плагине делать, где-то пораньше…
Тестировал код из консоли. При повторном выполнении — результат тотже.
Из чего следует, что опция проставляется только на время выполнения скрипта.
Логическим путем пошел в код ms2. Нам нужно куда-то вклиниться в процесс отправки писем.
Ближайший эвент перед отправкой писем: msOnChangeOrderStatus
Пишем плагин:
Итог:
Email менеджера подменился и письмо ушло на 'Нужный email'.
Настройка ms2_email_manager осталась неизменной
Системная настройка не затирается физически, а подменяется.
Спасибо!
Всмысле зачем вызывать всегда, когда не нужно, если можно «когда нужно»? =)