Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Шаблоны (TPL) » Проблема с рейтингом на сайте.

Проблема с рейтингом на сайте.


     08.09.2014    Все вопросы » Шаблоны (TPL)    2821

вопрос
На сайте рейтинг в виде 10 - ти звездочек, однако активны только первые 5 звездочек, как сделать так, что бы все 10 были активными или же как убрать 5 неактивных?! Возможно ди это?

Проблема с рейтингом на сайте.

Ответил: trouble


В файле /engine/ajax/rating.php
Найти:
$go_rate > 5


Заменить на:

$go_rate > 10


В файле /engine/modules/functions.php
Найти:

function ShowRating($id, $rating, $vote_num, $allow = true) {
  global $lang;
  
  if( $rating AND $vote_num ) $rating = round( ($rating / $vote_num), 0 );
  else $rating = 0;
  $rating = $rating * 17;
  
  if( !$allow ) {
    
    $rated = <<<HTML
<div class="rating">
    <ul class="unit-rating">
    <li class="current-rating" style="width:{$rating}px;">{$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}px;">{$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;
}


Заменить на:

function ShowRating($id, $rating, $vote_num, $allow = true) {
    global $lang;
    
    if( $rating ) $rating = round( ($rating / $vote_num), 1 );
    else $rating = 0;
    $rating1 = str_replace( ",", ".", $rating );
    $rating2 = $rating1 * 10;
    
    if( ! $allow ) {
        
        $rated = <<<HTML
<div class="rating" style="float:left;">
        <ul class="unit-rating">
        <li class="current-rating" style="width:{$rating2}%;">{$rating2}</li>
        </ul>
</div></div>
HTML;
        
        return $rated;
    }
    
    $rated .= <<<HTML
<div id='ratig-layer-{$id}'><div class="rating" style="float:left;">
        <ul class="unit-rating">
        <li class="current-rating" style="width:{$rating2}%;">{$rating2}</li>
        <li><a href="#" title="1" class="r1-unit" onclick="doRate('1', '{$id}'); return false;">1</a></li>
        <li><a href="#" title="2" class="r2-unit" onclick="doRate('2', '{$id}'); return false;">2</a></li>
        <li><a href="#" title="3" class="r3-unit" onclick="doRate('3', '{$id}'); return false;">3</a></li>
        <li><a href="#" title="4" class="r4-unit" onclick="doRate('4', '{$id}'); return false;">4</a></li>
        <li><a href="#" title="5" class="r5-unit" onclick="doRate('5', '{$id}'); return false;">5</a></li>
        <li><a href="#" title="6" class="r6-unit" onclick="doRate('6', '{$id}'); return false;">6</a></li>
        <li><a href="#" title="7" class="r7-unit" onclick="doRate('7', '{$id}'); return false;">7</a></li>
        <li><a href="#" title="8" class="r8-unit" onclick="doRate('8', '{$id}'); return false;">8</a></li>
        <li><a href="#" title="9" class="r9-unit" onclick="doRate('9', '{$id}'); return false;">9</a></li>
        <li><a href="#" title="10" class="r10-unit" onclick="doRate('10', '{$id}'); return false;">10</a></li>
        </ul>
</div></div>
HTML;
    
    return $rated;
}


В файле /engine/ajax/rating.php
Найти:

$buffer = ShowRating( $row['news_id'], $row['rating'], $row['vote_num'], false );

$buffer = addcslashes($buffer, "\t\n\r\"\\/");

$buffer = htmlspecialchars("{\"success\":true, \"rating\":\"{$buffer}\", \"votenum\":\"{$row['vote_num']}\"}", ENT_NOQUOTES, $config['charset']);


Заменить:

[code$buffer = json_encode(array(
"success" => true,
"rating" => ShowRating( $row['news_id'], $row['rating'], $row['vote_num'], false ),
"votenum" => round( ($row['rating'] / $row['vote_num']), 1 ),
));][/code]

В файле /engine/modules/show.short.php

Найти:

if( $config['short_rating'] and $user_group[$member_id['user_group']]['allow_rating'] ) $tpl->set( '{rating}', ShowRating( $row['id'], $row['rating'], $row['vote_num'], 1 ) );
      else $tpl->set( '{rating}', ShowRating( $row['id'], $row['rating'], $row['vote_num'], 0 ) );


Заменить:

$rating_num = round( ($row['rating'] / $row['vote_num']), 1 );
      $rating = $rating_num." (".$row['vote_num'].")";

      if( $row['rating'] AND $row['vote_num'] )
        $rating_num = "<span id=\"rating-num-id-".$row['id']."\">".round( ($row['rating'] / $row['vote_num']), 1 )."</span>";
      else
        $rating_num = 0;
      
      $tpl->set( '{rating}', $rating);
            $tpl->set( '{rating-num}', str_replace( ",", ".", $rating_num ) );


В файле /engine/modules/show.full.php и /engine/modules/show.custom.php

Найти:

$tpl->set( '{vote-num}', "<span id=\"vote-num-id-".$row['id']."\">".$row['vote_num']."</span>" );


Заменить:

if( $row['rating'] AND $row['vote_num'] ) $rating = "<span id=\"rating-num-id-".$row['id']."\">".round( ($row['rating'] / $row['vote_num']), 1 )."</span>";
        else $rating = 0;
        
      $tpl->set( '{rating-num}', "<span id=\"vote-num-id-".$row['id']."\">".str_replace( ",", ".", $rating )."</span>" );
      $tpl->set( '{vote-num}', "<span id=\"vote-num-id-".$row['id']."\">".$row['vote_num']."</span>" );

1 комментарий

Timkab
Юзер

Timkab - 9 сентября 2014 13:50 -


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

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх