Рейтинг 4 : оценка по пятибалльной шкале


Это рейтинг от Ingvard (ссылка на оригинал в конце статьи), который был доработан SX2. При помощи этого хака добавится к использованию 4й вид рейтинга в DLE. После правок переключиться на его использование можно будет в админ-панели.




Установка:
1. Открыть engine/modules/functions.php, найти функцию ShowRating и заменить ее на:
function ShowRating($id, $rating, $vote_num, $allow = true) {
	global $lang, $config;

	if( !$config['rating_type'] ) {
		
		if( $rating AND $vote_num ) $rating = round( ($rating / $vote_num), 0 );
		else $rating = 0;
		
		if ($rating < 0 ) $rating = 0;

		$rating = $rating * 20;
	
		if( !$allow ) {
		
			$rated = <<<HTML
<div class="rating">
		<ul class="unit-rating">
		<li class="current-rating" style="width:{$rating}%;">{$rating}</li>
		</ul>
</div>
HTML;
		
			return $rated;
		}
	
		$rated = <<<HTML
<div id='ratig-layer-{$id}'><div class="rating">
		<ul class="unit-rating">
		<li class="current-rating" style="width:{$rating}%;">{$rating}</li>
		<li><a href="#" title="{$lang['useless']}" class="r1-unit" onclick="doRate('1', '{$id}'); return false;">1</a></li>
		<li><a href="#" title="{$lang['poor']}" class="r2-unit" onclick="doRate('2', '{$id}'); return false;">2</a></li>
		<li><a href="#" title="{$lang['fair']}" class="r3-unit" onclick="doRate('3', '{$id}'); return false;">3</a></li>
		<li><a href="#" title="{$lang['good']}" class="r4-unit" onclick="doRate('4', '{$id}'); return false;">4</a></li>
		<li><a href="#" title="{$lang['excellent']}" class="r5-unit" onclick="doRate('5', '{$id}'); return false;">5</a></li>
		</ul>
</div></div>
HTML;
	
		return $rated;

	} elseif ($config['rating_type'] == "1") {
		
		if( $rating < 0 ) $rating = 0;
		
		if( $allow ) $rated = "<span id=\"ratig-layer-{$id}\" class=\"ignore-select\"><span class=\"ratingtypeplus ignore-select\" >{$rating}</span></span>";
		else $rated = "<span class=\"ratingtypeplus ignore-select\" >{$rating}</span>";
		
		return $rated;
	
	} elseif ($config['rating_type'] == "2") {
		
		$extraclass = "ratingzero";
		
		if( $rating < 0 ) {
			$extraclass = "ratingminus";
		}
		
		if( $rating > 0 ) {
			$extraclass = "ratingplus";
			$rating = "+".$rating;
		}
		
		if( $allow ) $rated = "<span id=\"ratig-layer-{$id}\" class=\"ignore-select\"><span class=\"ratingtypeplusminus ignore-select {$extraclass}\" >{$rating}</span></span>";
		else $rated = "<span class=\"ratingtypeplusminus ignore-select {$extraclass}\" >{$rating}</span>";
		
		return $rated;
		
	} elseif ($config['rating_type'] == "4") {			
		if ($vote_num == 0)
{ $result = 0; } else
{ $result = $rating / $vote_num; } 
if (strlen($result) > 3)
{ $rating = substr($result, 0, 3); }
else 
{ $rating = $result; }
if(  !$allow ) {

$rated = <<<HTML
<table width="100%">
   <tr>
      <td class="td_rate">оценка игре</td>
   </tr>
   <tr>
      <td class="rate3"><span>{$rating}</span><span class="rate3">/5</span></td>
   </tr>
   <tr>
      <td class="td_rate">голосов: <span>{$vote_num}</span></td>
   </tr>
</table>
HTML;

return $rated;

} 

$rated .= <<<HTML
<div id='ratig-layer-{$id}'>
   <table width="100%">
      <tr>
         <td>
            <table width="100%">
               <tr>
                  <td class="td_rate">оценка игре</td>
               </tr>
               <tr>
                  <td class="rate3"><span>{$rating}</span><span>/5</span></td>
               </tr>
               <tr>
                  <td class="td_rate">голосов: <span>{$vote_num}</span></td>
               </tr>
            </table>
         </td>
         <td valign="middle">
            <table width="100%">
               <tr>
                  <td colspan="5" class="rate2" align="center"> Ваша оценка игре по пятибальной шкале </td>
               </tr>
               <tr class="td_bg">
                  <td align="center"><a href="#" title="{$lang['useless']}" class="rate1" onclick="doRate('1', '{$id}'); return false;">1</a></td>
                  <td align="center"><a href="#" title="{$lang['poor']}" class="rate1" onclick="doRate('2', '{$id}'); return false;">2</a></td>
                  <td align="center"><a href="#" title="{$lang['fair']}" class="rate1" onclick="doRate('3', '{$id}'); return false;">3</a></td>
                  <td align="center"><a href="#" title="{$lang['good']}" class="rate1" onclick="doRate('4', '{$id}'); return false;">4</a></td>
                  <td align="center"><a href="#" title="{$lang['excellent']}" class="rate1" onclick="doRate('5', '{$id}'); return false;">5</a></td>
               </tr>
               </td>
               </tr>
          </table>
   </table>
</div>
HTML;

return $rated;
	
    } 
}

2. Открыть engine/inc/options.php и найти:
showRow( $lang['opt_sys_rtp'], $lang['opt_sys_rtpd'], makeDropDown( array ("0" => $lang['opt_sys_rtp_1'], "1" => $lang['opt_sys_rtp_2'], "2" => $lang['opt_sys_rtp_3']), "save_con[rating_type]", "{$config['rating_type']}" ) );

Заменить на:
showRow( $lang['opt_sys_rtp'], $lang['opt_sys_rtpd'], makeDropDown( array ("0" => $lang['opt_sys_rtp_1'], "1" => $lang['opt_sys_rtp_2'], "2" => $lang['opt_sys_rtp_3'], "4" => $lang['opt_sys_rtp_4']), "save_con[rating_type]", "{$config['rating_type']}" ) );

3. Открыть language/Russian/adminpanel.lng и найти:
'opt_sys_rtp_3'			=>  "'Нравится' или 'Не нравится'",

Добавить ниже:
'opt_sys_rtp_4'			=>  "'Оценка по пятибалльной шкале'",

4. Открыть engine/modules/show.full.php и найти:
if( $row['allow_rate'] ) { 

Добавить выше:
if ($config['rating_type'] == "4") {
            $tpl->set('[rating-type-4]', "");
            $tpl->set('[/rating-type-4]', "");
            $tpl->set_block("'\\[rating-type-1\\](.*?)\\[/rating-type-1\\]'si", "");
			$tpl->set_block( "'\\[rating-type-2\\](.*?)\\[/rating-type-2\\]'si", "" );
			$tpl->set_block( "'\\[rating-type-3\\](.*?)\\[/rating-type-3\\]'si", "" );
            
            if ($row['vote_num'] == 0) {
                $result = 0;
            } else {
                $result = $row['rating'] / $row['vote_num'];
            }
            if (strlen($result) > 3) {
                $rated = "<b>" . substr($result, 0, 3) . "</b>/<b>5</b>";
            } else {
                $rated = $result;
            }
            $tpl->set('{total}', $rated);
            $tpl->set('{num_rat}', $row['vote_num']);
        } else {            
            $tpl->set_block("'\\[rating-type-4\\](.*?)\\[/rating-type-4\\]'si", "");
            
        }

5. Открыть templates/Default/fullstory.tpl и найти:
[/rating]

Добавить выше:
[rating-type-4]{rating}<br />Средняя оценка игры посетителями: <b>{total}</b> из <b>5</b><br />Количество проголосовавших: <b>{num_rat}</b>[/rating-type-4]

6. Открыть файл стилей шаблона и в самый низ добавить:
.td_bg{background:#323840;}
.td_rate{background-color:#3394E6;color:#FFF;font-weight:700;text-align:center;}
.rate1{color:#FFF;font:bold 20pt Tahoma, Verdana, Arial, Helvetica, sans-serif;text-align:center;}
.rate2{font:bold 15pt Tahoma, Verdana, Arial, Helvetica, sans-serif;padding:9px;}
.rate3{color:#19425E;font:bold 20pt Tahoma, Verdana, Arial, Helvetica, sans-serif;text-align:center}

7. Зайти в админ панель, включить рейтинг.

Готово!

original_rate.zip
Создайте аккаунт или авторизуйтесь для скачивания
 
Версия DLE: 11.3-12.х
Кодировка: win-1251 + utf-8
Автор: Ingvard
Модификация: SX2
Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.