Вариант 2 Рейтинг в 10 звезд для Dle
Если вы уже встречались с подобным оформлением рейтинга новостей, особенно красиво и востребовано смотрится на сайтах кино тематики, то этот вариант адаптации для новой версии движка DataLife Engine вам точно нужен. Что такое dle хак «Рейтинг в 10 звезд для DLE»? По сути тот же самый рейтинг, только вместо пять делений теперь будет десять. Итак, на портале «все для движка dle» dle9.com вы можете познакомится с установкой, не очень сложной в принципе хак для DLE Рейтинг в 10 звезд (два красивых варианта).
Т.к. с выходом новой версии движка коды файлов претерпел изменения то пришлось адаптировать, а также решил поделиться с вами ).
Вариант 1 Рейтинг в 10 звезд для DLE
Рейтинг в 10 звезд для DLE 9.7
в \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 AND $vote_num ) $rating = round( ($rating / $vote_num), 1 );
else $rating = 0;
$rating1 = str_replace( ",", " . ", $rating );
$rating2 = $rating1 * 10;
if( ! $allow ) {
$rated = <<<HTML
<div class="rating">
<ul class="unit-rating">
<li class="current-rating" style="width:{$rating2}%;">{$rating2}</li>
</ul>
<div class="rating rating_digits"><div class="rating_digits_1">{$rating1}</div><div class="rating_digits_2">{$vote_num}</div></div></div>
HTML;
return $rated;
}
$rated .= <<<HTML
<div id='ratig-layer-{$id}'><div class="rating">
<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 class="rating rating_digits"><div class="rating_digits_1">{$rating1}</div><div class="rating_digits_2">{$vote_num}</div></div></div></div>
HTML;
return $rated;
}
//основной рейтинг
\engine\ajax\rating.php
найти
if( $go_rate > 5 or $go_rate < 1 ) $go_rate = 0;
заменить на
if( $go_rate > 10 or $go_rate < 1 ) $go_rate = 0;
в css шаблоне в \style\engine.css заменить весь код между
/*---Рейтинг---*/
...
/*---BB коды---*/
на этот
.rating {
color: #000;
font-size: 10px;
font-family: tahoma;
width: 200px;
height: 38px;
margin: 0;
font-weight: bold;
padding: 0 20px;
}
.unit-rating {
list-style: none;
margin: 0px;
padding: 0px;
width: 200px;
height: 38px;
position: relative;
background-image: url(../dleimages/ratingr.png);
background-position: -20px -38px;
background-repeat: repeat-x;
}
.unit-rating li {
text-indent: -90000px;
padding: 0px;
margin: 0px;
float: left;
}
.unit-rating li a {
display: block;
width: 20px;
height: 19px;
text-decoration: none;
text-indent: -9000px;
z-index: 17;
position: absolute;
padding: 0px;
}
.unit-rating li a:hover {
background-image: url(../dleimages/ratingr.png);
background-position: -20px -19px;
z-index: 2;
left: 0px;
}
.unit-rating a.r1-unit { left: 0px; }
.unit-rating a.r1-unit:hover { width: 20px; }
.unit-rating a.r2-unit { left: 20px; }
.unit-rating a.r2-unit:hover { width: 40px; }
.unit-rating a.r3-unit { left: 40px; }
.unit-rating a.r3-unit:hover { width: 60px; }
.unit-rating a.r4-unit { left: 60px; }
.unit-rating a.r4-unit:hover { width: 80px; }
.unit-rating a.r5-unit { left: 80px; }
.unit-rating a.r5-unit:hover { width: 100px; }
.unit-rating a.r6-unit { left: 100px; }
.unit-rating a.r6-unit:hover { width: 120px; }
.unit-rating a.r7-unit { left: 120px; }
.unit-rating a.r7-unit:hover { width: 140px; }
.unit-rating a.r8-unit { left: 140px; }
.unit-rating a.r8-unit:hover { width: 160px; }
.unit-rating a.r9-unit { left: 160px; }
.unit-rating a.r9-unit:hover { width: 180px; }
.unit-rating a.r10-unit { left: 180px; }
.unit-rating a.r10-unit:hover { width: 200px; }
.unit-rating li.current-rating {
background-image: url(../dleimages/ratingr.png);
background-position: -20px 0px;
position: absolute;
height: 19px;
display: block;
text-indent: -9000px;
z-index: 1;
}
.rating_digits{
font-size:14px;
line-height:10px;
padding:0 0 0 2px !important;
position:absolute;
margin:-16px 0 0 0;
height:11px;
width:124px !important;
}
.rating_digits_1{
float:left;
margin:0px;
height:11px;
width:37px;
}
.rating_digits_2{
color:#646464;
float:left;
margin:0 0 0 8px;
height:11px;
width:79px;
}
в шаблон /dleimages/ залить картинку с именем ratingr.png
Вариант 2 Рейтинг в 10 звезд для DLE
в \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 AND $vote_num ) $rating = round( ($rating / $vote_num), 1 );
else $rating = 0;
$rating1 = str_replace( ",", " . ", $rating );
$rating2 = $rating1 * 10;
if( ! $allow ) {
$rated = <<<HTML
<div class="rating">
<ul class="unit-rating">
<li class="current-rating" style="width:{$rating2}%;">{$rating2}</li>
</ul>
<div class="rating_digits"><div class="rating_digits_1">Общий бал: {$rating1}</div><div class="rating_digits_2">Проголосовало людей: {$vote_num}</div></div></div>
HTML;
return $rated;
}
$rated .= <<<HTML
<div id='ratig-layer-{$id}'><div class="rating">
<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 class="rating_digits"><div class="rating_digits_1">Общий бал: {$rating1}</div><div class="rating_digits_2">Проголосовало людей: {$vote_num}</div></div></div></div>
HTML;
return $rated;
}
//основной рейтинг
\engine\ajax\rating.php найти
if( $go_rate > 5 or $go_rate < 1 ) $go_rate = 0;
заменить на
if( $go_rate > 10 or $go_rate < 1 ) $go_rate = 0;
в css шаблоне в \style\engine.css заменить весь код между
/*---Рейтинг---*/
...
/*---BB коды---*/
на этот
.rating {
color: black;
display: block;
font-size: 10px;
font-family: tahoma;
height: 54px;
margin: 0;
font-weight: bold;
width: 264px;
}
.unit-rating {
list-style: none;
margin:0 auto;
padding: 0px;
width: 264px;
height: 27px;
position: relative;
background-image: url(../dleimages/ratingv.png);
background-position: 0 -54px;
background-repeat: repeat-x;
}
.unit-rating li {
text-indent: -90000px;
padding: 0px;
margin: 0px;
float: left;
}
.unit-rating li a {
display: block;
width: 26.4px;
height: 27px;
text-decoration: none;
text-indent: -9000px;
z-index: 17;
position: absolute;
padding: 0px;
}
.unit-rating li a:hover {
background-image: url(../dleimages/ratingv.png);
background-position: 0 -27px;
z-index: 2;
left: 0px;
}
.unit-rating a.r1-unit { left: 0px; }
.unit-rating a.r1-unit:hover { width: 26.4px; }
.unit-rating a.r2-unit { left: 26.4px; }
.unit-rating a.r2-unit:hover { width: 52.8px; }
.unit-rating a.r3-unit { left: 52.8px; }
.unit-rating a.r3-unit:hover { width: 79.2px; }
.unit-rating a.r4-unit { left: 79.2px; }
.unit-rating a.r4-unit:hover { width: 105.6px; }
.unit-rating a.r5-unit { left: 105.6px; }
.unit-rating a.r5-unit:hover { width: 132px; }
.unit-rating a.r6-unit { left: 132px; }
.unit-rating a.r6-unit:hover { width: 158.4px; }
.unit-rating a.r7-unit { left: 158.4px; }
.unit-rating a.r7-unit:hover { width: 184.8px; }
.unit-rating a.r8-unit { left: 184.8px; }
.unit-rating a.r8-unit:hover { width: 211.2px; }
.unit-rating a.r9-unit { left: 211.2px; }
.unit-rating a.r9-unit:hover { width: 237.6px; }
.unit-rating a.r10-unit { left: 237.6px; }
.unit-rating a.r10-unit:hover { width: 264px; }
.unit-rating li.current-rating {
background-image: url(../dleimages/ratingv.png);
background-position: 0 0px;
position: absolute;
height: 27px;
display: block;
text-indent: -9000px;
z-index: 1;
}
.rating_digits{
font-size: 12px;
line-height: 9px;
height: 26px;
width: 334px;
}
.rating_digits div{
display: inline-block;
}
.rating_digits_1{
margin: 0;
padding: 8px 8px 8px 0;
width: 110px;
height: 10px;
}
.rating_digits_2{
margin: 0;
padding: 8px 8px 8px 0;
width: 187px;
height: 10px;
}
в шаблон /dleimages/ залить картинку с именем ratingv.png
Что такое дле хак Рейтинг в 10 звезд для DLE 9.7, думаю уже понятно, все что нужно, содержится в архиве картинки звёзд без сжатия
Автор: D0Gmatist
ПС. Забыл дописать, тут было сделано так, чтобы при 8.3 или 8.4 показывало чётко 8-мь звёзд
Если нужно, можете сделать так, чтобы к примеру при 8.4 показывало 8-мь звёзд и почти половинку закрашенную
для этого в обох вариантах ... достаточно в коде который вписываете в \engine\modules\functions.php
найти
$rating2 = $rating1 * 10;
заменить на
$rating2 = str_replace( ",", "", $rating );
Будем редактировать файл /engine/ajax/rating.php и файл
/engine/modules/functions.php, а также добавим стили в /templates/Deafult/css/engine.css.
Откройте файл /engine/ajax/rating.php и найдите строку
if( $go_rate > 5 or $go_rate < 1 ) $go_rate = 0;
замените ее на
if( $go_rate > 10 or $go_rate < 1 ) $go_rate = 0;
Откройте файл /engine/modules/functions.php и найдите
function ShowRating($id, $rating, $vote_num, $allow = true) {
...
}
function ShortRating($id, $rating, $vote_num, $allow = true) {
...
}
замените эти две функции на
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 class="rating" style="float:left; padding-top:2px;
width:auto;"> {$rating1}/10 ({$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:{$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 class="rating" style="float:left; padding-top:2px;
width:auto;"> {$rating1}/10 ({$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), 1 );
else $rating = 0;
$rating = str_replace( ",", ".", $rating );
$rating = $rating * 10;
if( ! $allow ) {
$rated = <<<HTML
<div class="rating" style="float:left;">
<ul class="unit-rating">
<li class="current-rating" style="width:{$rating}%;">{$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}%;">{$rating}</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>
HTML;
$rated .= "</div>";
return $rated;
}
Откройте файл /templates/Default/css/engine.css, если используете шаблон Default, если нет, то тот, который используете и найдите
стили, которые относятся к рейтингу новостей замените их на
.rating {
color: #555555;
font-size: 11px; /* ! */
font-family: tahoma; /* ! */
width: 170px;
height: 16px;
}
.unit-rating {
list-style: none;
margin: 0px;
padding: 0px;
width: 170px;
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 a.r6-unit { left: 85px; }
.unit-rating a.r6-unit:hover { width: 102px; }
.unit-rating a.r7-unit { left: 102px; }
.unit-rating a.r7-unit:hover { width: 119px; }
.unit-rating a.r8-unit { left: 119px; }
.unit-rating a.r8-unit:hover { width: 136px; }
.unit-rating a.r9-unit { left: 136px; }
.unit-rating a.r9-unit:hover { width: 153px; }
.unit-rating a.r10-unit { left: 153px; }
.unit-rating a.r10-unit:hover { width: 170px; }
.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;
}
На этом установка хака заканчивается.
Способ выше без картинок, хотя можно попробовать взять стили от инструкции для Dle 9.7 возможно будет работать
Представляем на https://dle9.com/ ознакомление с хаком для Dle Вариант 2 Рейтинг в 10 звезд
Hak-dle-Reyting-v-10-zvezd-dlya-DLE-9.7.rar [29,54 Kb] (cкачиваний: 553)
Комментарии 31