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

Возникла необходимость добавления нового поля в таблицу заказов.
В документации не нашёл ничего по этому вопросу. Также как и в поиске ничего дельного.
В документации сказано, что есть 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, 11:00
2
820
0

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

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

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

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

Плюс не уверен, что прокатит как указано в расширении админки, поэтому может потребоваться альтернативный вариант. Если нужно будет, то потом могу подсказать как.
    Николай
    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'
                    }
                }
            }
        }
    };

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