Как вывести аву другого размера, если у пользователя нет какого-то из вариантов превью?

InstantCMS 2.X
#1 10 июня 2022 в 12:17

Подскажите, как в шаблон вывести аватарку пользователя с условием, например:

если у него нет превью 'big', то выводить 'normal', а если есть, то big.

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

Варианты с перезагрузкой всех аватарок или растягиванием img не рассматриваются ))

#2 10 июня 2022 в 13:10

 LagordenSudak, в каком месте шаблона?

если аватарка выводится с помощью функции html_avatar_image_src() то там первым параметром содержится массив доступных авок $avatars, а вторым — пресет.

Проверяйте до использования этой функции примерно так

  1. $preset = "big";
  2. if(empty($avatars['big'])){
  3. $preset = "normal";
  4. }
  5.  
#3 10 июня 2022 в 14:44

в каком месте шаблона?

Zau4man

Немного не до конца расписал. Суть какая: в профиле юзера выводится маленькая аватарка 'small'. И нужно, чтобы при нажатии в модальном открывалась большая (в моем случае решил поставить 'original'). А если нет original, то 'normal'. Вот такой у меня сейчас код.

  1. <?php
  2. $preset = "original";
  3. if(empty($avatars['original'])){
  4. $preset = "normal";
  5. } ?>
  6. <div id="newavatar">
  7. <a class="ajax-modal" href="<?php echo html_avatar_image_src($profile['avatar'],$preset,true); ?>">
  8. <img src="<?php echo html_avatar_image_src($profile['avatar'],'small',true); ?>">
  9. </a>
  10. </div>

Вместо original пробовал и другие варианты (big, например). И все равно у всех открывается 'normal' почему-то. Хотя original  у новых юзерей есть.

Кажется, я решил проблему )))

Вот таким кодом проверял:

  1. $str = $profile['avatar'];
  2. if (false == stripos($str, "original") ) {
  3. $preset = "normal";
  4. } else {
  5. $preset = "original";
  6. }
Добавлено спустя 3 минуты

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

#4 10 июня 2022 в 20:11

 LagordenSudak, видимо в  $avatars не массив, а строка из базы.

  1. $avatars = cmsModel::yamlToArray($avatars);

должно решить проблему. И будет работать проверка через empty

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