Случайный аватар для пользователей без главного фото 1.X

2263
Небольшой хак, для тех случаев когда у пользователя нет аватара, и когда таких пользователей много, что бы список этих самых пользователей не смотрелся так однообразно.
core/user.class.php



Код PHP:
  1. // пользователь без аватара
  2. if (!$file_name || !file_exists(PATH.'/images/users/avatars/'.$file_name)){
  3.  
  4. if ($size == 'small'){
  5. return '/images/users/avatars/small/nopic.jpg';
  6. } else {
  7. return '/images/users/avatars/nopic.jpg';
  8. }
  9.  
  10. }
заменить на это


Код PHP:
  1. // пользователь без аватара
  2. if (!$file_name || !file_exists(PATH.'/images/users/avatars/'.$file_name)){
  3.  
  4. if ($size == 'small'){
  5. return '/templates/_default_/nopic/'.mt_rand(1,5).'.png';
  6.  
  7. } else {
  8. return '/templates/_default_/nopic/'.mt_rand(1,5).'.png';
  9. }
  10.  
  11. }

Теперь если у пользователя нет аватара, система ищет не один и тот же файл nopic а случайным образом выбирает из набора заглушек.
В моём случае их пять штук, они носят имена: 1.png, 2.png, 3.png и т. д. и находятся в папке /templates/_default_/nopic/

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

Особенность данного метода в том, что у одного и того же пользователя аватар будет разным каждый раз при обновлении страницы (пока он не установит свой) меня это устраивает.
Показываем пользователю во время регистрации адрес его будущей страницы | Выбор тегов из набора при создании поста в блоге
Комментарии (8)
Кирилл Эдуардович (Странник) 24 февраля 2016 в 17:12 0
Отлично! Давно просилось.
Олег Васильевич я 24 февраля 2016 в 22:19 0
Вроде б не затрагивая системные файлы можно соорудить (в шаблоне).
Покопаюсь щас...
Нил™ 24 февраля 2016 в 22:54 0
Можно и в шаблоне, но плюс этого варианта в том, что будет действовать сразу во всех местах где аватар, а если через шаблон, то их много где аватар может выводиться. К тому же изменение в файле минимальное..
Олег Васильевич я 24 февраля 2016 в 23:05 0
Нил:
К тому же изменение в файле минимальное..
Так и необходимость в хаке не ахти большая:) (ни в коем случае не говорю, что он никому не нужен).
Нил™ 24 февраля 2016 в 23:19 0
Если бы вы это сказали , вы бы согрешили против истины)) . Я же пользуясь, уже кому то нужен)
Олег Васильевич я 24 февраля 2016 в 22:57 +1
Всё что написано ниже, писалось любителем. Работоспособность проверял на 1.10.6. Если что, профи, надеюсь, поправят.
Код PHP:
  1.  
  2. {if $usr.avatar != '/images/users/avatars/nopic.jpg'}{*это дефолтный аватар в 1.10.6 (у вас может быть другая картинка)*}
  3. <img alt="{$usr.nickname|escape:'html'}" class="usr_img" src="{$usr.avatar}" />
  4. {else}
  5. {math assign="a" equation=rand(1,5)}
  6. {if $a == 1 }{*1,2,3,4,5 - наши картинки для нерадивых пользователей без аватаров*}
  7. 1
  8. {elseif $a == 2}
  9. 2
  10. {elseif $a == 3}
  11. 3
  12. {elseif $a == 4}
  13. 4
  14. {else}
  15. 5
  16. {/if}
  17. {/if}
  18.  
Кирилл Эдуардович (Странник) 25 февраля 2016 в 01:18 +1
Позволь совет, дружище. После строчки
Код TPL:
  1. {math assign="a" equation=rand(1,5)}
пишем
<img src="/images/users/avatars/nopic{$a}.jpg" alt="бла-бла" />
а рисункам в папке присваиваем соответственно nopic1.jpg, nopic2.jpg....nopic5.jpg
Не нужно этой елки с elseif )))))
Олег Васильевич я 25 февраля 2016 в 23:58 0
Таки да, так в разы красивше будет. Спасибо!
Нил, вам отдельное!