e-planet » 27 июл 2014, 19:16 писал(а):Здравствуйте PPK!
Вы не могли бы нам помочь или подсказать, как сделать на memberlist_view прибавление репутации + и -?
Как можно реализовать и на страничке темы и в профиле так? Подскажите если знаете?
Да, можно, можно ...
Открыть: functions_reputation.php
Найти:
Код: Выделить всё
global $auth, $phpbb_root_path, $phpEx, $user;
Заменить на:
Код: Выделить всё
global $auth, $db, $phpbb_root_path, $phpEx, $user;
$sql = 'SELECT SUM(CASE WHEN rep_point > 0 THEN 1 ELSE 0 END) AS positive, SUM(CASE WHEN rep_point < 0 THEN 1 ELSE 0 END) AS negative
FROM ' . REPUTATIONS_TABLE . '
WHERE rep_to = ' . $poster_id;
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
Найти:
Код: Выделить всё
'REPUTATION_BLOCK' => $this->get_images($poster_id),
После вставить:
Код: Выделить всё
'REPUTATION_POS' => isset($row['positive']) ? $row['positive'] : 0,
'REPUTATION_NEG' => isset($row['negative']) ? $row['negative'] : 0,
Открыть: styles/subsilver2/template/viewtopic_body.html
Найти:
Код: Выделить всё
<!-- IF S_REPUTATION and postrow.S_USER_REPUTATION -->
<!-- IF S_REP_DISPLAY neq 'block' --><br /><strong>{L_RP_TOTAL_POINTS}:</strong> {postrow.REPUTATION_TEXT}<!-- ENDIF -->
<!-- IF S_REP_DISPLAY neq 'text' --><br /><!-- IF postrow.U_VIEW_REP --><a href="{postrow.U_VIEW_REP}" onclick="popup(this.href, 780, 550); return false;" ><!-- ENDIF -->{postrow.REPUTATION_BLOCK}<!-- IF postrow.U_VIEW_REP --></a><!-- ENDIF --><!-- ENDIF -->
<!-- IF postrow.S_GIVE_REPUTATION --><br /><a href="{postrow.U_ADD_POS}"><img src="{T_IMAGES_PATH}reputation/add.png" title="{L_RP_ADD_POINTS} {postrow.POST_AUTHOR}" alt="{L_RP_ADD_POINTS} {postrow.POST_AUTHOR}" /></a><!-- IF postrow.S_GIVE_NEGATIVE--><a href="{postrow.U_ADD_NEG}"><img src="{T_IMAGES_PATH}reputation/subtract.png" title="{L_RP_SUBTRACT_POINTS} {postrow.POST_AUTHOR}" alt="{L_RP_SUBTRACT_POINTS} {postrow.POST_AUTHOR}" /></a><!-- ENDIF --><!-- ENDIF -->
<!-- ENDIF -->
Заменить на:
Код: Выделить всё
<!-- IF S_REPUTATION and postrow.S_USER_REPUTATION -->
<!-- IF S_REP_DISPLAY neq 'block' --><br /><strong>{L_RP_TOTAL_POINTS}:</strong> {postrow.REPUTATION_TEXT} (+{postrow.REPUTATION_POS} -{postrow.REPUTATION_NEG})<!-- ENDIF -->
<!-- IF S_REP_DISPLAY neq 'text' --><br /><!-- IF postrow.U_VIEW_REP --><a href="{postrow.U_VIEW_REP}" onclick="popup(this.href, 780, 550); return false;" ><!-- ENDIF -->{postrow.REPUTATION_BLOCK}<!-- IF postrow.U_VIEW_REP --></a><!-- ENDIF --><!-- ENDIF -->
<!-- IF postrow.S_GIVE_REPUTATION --><br /><a href="{postrow.U_ADD_POS}"><img src="{T_IMAGES_PATH}reputation/add.png" title="{L_RP_ADD_POINTS} {postrow.POST_AUTHOR}" alt="{L_RP_ADD_POINTS} {postrow.POST_AUTHOR}" /></a><!-- IF postrow.S_GIVE_NEGATIVE--><a href="{postrow.U_ADD_NEG}"><img src="{T_IMAGES_PATH}reputation/subtract.png" title="{L_RP_SUBTRACT_POINTS} {postrow.POST_AUTHOR}" alt="{L_RP_SUBTRACT_POINTS} {postrow.POST_AUTHOR}" /></a><!-- ENDIF --><!-- ENDIF -->
<!-- ENDIF -->
Открыть: styles/subsilver2/template/viewtopic_tracker_body.html
Найти:
Код: Выделить всё
<!-- IF S_REPUTATION and postrow.S_USER_REPUTATION -->
<!-- IF S_REP_DISPLAY neq 'block' --><br /><strong>{L_RP_TOTAL_POINTS}:</strong> {postrow.REPUTATION_TEXT}<!-- ENDIF -->
<!-- IF S_REP_DISPLAY neq 'text' --><br /><!-- IF postrow.U_VIEW_REP --><a href="{postrow.U_VIEW_REP}" onclick="popup(this.href, 780, 550); return false;" ><!-- ENDIF -->{postrow.REPUTATION_BLOCK}<!-- IF postrow.U_VIEW_REP --></a><!-- ENDIF --><!-- ENDIF -->
<!-- IF postrow.S_GIVE_REPUTATION --><br /><a href="{postrow.U_ADD_POS}"><img src="{T_IMAGES_PATH}reputation/add.png" title="{L_RP_ADD_POINTS} {postrow.POST_AUTHOR}" alt="{L_RP_ADD_POINTS} {postrow.POST_AUTHOR}" /></a><!-- IF postrow.S_GIVE_NEGATIVE--><a href="{postrow.U_ADD_NEG}"><img src="{T_IMAGES_PATH}reputation/subtract.png" title="{L_RP_SUBTRACT_POINTS} {postrow.POST_AUTHOR}" alt="{L_RP_SUBTRACT_POINTS} {postrow.POST_AUTHOR}" /></a><!-- ENDIF --><!-- ENDIF -->
<!-- ENDIF -->
Заменить на:
Код: Выделить всё
<!-- IF S_REPUTATION and postrow.S_USER_REPUTATION -->
<!-- IF S_REP_DISPLAY neq 'block' --><br /><strong>{L_RP_TOTAL_POINTS}:</strong> {postrow.REPUTATION_TEXT} (+{postrow.REPUTATION_POS} -{postrow.REPUTATION_NEG})<!-- ENDIF -->
<!-- IF S_REP_DISPLAY neq 'text' --><br /><!-- IF postrow.U_VIEW_REP --><a href="{postrow.U_VIEW_REP}" onclick="popup(this.href, 780, 550); return false;" ><!-- ENDIF -->{postrow.REPUTATION_BLOCK}<!-- IF postrow.U_VIEW_REP --></a><!-- ENDIF --><!-- ENDIF -->
<!-- IF postrow.S_GIVE_REPUTATION --><br /><a href="{postrow.U_ADD_POS}"><img src="{T_IMAGES_PATH}reputation/add.png" title="{L_RP_ADD_POINTS} {postrow.POST_AUTHOR}" alt="{L_RP_ADD_POINTS} {postrow.POST_AUTHOR}" /></a><!-- IF postrow.S_GIVE_NEGATIVE--><a href="{postrow.U_ADD_NEG}"><img src="{T_IMAGES_PATH}reputation/subtract.png" title="{L_RP_SUBTRACT_POINTS} {postrow.POST_AUTHOR}" alt="{L_RP_SUBTRACT_POINTS} {postrow.POST_AUTHOR}" /></a><!-- ENDIF --><!-- ENDIF -->
<!-- ENDIF -->
Открыть: memberlist.php
Найти:
Код: Выделить всё
'U_REMOVE_FOE' => ($foe && $foes_enabled) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&remove=1&mode=foes&usernames[]=' . $user_id) : '',
));
Добавить после:
Код: Выделить всё
$sql = 'SELECT SUM(CASE WHEN rep_point > 0 THEN 1 ELSE 0 END) AS positive, SUM(CASE WHEN rep_point < 0 THEN 1 ELSE 0 END) AS negative
FROM ' . REPUTATIONS_TABLE . '
WHERE rep_to = ' . $user_id;
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
Найти:
Код: Выделить всё
$user->add_lang('mods/reputation_mod');
$template->assign_vars(array(
'S_REPUTATION' => $member['user_hide_reputation'] ? false : true,
'REPUTATION' => $member['user_reputation'],
'REP_POWER' => $reputation->get_rep_power($member['user_posts'], $member['user_regdate'], $member['user_reputation'], $member['group_id']),
Добавить после:
Код: Выделить всё
'U_VIEW_REP' => ($auth->acl_get('u_rp_view_comment') || ($auth->acl_get('m_rp_moderate')) || $poster_id == $member['user_id']) ? append_sid("{$phpbb_root_path}viewreputation.$phpEx", 'id=' . $member['user_id']) : '',
'REPUTATION_POS' => isset($row['positive']) ? $row['positive'] : 0,
'REPUTATION_NEG' => isset($row['negative']) ? $row['negative'] : 0,
Открыть: styles/subsilver2/template/memberlist_view.html
Найти:
Код: Выделить всё
<!-- IF S_REPUTATION -->
<tr>
<td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">{L_RP_TOTAL_POINTS}: </td>
<td><b class="gen">{REPUTATION}</b></td>
</tr>
<tr>
<td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">{L_RP_POWER}: </td>
<td><b class="gen">{REP_POWER}</b></td>
</tr>
<!-- ENDIF -->
Заменить на:
Код: Выделить всё
<!-- IF S_REPUTATION -->
<tr>
<td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">{L_RP_TOTAL_POINTS}: </td>
<td><b class="gen">{REPUTATION}</b> (+{REPUTATION_POS} / -{REPUTATION_NEG})</td>
</tr>
<tr>
<td class="gen" align="{S_CONTENT_FLOW_END}" valign="top" nowrap="nowrap">{L_RP_POWER}: </td>
<td><b class="gen">{REP_POWER}</b></td>
</tr>
<!-- ENDIF -->
Правда запросов прибавляется, но это наверное решаемо. Для стиля prosilver лень писать инструкцию, сами догоните ...