Wmboard
Пользователь
Хак рейтинга DLE Сolor rating
Еще одна интересная замена стандартному рейтингу DLE. Хак позволяет пользователям голосовать плюс один голос, минус один голос.
Установка в принципе не сложная, просто нужно быть внимательным в заменах кода файлов движка.
Установка:
Заливаем картинки в папку dleimages вашего шаблона.
В файле engine.css ищем следующее:
Все это нужно заменить на:
Идем по пути engine/ajax/rating.php и в файле rating.php находим:
Меняем это на:
Идем в engine/modules/functions.php и находим следующий код:
Все это нужно заменить на:
Где в вышеприведенном коде меняем пути к картинкам на свои.
После очистки кэша мы увидим статьи с нулевым рейтингом. Ничего страшного, это нормально.
Если новый рейтинг не отображается не забудьте проверить в вашем шаблоне shortstory.tpl и fullstory.tpl на наличие тэга {rating}
Данный хак тестировался на DLE 9.5
Как это выглядит - смотрим на картинках
Еще одна интересная замена стандартному рейтингу DLE. Хак позволяет пользователям голосовать плюс один голос, минус один голос.
Установка в принципе не сложная, просто нужно быть внимательным в заменах кода файлов движка.
Установка:
Заливаем картинки в папку dleimages вашего шаблона.
В файле engine.css ищем следующее:
Код:
.rating { color: #555555; font-size: 11px; font-family: tahoma; width: 85px; height: 16px;
}
.unit-rating { list-style: none; margin: 0px; padding: 0px; width: 85px; height: 16px; position: relative; background-image: url(../dleimages/rating.gif); background-position: top left; background-repeat: repeat-x;
}
.unit-rating li { text-indent: -90000px; padding: 0px; margin: 0px; float: left;
}
.unit-rating li a { display: block; width: 17px; height: 16px; text-decoration: none; text-indent: -9000px; z-index: 17; position: absolute; padding: 0px;
}
.unit-rating li a:hover { background-image: url(../dleimages/rating.gif); background-position: left center; z-index: 2; left: 0px;
}
.unit-rating a.r1-unit { left: 0px; }
.unit-rating a.r1-unit:hover { width: 17px; }
.unit-rating a.r2-unit { left: 17px; }
.unit-rating a.r2-unit:hover { width: 34px; }
.unit-rating a.r3-unit { left: 34px; }
.unit-rating a.r3-unit:hover { width: 51px; }
.unit-rating a.r4-unit { left: 51px; }
.unit-rating a.r4-unit:hover { width: 68px; }
.unit-rating a.r5-unit { left: 68px; }
.unit-rating a.r5-unit:hover { width: 85px; }
.unit-rating li.current-rating { background-image: url(../dleimages/rating.gif); background-position: left bottom; position: absolute; height: 16px; display: block; text-indent: -9000px; z-index: 1;
}
Все это нужно заменить на:
Код:
.rating-text {float: left;}
#ratig-layer { font-weight: bold; float: left; padding-right: 5px;
}
#ratig-layer a, #ratig-layer a:hover {text-decoration: none;}
.r2-unit{ cursor: pointer;
}
Идем по пути engine/ajax/rating.php и в файле rating.php находим:
Код:
if( $go_rate > 5 or $go_rate < 1 ) $go_rate = 0;
Меняем это на:
Код:
if( $go_rate > 5 or $go_rate < -1 ) $go_rate = 0;
Идем в engine/modules/functions.php и находим следующий код:
Код:
function ShowRating($id, $rating, $vote_num, $allow = true) { global $lang; if( $rating ) $rating = round( ($rating / $vote_num), 0 ); else $rating = 0; $rating = $rating * 17; if( ! $allow ) { $rated = <<<HTML
<div class="rating" style="float:left;"> <ul class="unit-rating"> <li class="current-rating" style="width:{$rating}px;">{$rating}</li> </ul>
</div><div class="rating" style="float:left; padding-top:2px;"> ({$lang['voten']} {$vote_num})</div>
HTML; return $rated; } $rated .= <<<HTML
<div id='ratig-layer'><div class="rating" style="float:left;"> <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 class="rating" style="float:left; padding-top:2px;"> ({$lang['voten']} {$vote_num})</div></div>
HTML; return $rated;
}
function ShortRating($id, $rating, $vote_num, $allow = true) { global $lang; if( $rating ) $rating = round( ($rating / $vote_num), 0 ); else $rating = 0; $rating = $rating * 17; if( ! $allow ) { $rated = <<<HTML
<div class="rating" style="float:left;"> <ul class="unit-rating"> <li class="current-rating" style="width:{$rating}px;">{$rating}</li> </ul>
</div>
HTML; return $rated; } $rated = "<div id='ratig-layer-" . $id . "'>"; $rated .= <<<HTML
<div class="rating" style="float:left;"> <ul class="unit-rating"> <li class="current-rating" style="width:{$rating}px;">{$rating}</li> <li><a href="#" title="{$lang['useless']}" class="r1-unit" onclick="dleRate('1', '{$id}'); return false;">1</a></li> <li><a href="#" title="{$lang['poor']}" class="r2-unit" onclick="dleRate('2', '{$id}'); return false;">2</a></li> <li><a href="#" title="{$lang['fair']}" class="r3-unit" onclick="dleRate('3', '{$id}'); return false;">3</a></li> <li><a href="#" title="{$lang['good']}" class="r4-unit" onclick="dleRate('4', '{$id}'); return false;">4</a></li> <li><a href="#" title="{$lang['excellent']}" class="r5-unit" onclick="dleRate('5', '{$id}'); return false;">5</a></li> </ul>
</div>
HTML; $rated .= "</div>"; return $rated;
}
function userrating($name) { global $db; $row = $db->super_query( "SELECT SUM(rating) as rating, SUM(vote_num) as num FROM " . PREFIX . "_post where autor ='$name'" ); if( $row['num'] ) $rating = round( ($row['rating'] / $row['num']), 0 ); else $rating = 0; $rating = $rating * 17; $rated = <<<HTML
<div class="rating" style="display:inline;"> <ul class="unit-rating"> <li class="current-rating" style="width:{$rating}px;">{$rating}</li> </ul> </div>
HTML; return $rated;
}
Все это нужно заменить на:
Код:
function ShowRating($id, $rating, $vote_num, $allow = true) { global $is_logged, $member_id, $config, $lang, $db; if ($rating) $rating = round($rating, 0); else $rating = 0;
switch($rating) {
case ($rating >= 0):
$rating = '<span style="color: #009900;">+'.$rating.'</span>';
break;
case ($rating <= 0):
$rating = '<span style="color: #FF0000;">'.$rating.'</span>';
break;
case($rating == 0):
$rating = '<span style="color: #000000;">'.$rating.'</span>';
break;
} if (!$allow) { $rated = <<<HTML
<div id="ratig-layer"> <a href="#" title="Нравится(+)" alt="Нравится(+)" class="r2-unit" onclick="doRate('1', '{$id}'); return false;"> <img src="/templates/elegant/dleimages/up.gif" title="Нравится(+)" alt="Нравится(+)" width="16" height="16" align="middle" /> </a> {$rating} <a href="#" title="Не нравится(-)" alt="Не нравится(-)" class="r2-unit" onclick="doRate('-1', '{$id}'); return false;"> <img src="/templates/elegant/dleimages/down.gif" title="Не нравится(-)" alt="Не нравится(-)" width="16" height="16" align="middle" /> </a>
</div>
HTML; return $rated;
}
$rated .= <<<HTML
<span id="ratig-layer-{$id}"> <div id="ratig-layer"> <a href="#" title="Нравится(+)" alt="Нравится(+)" class="r2-unit" onclick="doRate('1', '{$id}'); return false;"> <img src="{THEME}/dleimages/up.gif" title="Нравится(+)" alt="Нравится(+)" width="16" height="16" align="middle" /> </a> {$rating}
<a href="#" title="Не нравится(-)" alt="Не нравится(-)" class="r2-unit" onclick="doRate('-1', '{$id}'); return false;"> <img src="{THEME}/dleimages/down.gif" title="Не нравится(-)" alt="Не нравится(-)" width="16" height="16" align="middle" />
</a>
</div>
</span>
HTML; return $rated;
}
function ShortRating($id, $rating, $vote_num, $allow = true) { global $config, $lang; if ($rating) $rating = round($rating, 0); else $rating = 0;
switch($rating) {
case ($rating >= 0):
$rating = '<span style=\"color: #009900;\">+'.$rating.'</span>';
break;
case ($rating <= 0):
$rating = '<span style="color: #FF0000;">'.$rating.'</span>';
break;
case($rating == 0):
$rating = '<span style="color: #000000;">'.$rating.'</span>';
break;
} if (!$allow) { $rated = <<<HTML
<div id="ratig-layer"> <a href="#" title="Нравится(+)" alt="Нравится(+)" class="r2-unit" onclick="doRate('1', '{$id}'); return false;"> <img src="/templates/elegant/dleimages/up.gif" title="Нравится(+)" alt="Нравится(+)" width="16" height="16" align="middle" /> </a> {$rating} <a href="#" title="Не нравится(-)" alt="Не нравится(-)" class="r2-unit" onclick="doRate('-1', '{$id}'); return false;"> <img src="/templates/elegant/dleimages/down.gif" title="Не нравится(-)" alt="Не нравится(-)" width="16" height="16" align="middle" /> </a>
</div>
HTML; return $rated;
}
$rated = "<span id=\"ratig-layer-" . $id . "\">";
$rated .= <<<HTML <div id="ratig-layer">
<a href="#" title="Нравится(+)" alt="Нравится(+)" class="r2-unit" onclick="dleRate('1', '{$id}'); return false;"> <img src="{THEME}/dleimages/up.gif" title="Нравится(+)" alt="Нравится(+)" width="16" height="16" align="middle" />
</a>
{$rating}
<a href="#" title="Нравится(+)" alt="Нравится(+)" class="r2-unit" onclick="dleRate('-1', '{$id}'); return false;"> <img src="{THEME}/dleimages/down.gif" title="Не нравится(-)" alt="Не нравится(-)" width="16" height="16" align="middle" />
</a> </div>
HTML; $rated .= "</span>"; return $rated;
}
function userrating($name) { global $db; $row = $db->super_query("SELECT SUM(rating) as rating, SUM(vote_num) as num FROM " . PREFIX . "_post where autor ='$name'"); if ($row['num']) $rating = round(($row['rating'] / $row['num']), 0); else $rating = 0; $rating = $rating; $rated = <<<HTML
{$rating}
HTML; return $rated;
}
Где в вышеприведенном коде меняем пути к картинкам на свои.
После очистки кэша мы увидим статьи с нулевым рейтингом. Ничего страшного, это нормально.
Если новый рейтинг не отображается не забудьте проверить в вашем шаблоне shortstory.tpl и fullstory.tpl на наличие тэга {rating}
Данный хак тестировался на DLE 9.5
Как это выглядит - смотрим на картинках