Как добавить новое поле в таблицу заказов? Новый

Дополнение: miniShop2

Возникла необходимость добавления нового поля в таблицу заказов.
В документации не нашёл ничего по этому вопросу. Также как и в поиске ничего дельного.
В документации сказано, что есть 4 вида служб — cart, order, delivery, payment
А order как я понял отвечает за процесс оформления заказа, а не за таблицу.

Если создать новый столбец в таблице modx_ms2_orders, а потом произвести изменения в файлах:

/assets/components/minishop2/js/mgr/orders/orders.grid.js
/core/components/minishop2/model/minishop2/mysql/msorder.map.inc.php
/core/components/minishop2/model/schema/minishop2.mysql.schema.xml
То всё ок, поле появится. Но ведь при обновлении минишопа изменения потрутся…

А как можно кастомизировать таблицу, чтобы не трогать родные файлы?
29 мая 2017, 14:00    Николай   
1    225 0

Комментарии (11)

  1. Николай 29 мая 2017, 14:04 # 0
    И ещё один вопрос. В полях таблицы заказов выводятся статические данные из БД. А если нужно вывести динамические. Например, посчитать сколько было сделано заказов данным покупателем, или, сколько времени прошло с момента последнего заказа. Как это можно сделать?
    1. Дмитрий Меркурьев 29 мая 2017, 17:14 # 0
      Посмотрите тут
      1. Николай 02 июня 2017, 08:51 # 0
        Этот пост видел, но как я понял там нет способа прикручивания нового поля к таблице заказа…
      2. Волков Николай 29 мая 2017, 22:56 # 0
        Врать не буду, но беглый взгляд на способ Дмитрия мне не особо понравился чем-то.

        Самый простой способ — прочитать документацию к минишопу. Конкретно вот это:
        docs.modx.pro/components/minishop2/development/plug-ins-products

        Единственное, нужно передавать в массиве не«msProductData», а «msOrder».

        Плюс не уверен, что прокатит как указано в расширении админки, поэтому может потребоваться альтернативный вариант. Если нужно будет, то потом могу подсказать как.
        1. Николай 02 июня 2017, 08:57 # 0
          Да, знаю про плагины, но думал не работает для таблицы заказов. Оказалось работает, система видит новое поле. Но в таблице оно не появляется, либо я что-то делаю не так… По аналогии со статьёй делаю примерно так:

          miniShop2.plugin.newfield = {
              getFields: function () {
                  return {
                      newfield: {
                          xtype: 'textfield',
                          /* description: '<b>[[+color]]</b><br />' + _('ms2_product_color_help') */
                      }
                  }
              },
              getColumns: function () {
                  return {
                      newfield: {
                          width: 50,
                          sortable: false,
                          editor: {
                              xtype: 'textfield',
                              name: 'newfield'
                          }
                      }
                  }
              }
          };

          Если нужно будет, то потом могу подсказать как.
          Нужно, до сих пор актуально :)
          1. Stan Ezersky 16 октября 2017, 22:30 # 0
            Николай, решили вопрос?
            У меня в базу данные заливаются, в админку не могу вывести
            1. Николай 16 октября 2017, 22:36 # 0
              К сожалению нет. Пришлось всё сделать путём правки исходников минишопа, как я и описал в самом топике. Вопрос для меня до сих пор актуален. В тот раз весь форум перерыл, много чего перепробовал — не получилось…
              1. Stan Ezersky 16 октября 2017, 22:41 # 0
                Этот топик посмотрите
                1. Николай 17 октября 2017, 01:29 # 0
                  Да, я знаю этот способ, и чуть выше в комментарии тоже работает, но проблема вывести данные в таблицу заказов. Возможно, проблему можно решить таким способом, там где в коде идёт скрипт добавляющий произвольный html-код в форму профиля пользователя. Но мне нужно много времени, чтобы это узнать, extjs не знаю…
        2. Николай 02 июня 2017, 08:59 # 0
          Неужели за столько лет пользования минишопом ни у кого не возникало необходимости в новом поле в таблице?) По крайней мере поиск по сайту ничего толкового не дал…
          1. Станислав 03 октября 2017, 17:00 # +1
            Давно пора добавить в документацию инструкцию по расширению таблицы заказов. Лично мне потребовалось вывести столбец с emails покупателей.
            Вы должны авторизоваться, чтобы оставлять комментарии.