Оценка по пятибалльной шкале (Рейтинг №4)

35 7 января 2018
Версия DLE: 11.3
Стоимость: FREE

ionCube Loader: NOT

Последнее обновление: 23 января 2018


 Подписаться 1 Скачать

При помощи данного хака, мы добавим рейтинг №4 в Data Life Engine.

После установки будет доступно 4 версии рейтинга, которые всегда можно будет изменить в админ-панели. Так же при обновлении на новые версии DLE правки будут минимальны!

За основу был взят рейтинг, который я нашел на просторах интернета (в загрузках вы можете его скачать).

Автор оригинальной версии: Ingvard
Автор данной модификации: SX2
собрано 0 долларов Поддержать автора

Войдите на сайт


Все собранные средства будут переданы автору этой статьи - SX2
Сумма перевода от 1 доллар

Обновлено: 23 января 2018 - Изменения смотрите в разделе "История"
Установка!

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;
	
    } 
}

1.1 Найти функцию userrating и заменить ее на:
function userrating($id)
{
    global $db, $config;
    
    $id = intval($id);
    
    $row = $db->super_query("SELECT SUM(rating) as rating, SUM(vote_num) as num FROM " . PREFIX . "_post_extras WHERE user_id ='{$id}'");
    
    if (!$config['rating_type']) {
        
        if ($row['num'])
            $rating = round(($row['rating'] / $row['num']), 0);
        else
            $rating = 0;
        
        if ($rating < 0)
            $rating = 0;
        
        $rating = $rating * 20;
        
        $rated = <<<HTML
<div class="rating" style="display:inline;">
		<ul class="unit-rating">
		<li class="current-rating" style="width:{$rating}%;">{$rating}</li>
		</ul>
		</div>
HTML;
        
        return $rated;
		
    } elseif ($config['rating_type'] == "4") {

        if ($row['num'] == 0) {
            $result = 0;
        } else {
            $result = $row['rating'] / $row['num'];
        }
        if (strlen($result) > 3) {
            $rated = substr($result, 0, 3) . 5;
        } else {
            $rated = $result . " / " . 5;
        }
        return $rated;
        
    } elseif ($config['rating_type'] == "1") {
        
        if ($row['num'])
            $rating = number_format($row['rating'], 0, ',', ' ');
        else
            $rating = 0;
        
        if ($rating < 0)
            $rating = 0;
        
        return "<span class=\"ratingtypeplus\" >{$rating}</span>";
        
    } elseif ($config['rating_type'] == "2") {
        
        if ($row['num'])
            $rating = number_format($row['rating'], 0, ',', ' ');
        else
            $rating = 0;
        
        $extraclass = "ratingzero";
        
        if ($rating < 0) {
            $extraclass = "ratingminus";
        }
        
        if ($rating > 0) {
            $extraclass = "ratingplus";
            $rating     = "+" . $rating;
        }
        
        return "<span class=\"ratingtypeplusminus {$extraclass}\" >{$rating}</span>";
        
    }
}

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. Открыть файл стилей (css) в самый низ вставить:
.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. Зайти в админ панель, включить рейтинг!
23.01.18
Добавлена установка, для вывода рейтинга в профиле пользователя.
Оригинальная версия рейтинга, без правок!
original_rate.rar [104.91 Kb] (cкачиваний: 26)
Нет видео!
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.


Подписка на новости

Подписаться

Кто онлайн
2 посетителя на сайте. Из них:
Гости2