Суть идеи заключается в создании информера для пользователей с динамической сортировкой.
Самые активные участники по количеству сообщений или рейтингу ,поднимаются на верхние позиции.
Каждому пользователю присваивается ленточка:
Первая, самая верхняя, — красная и яркая;
Вторая — золотая;
Третья — серебряная;
Четвертая — зеленая;
Все остальные — серые, но заметные.
Главное , сортировка по активности или рейтингу, чтобы выдавать награды ленточками.
Ленточки остаются у всех пользователей, даже если они ниже по списку, чтобы сохранялась визуальная консистентность.
Информер
Код
<style>
/* ===== Общий контейнер информера ===== */
.informer-box {
position: relative;
width: auto;
max-width: 98%;
margin: 6px 0;
font-family: Arial, sans-serif;
box-sizing: border-box;
}
/* Ссылка-блок информера */
.informer-box .bb_box-link {
position: relative;
display: flex;
align-items: center;
padding: 8px 14px;
border-radius: 8px;
background: #F1F1F1;
border: 1px solid #DFDFDF;
box-shadow: 2px 2px 6px rgba(0,0,0,0.2);
text-decoration: none;
color: #000;
transition: all 0.2s ease;
overflow: hidden;
}
/* Hover эффект информера */
.informer-box .bb_box-link:hover {
transform: translateY(-3px);
box-shadow: 4px 4px 10px rgba(0,0,0,0.3);
}
/* Эффект нажатия (вдавливание кнопки) */
.informer-box .bb_box-link:active {
transform: translateY(2px);
box-shadow: inset 2px 2px 8px rgba(0,0,0,0.2);
}
/* Аватар */
.informer-box .infsimg {
border-radius: 50%;
margin-right: 10px;
width: 50px;
height: 45px;
box-shadow: 0 0 6px rgba(0,0,0,0.2);
transition: all 0.3s ease;
}
/* Аватар при наведении */
.informer-box .infsimg:hover {
box-shadow: 0 0 12px 3px rgba(133, 59, 151,0.5);
}
/* Текстовая часть */
.informer-box .informer-text {
display: flex;
flex-direction: column;
font-size: 9pt;
overflow: hidden;
}
/* Ник */
.informer-box .username {
font-weight: bold;
margin-bottom: 2px;
color: #333;
}
/* Слово "Автор" под ником */
.informer-box .user-role {
font-size: 7pt;
color: #853b97;
text-transform: uppercase;
letter-spacing: 1px;
margin-bottom: 4px;
}
/* Статистика форума */
.informer-box .forum-stats {
font-size: 7pt;
color: #000;
}
/* Ленточка NEW — базовый стиль */
.informer-box .new-ribbon {
position: absolute;
top: 2px;
right: -6px;
width: 60px;
height: 22px;
color: #fff;
font-size: 8.5pt;
font-weight: bold;
text-align: center;
line-height: 22px;
transform: rotate(45deg);
box-shadow: 2px 2px 6px rgba(0,0,0,0.3);
z-index: 10;
pointer-events: none;
border-bottom-left-radius: 4px;
text-shadow: 1px 1px 2px rgba(0,0,0,0.4);
}
/* Цвет ленточки по порядку */
.informer-box .bb_box-link:nth-of-type(1) .new-ribbon { background: #d52b1e; } /* красная */
.informer-box .bb_box-link:nth-of-type(2) .new-ribbon { background: #FFD700; color: #000; } /* золотая */
.informer-box .bb_box-link:nth-of-type(3) .new-ribbon { background: #C0C0C0; color: #000; } /* серебряная */
.informer-box .bb_box-link:nth-of-type(4) .new-ribbon { background: #28a745; } /* зеленая */
.informer-box .bb_box-link:nth-of-type(n+5) .new-ribbon { background: #888888; } /* все остальные серые */
/* Появление ленточки только для новых сообщений */
.informer-box[data-new="true"] .new-ribbon {
display: block;
}
</style>
<div class="informer-box" data-new="$IS_NEW$">
<a href="$PROFILE_URL$" class="bb_box-link">
<!-- Ленточка NEW -->
<span class="new-ribbon">NEW</span>
<!-- Аватар -->
<img class="infsimg" src="$AVATAR_URL$" alt="$USERNAME$">
<!-- Текст -->
<div class="informer-text">
<span class="username">$USERNAME$</span>
<span class="user-role">Автор</span>
<span class="forum-stats">Сообщений на форуме: <span class="positiv">$FORUM_POSTS$</span></span>
</div>
</a>
</div>
Скрипт......
Код
<script>
document.addEventListener("DOMContentLoaded", () => {
const informers = document.querySelectorAll(".informer-box .bb_box-link");
const colors = ["#d52b1e", "#FFD700", "#C0C0C0", "#28a745"]; // первые 4 цвета
informers.forEach((inf, index) => {
const ribbon = inf.querySelector(".new-ribbon");
if (!ribbon) return;
if (index < colors.length) {
ribbon.style.backgroundColor = colors[index];
ribbon.style.color = (index === 1 || index === 2) ? "#000" : "#fff"; // текст на золотой и серебряной черный
} else {
ribbon.style.backgroundColor = "#888"; // остальные серые
ribbon.style.color = "#fff";
}
});
});
</script>
$IMAGE2$
Код
Скрипт необходимо вставлять в конце шаблона главной страницы форума, перед закрывающим тегом </body> .
Это важно, чтобы все эффекты работали корректно. Не стоит помещать скрипт внутрь информера, так как движок форума может его блокировать, и браузер просто не сможет его обработать.