Jump to content

Avatar Decorations // Украшения аватарок

Featured Replies

Posted

Приветствую обитателей и посетителей IPBMafia!
Перед началом сообщу, что, оформляя эту тему, я принял окончательное решение никогда не переезжать на пятую версию ввиду абсолютной неудобности и утери разработчиками одного из наилучших качеств, а именно - интуитивно понятный интерфейс.


Итак-с, приступим.

Нижеописанные улучшения предназначены для тех, кто хочет каким-либо образом придать индивидуальности своим пользователям, однако, стоит предупредить, что чрезмерное использование может превратить ваш форум в "ёлку", мигающая совершенно разными цветами, и каждая лампочка мигает разным темпом, что может вызвать астенопию (шутка).

Что вообще представляет из себя украшение аватарки:

bandicam-2025-03-25-08-05-18-799.gif

Мы рассмотрим три вариации вывода украшений:

  1. По ID пользователя;

  2. По ID группы;

  3. По дополнительному полю профиля.

Начнём по порядку.

ID пользователя

Переходим по следующему пути: АЦ -> Темы -> Редактировать HTML и CSS -> userPhoto/ProfileHeader.

В userPhoto и ProfileHeader, в контейнере с аватаркой, нужно применить следующий код:

{{if $member->member_id == ID}}

<img src="/uploads/images/image.png" alt="CharonSix" loading="lazy" style="position: absolute; left: 40%; z-index: 1; width: 75%; height: 60%; top: 55%; pointer-events: none;">

{{endif}}

Для новичков - разбираем:

{{if $member->member_id == ID}} - условие со значением, при соответствии которому выводится код на следующей строке.

ID - ID пользователя, например - 2.

<img src="/uploads/images/image.png" alt="CharonSix" loading="lazy" style="position: absolute; left: 40%; z-index: 1; width: 75%; height: 60%; top: 55%; pointer-events: none;">

Оранжевый - путь до файла, выводящийся при соответствии вышеупомянутому условию со значением.
Жёлтый - описание выводимого файла.
Зелёный - позволяет использовать "ленивую" загрузку, рекомендуется использовать, если рассчитываете на многочисленный вывод украшений.
Синий - стиль выводимого файла. Настроить можете по своему вкусу. Для достижения желанного эффекта, используйте pointer-events.

ID группы

Переходим по следующему пути: АЦ -> Темы -> Редактировать HTML и CSS -> userPhoto/ProfileHeader.

В userPhoto и ProfileHeader, в контейнере с аватаркой, нужно применить следующий код:

{{if $member->member_group_id == ID}}

<img src="/uploads/images/image.png" alt="CharonSix" loading="lazy" style="position: absolute; left: 40%; z-index: 1; width: 75%; height: 60%; top: 55%; pointer-events: none;">

{{endif}}

Краткий разбор:

{{if $member->member_group_id == ID}} - на этот раз, указывается ID группы.

Дополнительные поля профиля

Данный пункт состоит из нескольких этапов. Разбираем.

Первый этап: Переходим в АЦ -> Пользователи -> Профили -> Добавить поле профиля.
В "Тип поля" важно выбрать либо Набор чекбоксов (не рекомендую), либо Радиокнопку, так как код "заточен" конкретно под них.
Далее, в "Опции", добавляем одну, две или более пунктов, именуя их как душе угодно. Обязательно указываем пункты "Показывать всем", иначе украшения выводиться не будут.

Сделали. Сохранили. Отлично. Двигаемся далее.
Второй этап: Переходим по следующему пути: АЦ -> Темы -> Редактировать HTML и CSS -> userPhoto/ProfileHeader.

В userPhoto и ProfileHeader, в контейнере с аватаркой, нужно применить следующий код:

{{$param = \IPS\Member::load( $member->member_id );}}
{{foreach $param->contentProfileFields() as $group => $fields}}
{{foreach $fields as $field => $value}}
{{if $field =='core_pfield_10' }}
{{ $pos = strripos($value, 'Листья осени'); }}
{{if $pos !== false }}
<img src="/uploads/images/image.png" alt="CharonSix" loading="lazy" style="position: absolute; left: 40%; z-index: 1; width: 75%; height: 60%; top: 55%; pointer-events: none;">
{{endif}}
{{endif}}
{{endforeach}}
{{endforeach}}

Краткий разбор:

{$param = \IPS\Member::load( $member->member_id );}}
{{foreach $param->contentProfileFields() as $group => $fields}}
{{foreach $fields as $field => $value}}
{{if $field =='core_pfield_10' }}
{{ $pos = strripos($value, 'Листья осени'); }}
{{if $pos !== false }}
<img src="/uploads/images/image.png" alt="CharonSix" loading="lazy" style="position: absolute; left: 40%; z-index: 1; width: 75%; height: 60%; top: 55%; pointer-events: none;">
{{endif}}
{{endif}}
{{endforeach}}
{{endforeach}}

Индиго - ID дополнительного поля профиля.
Фиолетовый - наименование одной из строк, ранее указанных в "Опции" при создании дополнительного поля.

Если имеется желание, можете оптимизировать/переписать код под себя. Мне без разницы.

Аналогичным методом, вы можете вывести украшения профиля в hoverCard и profile, что используются в том же Discord.
Обратите внимание, что файлы формата GIF, будут отображать чёрный бэкграунд на пустых участках изображения, поэтому наиболее подходящими являются PNG и SVG.


Вот и вся инструкция. Надеюсь, кому-нибудь пригодится. Желаю удачи.

Edited by CharonSix
fix.

Не надо плодить лишние переменные, особенно в шаблонах.

{{$param = \IPS\Member::load( $member->member_id );}}
{{foreach $param->contentProfileFields() as $group => $fields}}

Заменяется на

{{foreach \IPS\Member::load( $member->member_id )->contentProfileFields() as $group => $fields}}

а это

{{ $pos = \strripos($value, 'Листья осени'); }}
{{if $pos !== false }}

на

{{ if \strripos($value, 'Листья осени'); }}

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

Edited by Desti

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.