Аватары в оповещениях

ЕСТЬ РЕШЕНИЕ InstantCMS 2.X
#1 1 сентября 2025 в 22:23

Если кому надо. Так себе модификация но рабочая. Методом regex. 

В вашем шаблоне, или в модерн templates/controllers/messages/notices.tpl.php

После:

  1. <?php $this->addTplJSNameFromContext('messages'); ?>

Добавим:

  1. <?php $usersModel = cmsCore::getModel('users'); ?>

Ни и сам вывод аватара, куда вам угодно, например перед <?php echo $notice['content']; ?>:

  1. <?php
  2. $pfl = false;
  3. $avatar_html = '';
  4. $display_name = '';
  5.  
  6. if (preg_match('/<a[^>]*href=["\'](?:https?:\/\/[^\/]+)?\/users\/(\d+)["\'][^>]*>/i', $notice['content'], $matches)) {
  7. $uid = $matches[1];
  8. if (!empty($uid)) {
  9. $pfl = $usersModel->getUser($uid);
  10. if (!empty($pfl)) {
  11. $display_name = $pfl['nickname'];
  12. $avatar_html = !empty($pfl['avatar'])
  13. ? html_avatar_image($pfl['avatar'], 'small', $display_name, true)
  14. : html_avatar_image_empty($display_name, 'avatar__small');
  15. }
  16. }
  17. }
  18.  
  19. if (empty($avatar_html) && preg_match('/<a[^>]*href=["\'][^"\']*["\'][^>]*>(.*?)<\/a>/i', $notice['content'], $guest_match)) {
  20. $display_name = $guest_match[1];
  21. if (!empty($display_name)) {
  22. $avatar_html = html_avatar_image_empty($display_name, 'avatar__small');
  23. }
  24. }
  25.  
  26. if (!empty($avatar_html)) { ?>
  27.  
  28. <div class="icms-user-avatar d-flex align-items-center w-34 mt-1">
  29. <?php echo $avatar_html; ?>
  30. </div>
  31.  
  32. <?php } ?>

Визуальный пример.

Изображение

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

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

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