[DEV] Reputation System / Система репутации

Здесь авторы могут постить бета-версии своих модификаций для phpBB 3.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: [DEV] Reputation System / Система репутации

Сообщение FladeX »

Специально для вас сделал :)

Открыть index.php
Найти

Код: Выделить всё

// Generate birthday list if required ...
Добавить, перед

Код: Выделить всё

// start add-on for reputation mod
// Create most respectable users
$sql = 'SELECT user_id, username, user_colour, user_reputation_total
	FROM ' . USERS_TABLE . '
	WHERE user_reputation_total>0
	ORDER BY user_reputation_total DESC
	LIMIT 5';
$result = $db->sql_query($sql);

$reputation_users = array();

// Loop all users array
while ($row = $db->sql_fetchrow($result))
{
	$index = $row['user_id'];
	$reputation_users[$index] = array('user_reputation_total' => $row['user_reputation_total'], 'username' => $row['username'], 'user_colour' => $row['user_colour'], 'user_id' => $index);
}

// Send to template
foreach($reputation_users as $var)
{
	$template->assign_block_vars('reputation_user', array(
		'USERNAME'		=> get_username_string('full', $var['user_id'], $var['username'], $var['user_colour']),
		'REPUTATION'	=> $var['user_reputation_total'],
	));
}
// end add-on for reputation mod
Теперь нужно это дело вывести в шаблоне. Я сделал только для кастом-стиля, основанного на subsilver2, поэтому у вас код может отличаться.

Открыть styles/subsilver2/template/index_body.tpl
Найти:

Код: Выделить всё

<tr>
	<td class="row1" rowspan="4"><img src="{T_THEME_PATH}/images/stats.gif" alt="{L_STATISTICS}" /></td>
	<td class="row1 nobold" width="100%" valign="middle"><p class="genmed">{TOTAL_POSTS} | {TOTAL_TOPICS} | {TOTAL_USERS} | {NEWEST_USER}</p></td>
</tr>
Добавить, после:

Код: Выделить всё

<tr>
	<td class="row1" width="100%" valign="middle"><p class="genmed">Самые уважаемые пользователи: <!-- BEGIN reputation_user --><!-- IF not reputation_user.S_FIRST_ROW --> | <!-- ENDIF -->{reputation_user.USERNAME} ({reputation_user.REPUTATION})<!-- END reputation_user --></p></td>
</tr>
Сохраните изменения, закройте файлы, обновите кэш шаблонов.

Посмотреть можно тут (на главной в подвале).
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: [DEV] Reputation System / Система репутации

Сообщение romeo_piter »

Супер, Максим, спасибо. Сейчас попробуем прикрутить)

Добавлено спустя 29 минут 16 секунд:
Ругается...вот так:

Parse error: syntax error, unexpected '}' in /home/www/*******/forum/includes/template.php(187) : eval()'d code on line 15
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: [DEV] Reputation System / Система репутации

Сообщение FladeX »

romeo_piter
проверяйте правильность вставленного в шаблон кода. Где-то ошибку допустили.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: [DEV] Reputation System / Система репутации

Сообщение romeo_piter »

Вставляю в index_body по аналогии:

Код: Выделить всё

<!-- IF not S_IS_BOT -->

<h3>Самые уважаемые форумчане:</h3>	
<P><!-- BEGIN reputation_user --><!-- IF not reputation_user.S_FIRST_ROW --> | <!-- ENDIF -->{reputation_user.USERNAME} ({reputation_user.REPUTATION})<!-- END reputation_user --></p>

<!-- ENDIF -->	
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: [DEV] Reputation System / Система репутации

Сообщение FladeX »

Попробуйте убрать

Код: Выделить всё

<!-- IF not S_IS_BOT -->

<!-- ENDIF --> 
и

Код: Выделить всё

<!-- IF not reputation_user.S_FIRST_ROW --> | <!-- ENDIF -->
может что-нибудь поможет.

Код рабочий, так как я сам проверил - всё ок. Ищите ошибку у себя.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: [DEV] Reputation System / Система репутации

Сообщение romeo_piter »

Спасибо. Убрал все IFы - заработало. Чем они виноваты?
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: [DEV] Reputation System / Система репутации

Сообщение FladeX »

Наверно вложенность какая-нибудь нарушена. Второе условие можете вернуть.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: [DEV] Reputation System / Система репутации

Сообщение romeo_piter »

А можно ли исключить юзера (например, модера и админа) из отображения в рейтинге?
Аватара пользователя
FladeX
Former team member
Сообщения: 1935
Стаж: 19 лет 3 месяца
Откуда: Саранск
Благодарил (а): 7 раз
Поблагодарили: 59 раз

Re: [DEV] Reputation System / Система репутации

Сообщение FladeX »

php-код у вас на виду, там кода всего ничего. Добавьте туда условия и дело с концом. Проверять можно по iser_id, если количество юзеров ограничено, или же по идентификатору группы, если надо исключить всех админов и модераторов.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: [DEV] Reputation System / Система репутации

Сообщение romeo_piter »

Спасибо, допер. Всего то надо поменять:

Код: Выделить всё

WHERE user_reputation_total>0
на

Код: Выделить всё

WHERE (user_reputation_total>0 && user_id!=1)
и тогда юзверь с номером 1 не примет участия в рейтинге...
Аватара пользователя
boloto
phpBB 1.4.4
Сообщения: 126
Стаж: 16 лет 11 месяцев
Благодарил (а): 57 раз
Поблагодарили: 10 раз

Re: [DEV] Reputation System / Система репутации

Сообщение boloto »

FladeX писал(а):      'REPUTATION'   => $var['user_reputation_total'],
спасибо большое!
Предлагаю в вашей доработке к моду в index.php эту строку заменить на

Код: Выделить всё

      'REPUTATION'   => '<a href=' . $phpbb_root_path . 'reputation.php?u=' . $var['user_id'] . '>' . $var['user_reputation_total'] . '</a>',
тогда в списке "уважаемых" будет не просто репа, а и ссылка на статистику по репе у каждого юзера.


ЗЫ: эх... вот бы еще гуру соединили предупреждения и репутацию http://www.phpbbguru.net/community/post ... ml#p262612
Connie
phpBB 1.0.0
Сообщения: 1
Стаж: 16 лет 10 месяцев
Откуда: Ульяновск

Re: [DEV] Reputation System / Система репутации

Сообщение Connie »

Есть небольшой глючек у данного мода. Если репутацию прибавят пользователю в скрытой (служебной) теме, то ее наименование станет видным всем. Если название темы нейтральное, то еще ничего, а если модеры обсуждают какого то юзера скверными словами?.. А удалить это или исправить возможности нет. Только копаться в базе.

Необходимо добавить возможность удаления репутаций. Т.е. что бы админ и(или) модер видел чекбоксы напротив списка репутаций и кнопку удалить отмеченное.

Написать конечно проще, сделать сложнее, хотя эти пожелания уже высказывались :)))))
Connie
phpBB 1.0.0
Сообщения: 1
Стаж: 16 лет 10 месяцев
Откуда: Ульяновск

Re: [DEV] Reputation System / Система репутации

Сообщение Connie »

И вот еще пожелание.
В viewtopic_body.html нужно добавлять не только

Код: Выделить всё

<!-- IF postrow.POSTER_REPUTATION --><dd><strong>{L_REPUTATION}:</strong> {postrow.POSTER_REPUTATION}</dd><!-- ENDIF -->
А делать скорее так:

Код: Выделить всё

<!-- IF postrow.POSTER_REPUTATION and not S_IS_BOT --><dd><strong>{L_REPUTATION}:</strong> {postrow.POSTER_REPUTATION}</dd><!-- ENDIF -->
Это не даст ботам увидеть не нужную им ссылку.
posemon1
phpBB 1.0.0
Сообщения: 0
Стаж: 16 лет 10 месяцев

Re: [DEV] Reputation System / Система репутации

Сообщение posemon1 »

Добрый день.
У меня при добавлении репутации (например +1) она не добавляется или уменьшается.
И при просмотре добавленной репутации в колонке "Изменение репутации" пусто.
В чем может быть проблема? Спасибо.
Аватара пользователя
Fray98rus
Former team member
Сообщения: 442
Стаж: 18 лет 11 месяцев
Откуда: Санкт-Петербург
Благодарил (а): 3 раза
Поблагодарили: 2 раза

Re: [DEV] Reputation System / Система репутации

Сообщение Fray98rus »

Вероятно у вас не хватает постов, чтобы повлиять. или другие условия не выполняются.

Вернуться в «Бета-версии модов для phpBB 3.0.x»