Добавляем колонки в таблицу со списком пользователей в панели управления MODX Revolution
- 26.10.2012
- MODx, Инструкции, Трюки, Социальная сеть
В разделе "Безопасность" -> "Управление пользователями" в админке 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')));
Результат
Сохраняем наши изменения, обновляем страницу со списком пользователей в браузере, и наблюдаем результат:
Таким образом вы можете добавить любое поле в список, что, несомненно, сделает работу с сайтом более удобной.