[ИЩУ РЕШЕНИЕ] Как вывести дополнительные поля в админке?

ЕСТЬ РЕШЕНИЕ InstantCMS 2.X

Создаем дополнительные поля в профиле пользователей при заполнении анкеты на сайте. Как вывести эти поля в единую таблицу в админке?

#1 28 августа 2022 в 19:48

В настройках профилей пользователей можно создать дополнительные поля, например: телефон, название организации, ФИО и прочие комбинации.


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


Например: если пользователь регистрируется и мы просим указать его номер телефона, то можно настроить — показывать номер телефона только админу, или группе пользователей рангом пониже. 


Но вот со стороны админки не понятно, как выводить эти поля в списке?


При переходе в закладку пользователи (instant 2.15.2) у нас есть таблица с сортировкой: Никнейм, email, последний ip, регистрация, репутация, рейтинг, блок, удален и действия. 


Можно ли изменить выводимые блоки и на основе созданных дополнительных полей выводить такие колонки как: никнейм, email, дата последнего входа, телефон. организация и действия?


Никак не могу найти в настройках как оптимизировать эти таблицы. Прошу помощи. 

#3 30 августа 2022 в 17:15

Большое спасибо за ориентиры Loadырь, где и что нужно править. Все получилось!


Возможно кому-то в будущем такое решение также потребуется.

Мои действия были следующие:


Редактируем (и/или) добавляем новые поля, которые необходимо выводить

В моем случае это были пользователи при регистрации и заполнении анкеты. 

Соответственно сначала создаем дополнительные поля для пользователей в админке сайта: «Пользователи» — «Настройки». Создали дополнительные поля, присвоили им имена на латинице.


Далее нам необходимо, чтобы в разделе «Пользователи» выводились заданные выше поля. Для этого: 

Переходим на хостинг по адресу: /system/controllers/admin/grids и находим там файл grid_users.php

Внутри него редактируем и добавляем блоки типа: 

  1. 'phone' => array(
  2. 'title' => LANG_PHONE,
  3. 'class' => 'd-none d-xxl-table-cell',
  4. 'width' => 80,
  5. 'filter' => 'exact',
  6. 'handler' => function($value){
  7. return '<span class="'. html_signed_class($value).'">'.html_signed_num($value).'</span>';
  8. }
  9. ),


Где 'phone' — системное имя нового дополнительного поля, а 'title' => LANG_PHONE, как будет подписано поле в заголовке.

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


Далее нам нужно указать те самые заголовки 'title' => LANG_PHONE, чтобы в таблице они читались красиво и понятно.

Для этого идем снова на хостинг по адресу: /system/languages/ru и находим файл language.php.

В этом файле прописываем (визуально будет понятно где) 

  1. define('LANG_KARMA', 'Телефон');

И ваши заголовки будут в таблице в админке показываться правильно. 


Большое спасибо Loadырь за ориентиры! У меня все получилось. ЗЫ: программирование не знаю, но код настолько просто читается, что даже я справился. Всем удачи. 

Добавлено спустя 3 часа

Есть еще вопрос, сориентируте пожалуйста. Какая функция вызывает определение даты последней активности пользователя на сайте?

#5 13 сентября 2022 в 21:56

Сергей Сергеевич  БОЛЬШОЕ спасибо! все работает идеально! Потрясающее решение вопроса! 

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.