Если на вашем сайте следят за репутацией, и пользователь ее устанавливает, есть тема по уровню, что устанавливать в аналогичном порядке. Сама система будет работает за счёт активности зарегистрированного пользователя на интернет ресурсе. Здесь будет учитывается все, можно сказать каждый шаг, что был произведен на портале. Это количество материалов, что было размещено на ресурсе, также учитываются комментарий и безусловно репутация. Как пример: Вы поставили для репутации множитель "3", если у пользователя репутация "5", то в очки уровня засчитывается "15" (5*3).
Система выводит следующие параметры:
- $scoreSL - текущее кол-во очков пользователя;
- $levelSL - текущий уровень пользователя;
- $thisLvl - кол-во очков у текущего уровня;
- $NextLS - кол-во очков у следующего уровня;
- $scoreNextLvl - требуемое кол-во очков для следующего уровня.
Установка скрипта
Всё что Вам нужно, это добавить данный код на страницу пользователя в конец
body.
ПУ >
Управление дизайном >
Персональная страница пользователя <script>
// Активность
var $SLuser = [// 'количество', 'множитель'
['$_BLOG_ENTRIES$', '1'], ['$_BOARD_ENTRIES$', '1'], ['$_COM_ENTRIES$', '1'],
['$_FORUM_ENTRIES$', '1'], ['$_LOAD_ENTRIES$', '1'], ['$_NEWS_ENTRIES$', '1'],
['$_PHOTO_ENTRIES$', '1'], ['$_PUBL_ENTRIES$', '1'], ['$_STUFF_ENTRIES$', '1'],
['$_SHOP_ENTRIES$', '1'], ['$_VIDEO_ENTRIES$', '1'], ['$_RANK$', '1'], ['$_REPUTATION$', '1']
];
// Уровни
var $SLlevel = [];
for(var i=0; i<=100; i++){$SLlevel[i] = i*5}; // Генерация уровней (100)
/* Или так
$SLlevel = ['5','10','15','20','25','30'];
*/
// **************
function CheckUserScore(arr) {
return arr.map(a => a.reduce((a, c) => a * +c, 1)).reduce((a, c) => a + c, 0);
};
var $scoreSL = CheckUserScore($SLuser);
function CheckUserLevel(arr, toFind) {
if(!arr) return -1;
var first = 0, last = arr.length - 1;
while(first < last) {
var mid = first + Math.floor((last - first) / 2);
if (arr[mid] >= toFind) last = mid; else first = mid + 1;
}
if(arr[last] == toFind || last == 0 || last == arr.length - 1) return last; else return last - 1;
};
var $levelSL = CheckUserLevel($SLlevel, $scoreSL) + 1; // +1 потому что массив начинается с нуля.
var $NextLS = $SLlevel[$levelSL];
var $thisLvl = $SLlevel[$levelSL-1];
var $scoreNextLvl = ($NextLS - $scoreSL);
// **************
console.info('Кол-во очков: '+$scoreSL);
console.info('Уровень: '+$levelSL);
console.info('Кол-во очков у уровня: '+$thisLvl);
console.info('Кол-во очков у след. уровня: '+$NextLS);
console.info('Кол-во очков до след. уровня: '+$scoreNextLvl);
</script>