Вывод дополнительной информации в списке заказов в бэкенде

Приветствую!

Кто подскажет, как плагином вывести дополнительную инфу в списке заказов, как на картинке:

Насколько я понимаю, это плагин "Интеграция с СДЭК".

Стандартных способов, как я понимаю нет. Хуки есть в сайдбаре и для заказа, ну или я не нашел...

Пока вижу только варианты подмены шаблона wa-apps/shop/templates/actions/orders/Orders.html или js-скрипта, который отвечает за список wa-apps/shop/js/order/list.js, но может кто подскажет менее варварский способ?

Следить за DOM-деревом и парсить его, чтобы по каждому заказу подгрузить и показать инфу - как-то тоже очень через одно место...

4 ответа

  • 1
    Павел Трофимов 5 декабря 2017 01:53 #

    Насколько я понимаю, это плагин "Интеграция с СДЭК".

    Нет, это другой плагин.

    • +1
      J. B. diGriz J. B. diGriz Сегодня 07:26 #

      Скриншот от Интеграции :-) Но там с ole все одинаково в этом плане

  • 1
    Евгений Леман 5 декабря 2017 02:13 #
    Следить за DOM-деревом как-то тоже очень через одно место...

    Вполне нормально. Ничего плохого в этом нет. Вы же используете onClick-события. Технически суть та же.

    • +1
      anton.alekhin@gmail.com anton.alekhin@gmail.com 5 декабря 2017 11:18 #

      Не совсем. Реакция на события и постоянный контроль DOM - очень сильно разные вещи. Подписаться на событие я был бы совсем не против, знать бы только на что подписываться...

  • 1
    info@ravencode.ru 6 декабря 2017 00:51 #

    все достаточно просто, событие backend_orders, ecли $('#s-orders-views .selected').data('view') == 'split', то выводим свою инфу в заказы $('#order-list .order'), id заказа получаем из data-order-id="xx"

    • +1
      anton.alekhin@gmail.com anton.alekhin@gmail.com Вчера 23:29 #

      Проблема в том, что событие backend_orders возникает только при первой загрузке страницы заказов, а при дальнейшей навигации по разным статусам заказов его нет.

      В результате сделал через мониторинг изменений DOM-дерева:

      $("#s-content").on("DOMSubtreeModified", "#order-list", function(e) {
          if(already_called) {
              clearTimeout(already_called);
          }
          if(!block_event) {
              already_called = setTimeout(fn, 300);
          }
      });

      setTimeout используется, т. к. в процессе загрузки списка заказов DOM-дерево меняется несколько раз. block_event нужен для исключения срабатывания метода после собственных действий, т. к. они модифицируют тот-же DOM.

  • 1
    info@ravencode.ru Сегодня 00:19 #

    ну так забинди события через $(document).on('событие', 'класс', ..)

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите