Не работает несколько плагинов на событие msOnBeforeChangeInCart в minishop2

Сделал простой плагин для теста (на контроль кол-ва товара):

<?php
$minimal = 5;
switch ($modx->event->name) {
    case 'msOnBeforeChangeInCart':
        if ($minimal > 1) {
            if (intval($scriptProperties['count']) < $minimal) {
                $values = &$modx->event->returnedValues;
                $values['count'] = $minimal;
        }
        break;
}
Но он то срабатывал, то не работал. Несколько часов бился, потом решил посмотреть есть-ли другие плагины на это событие, оказалось на
msOnBeforeChangeInCart
висит еще плагин msProductRemains. Если его отключить, то мой плагин начинает работать всегда как ожидается. Если вернуть msProductRemains, то мой плагин работает рандомно (один раз из 10 сохранений плагина в админке).
Подумал, что может в msProductRemains какая-то проблема в коде. Закомментировал весь код плагина, но ситуация остается прежняя:
плагин msProductRemains включен — мой плагин не работает.
плагин msProductRemains ВЫключен — мой плагин стабильно работает.

Пробовал ставить разные приоритеты на событие msOnBeforeChangeInCart ( 0 своему плагину и 10 msProductRemains) — нет результата.

Для теста сделал тестовый плагин без кода вообще. Если его включаю, то мой основной плагин опять начинает дурить.

Что происходит и/или что я делаю не так?

ПС.
m4
m4
17 февраля 2023, 18:48
modx.pro
303
0

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

Тодор
20 февраля 2023, 22:16
0
Пробуй так:
<?php
$minimal = 5;
switch ($modx->event->name) {
    case 'msOnBeforeChangeInCart':
        $count = &$modx->event->params['count'];
        if ($minimal > 1 && $count < $minimal) {
            $count = $minimal;
        }
        $modx->event->returnedValues['count'] = $count;
        break;
}
    Тодор
    20 февраля 2023, 22:25
    0
    Если не поможет, то подключи свой сервис cart по етой инструкции, и измени там add() или если тебе надо именно при изменни количества, то меняй change()
      m4
      m4
      20 февраля 2023, 23:34
      0
      Пробовал. Результат такой же. В итоге просто всё в один файл поместил.

      Может еще modx устарел, год не обновлялся.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3