Добавление хука (handlers) в файл /lib/config/plugin.php через настройки плагина

Iron_bone

День добрый!

Можно ли при сохранении настроек плагина изменять его файл /lib/config/plugin.php?

Меня интересует возможность добавления туда создаваемых вручную статусов заказов, которых изначально в магазине нет, то есть добавление элементов в массив

'handlers' => array(
      'order_action.create' => 'sync',
      'order_action.process' => 'sync',
      'order_action.pay' => 'sync',
      'order_action.ship' => 'sync',
      'order_action.complete' => 'sync',
      'order_action.refund' => 'sync',
      'order_action.delete' => 'sync',
      'order_action.restore' => 'sync'
    )

Допускается ли такое правилами, и, если допускается, то, наверное, нужен сброс кеша после этого, а как сделать это автоматически?

21 ноября 2016
  • Алексей 21 ноября 2016 16:29

    Динамически их добавлять нельзя, необходимо сразу сформировать нужный список и далее в обработчике использовать или пропускать их.

  • Iron_bone 21 ноября 2016 16:39

    Как же тогда?

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

    Пользователь, добавляет свои статусы вручную, как ему удобнее работать. Но в плагине они не будут учитываться, из-за чего почти полностью теряется смысл этих статусов!

    В моем случае речь идет о плагине синхронизации с amoCRM, который без возможности динамически изменять список хуков, передает только стандартные статусы.

    Неужели нет решения?

  • Алексей 21 ноября 2016 16:51

    На пользовательские статусы нет хуков в списке https://developers.webasyst.ru/hooks/shop/
    Как вариант можете использовать что-то из backend_order, backend_order_edit

  • Iron_bone 21 ноября 2016 16:58

    Так понимаю, что изменение статуса заказа в админке путем нажатия на соответствующую кнопку, не вызывает ни один из этих хуков?

  • Михаил Ушенин 21 ноября 2016 16:59
    1. Вам нужно обрабатывать действия, а не статусы. Сути проблемы это, конечно, не меняет, но это (существенная) ошибка в терминологии.
    2. Используйте универсальный хук order_action.*, в который в качестве одного из параметров передаётся в том числе и ID выполняемого действия: как стандартного, так и созданного пользователем.
  • Iron_bone 21 ноября 2016 17:09

    Большое спасибо за разъяснение! Думаю, это решает мою проблему.

    Только в документации-то этого универсального хука нет. Может, есть какая-то еще документация, о которой я не знаю?) Потому что в этой далеко не все.

  • Михаил Ушенин 21 ноября 2016 17:13

    В документации описания этого хука пока нет. Как только решим технические проблемы с добавлением его описания, обязательно добавим.

    Пока что попробуйте прицепиться к этому хуку и в обработчике хука посмотрите содержимое переменной с параметрами.

    'handlers' => array (
        'order_action.*' => 'OrderAction',
    ),
    public function OrderAction($params)
    {
        waLog::dump($params);
    }

    Используйте эти данные, как вам нужно.

    Array
    (
      order_id => 1979
      action_id => 'test-action'
      before_state_id => 'new'
      after_state_id => 'new'
      id => 2275
      update => Array
      (
        update_datetime => '2016-11-21 16:56:02'
      )
    )
  • Iron_bone 21 ноября 2016 17:19

    Это я уже попробовал и решил, что различие значений параметров before_state_id и after_state_id как раз будет указывать именно на изменение статуса. Верно мыслю?

  • Михаил Ушенин 21 ноября 2016 17:20

    Выглядит именно так.

  • Iron_bone 21 ноября 2016 17:21

    Огромная Вам благодарность за такую подробную и качественную поддержку!

  • Iron_bone 8 декабря 2016 10:59

    Я правильно понял, что хук order_action.* появился только в 7 версии shop-script?

  • Михаил Ушенин 13 декабря 2016 09:17

    Нет, неправильно: в 6-й версии он уже был.

  • Iron_bone 15 декабря 2016 23:43

    В версии 6.3.0.44568 хук 'order_action.*' точно не работает. Ваша ссылка, к сожалению, открывает 404.

  • Михаил Ушенин 16 декабря 2016 11:47

    По ссылке нужно авторизоваться, чтобы увидеть содержимое. Если у вас нет доступа, получите его тут: http://www.shop-script.ru/platform/download/.

  • Iron_bone 17 декабря 2016 12:50

    С доступом разобрался, спасибо.

    Но в любом случае, я проверял на установленной версии, как написал выше.

Добавление новых комментариев к этой теме отключено.