Добавляем колонки в таблицу со списком пользователей в панели управления MODX Revolution

В разделе "Безопасность" -> "Управление пользователями" в админке MODX Revolution выводится список всех пользователей на сайте, как администраторов, так и просто зарегистрированных.

Список пользователей

В "голой" установке выводятся следующие поля:
1. ID
2. Имя (username)
3. Полное имя (fullname)
4. Электронная почта (email)
5. Активный
6. Заблокирован

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

Попробуем исправить.

В качестве примера мы сейчас добавим в эту таблицу колонку "Сайт".

Надо отметить, что производимые действия затрагивают системные файлы MODX, поэтому в случае обновления на новую версию, вам придется проделать эти действия снова.

Итак, подсоединяемся через любимый редактор по ftp к нашему сайту и вносим изменения в 2 файла:

modx.grid.user.js

Полный путь: /manager/assets/modext/widgets/security/modx.grid.user.js

Необходимо внести изменения в 2-х местах:

1. Примерно 41 строка, ищем массив

,fields: ['id','username','fullname','email','gender','blocked','role','active','cls']

и добавляем к списку после email еще и website.

2. Немного ниже ищем кусок кода

{
  header: _('email')
  ,dataIndex: 'email'
  ,width: 180
  ,sortable: true
  ,editor: { xtype: 'textfield' }
 },

И добавляем после нее следующий код:

{
 header: 'Сайт'
 ,dataIndex: 'website'
 ,width: 180
 ,sortable: true
 ,editor: { xtype: 'textfield' }
 },

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

getlist.class.php

Что ж, заполним нашу колонку данными.

Откроем файл /core/model/modx/processors/security/user/getlist.class.php и найдем в нем функцию prepareQueryAfterCount.

Эта функция указывает в запросе к базе данных, какие колонки выбирать. Первый select - для modUser, по умолчанию выбираются все колонки, а второй select для modUserProfile, вот  туда надо и внести изменения, добавив в выборку еще и website:

$c->select($this->modx->getSelectColumns('modUserProfile','Profile','',array('fullname','email','website','blocked')));

Результат

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

Список пользователей с колонкой website

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