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

+16
2.88K
Небольшой хак, для тех случаев когда у пользователя нет аватара, и когда таких пользователей много, что бы список этих самых пользователей не смотрелся так однообразно.
core/user.class.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. }
заменить на это


  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/

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

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

Ребята! Как такое сделать да 2.14.2 модерн ?  

Еще от автора

Автопостинг с канала в Telegram в ленту активности сайта (Первая ветка)
В прошлом посте я демонстрировал схему автопостинга сообщений из ленты активности сайта на канале в Telegram.
Автопостинг из ленты активности сайта на канал в телеграм для первой ветки
Заметил на форуме вопрос про автопостинг в телеграм для второй ветки.
Изменения в компоненте «баннеры»: количество, внешний вид, формат ссылки
Немного изменил компонент баннеры. Вместо одного баннера, теперь выводится два подряд.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.