Комментарии - отображение доп. полей вместо/вместе с ником

#1 14 октября 2025 в 06:51

Задача — кастомизировать шапку комментария, добавив туда другие поля из профиля пользователя. В моем случае — фамилию и имя.

Я сделал в лоб:

В профиле пользователя создал поля firstname, surname;

В /system/controllers/comments/model.php в функциях getComment($id) и  getComments($actions = false) добавил в $item['user'] поля

  1. $item['user'] = [
  2. 'id' => $item['user_id'],
  3. 'slug' => $item['user_slug'],
  4. 'nickname' => $item['user_nickname'],
  5. 'is_online' => $item['is_online'],
  6. 'avatar' => $item['user_avatar'],
  7. 'is_deleted' => empty($item['user_date_log']) || $item['user_is_deleted'],
  8. 'surname' => $this->getField('cms_users', $item['user_id'], 'surname'),
  9. 'firstname' => $this->getField('cms_users', $item['user_id'], 'firstname')
  10. ];

Потом в /templates/modern/controllers/comments/comment.tpl.php поменял шаблон вывода заголовка коммента

  1. <a href="<?php echo $author_url; ?>" class="user <?php if($entry['user_id'] && $target_user_id == $entry['user_id']){?>btn btn-success btn-sm border-0<?php } ?>">
  2. <?php echo $entry['user']['nickname'].' ('.$entry['user']['surname'].' '.$entry['user']['firstname'].')'; ?></a>

Ну и получаем

Изображение

Вроде бы то, что нужно.

Вопрос: есть ли более корректный способ это реализовать? Может без настолько жесткой привязки к именам полей и с возможностью не вносить правки после каждого обновления instantcms?

#2 14 октября 2025 в 09:47

Есть такой хук «comments_list_filter» — github.com/instantsoft/icms2/blob/master/system/controllers/comments/frontend.php#L59

В нем вы можете добавить получение дополнительных данных в комментариях. Например

  1. $model->select('u.firstname', 'user_firstname');
  2. $model->select('u.surname', 'user_surname');

И потом в шаблоне они будут доступны в массиве как 

  1. $entry['user_firstname']
  2. $entry['user_surname']
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.

Похожее в блогах

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.