Все для DataLife Engine / DLE хаки / Хак для DLE / Рейтинг 10 звезд для DLE

Рейтинг 10 звезд для DLE


Делаем Рейтинг 10 звезд для DLE 10.4, DLE 10.5 и выше - это хак для дле с не сложной установкой подойдет сайтам где нужен рейтинг больше 5, на таких сайтах большое числом пользователей. Хак рейтинг 10 звезд для DLE к примеру можно увидеть на порталах посвященные кино тематике, музыке или играм, где пользователи оценивают новость или продукт.



Установка хака рейтинг 10 звезд для DataLife Engine 10.4 и выше



Открыть: \engine\modules\functions.php
Найти:

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;

	}


Заменить на:

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), 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 = false;


Заменить на:

if( $go_rate > 10 or $go_rate < 1 ) $go_rate = false;


Открыть: \templates\ваш шаблон\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;
}

/*---BB коды---*/


Закинуть картинку ratingv.png в dleimages

Открыть: shortstory.tpl и fullstory.tpl шаблонов
Найти:

[rating-type-1]<div class="ratebox"><div class="rate">{rating}</div></div>[/rating-type-1]


И удалить!

После:
{full-story} и {short-story}


Вставить:

[rating-type-1]

{rating}
[/rating-type-1]

Готово!

Приятного использования :)

FAQ: Как сделать так, чтобы к примеру при 8.4 показывало 8-мь звёзд и почти половинку закрашенную ?

Открыть: \engine\modules\functions.php
Найти:

$rating2 = $rating1 * 10;


Заменить на:

$rating2 = str_replace( ",", "", $rating * 10 );


Готово!

Для вывода в короткой и полной новости общего бала!

1. Открыть show.short.php
Найти:

$tpl->set( '{rating}', ShowRating( $row['id'], $row['rating'], $row['vote_num'], 1 ) );


Ниже вставить:

$tpl->set( '{rating-num}', $row['rating'] = round( ($row['rating'] / $row['vote_num']), 1  ));


2. Открыть show.full.php
Найти:

$tpl->set( '{rating}', ShowRating( $row['id'], $row['rating'], $row['vote_num'], $user_group[$member_id['user_group']]['allow_ra
ting'] ) );


Ниже вставить:

$tpl->set( '{rating-num}', $row['rating'] = round( ($row['rating'] / $row['vote_num']), 1  ));


3. Открыть: shortstory.tpl и fullstory.tpl

Где нужно, вставить:

Общий бал: {rating-num}


Готово! После установки хака чистим кеш!

FAQ: Как вывести тег общего бала "{rating-num}" в полную и краткую новость, если нужно отдельно "{rating-num}", в разных местах будет находится!
Если на версии Dle 10.4 не срабатывает {rating-num} в shortstory.tpl.
FAQ: Ответ: Проблема может быть том, что отключена функция выставления рейтинга в кратких новостях, включил - и общий рейтинг отобразился.

Если в show.short.php нужную строчку из инструкции поставить выше

if( $config['short_rating'] AND $user_group[$member_id['user_group']]['allow_rating'] ) {


Будет работать даже если функция выставления рейтинга в кратких новостях отключена!
FAQ: Можно ли реализовать сортировку популярных новостей не по значению rating, а по значению vote_num, и где следует копать?

FAQ Ответ: topnews.php найти

ORDER BY rating


заменить

ORDER BY vote_num


Автор: D0Gmatist
Адаптация под DLE 10.4: SX2 Дополнил установку!

Закачать хаки дле, как хак рейтинг 10 звезд для DLE 10.4 и выше

Ratingv-10-zvezd-dlya-DLE-10.4-i-vyshe.zip [89,25 Kb] (cкачиваний: 367)
  • 80

Комментарии 24

SX2 от 26 октября 2017 21:05
Набросал на 12.0
http://demo.sx2.name/o-skripte/1-post1.html
dle9.com от 26 октября 2017 15:47
Цитата: Александр


Спасибо за ответ. У меня версия 11.3 ..проверил на дефолтном шаблоне, там при нажатии на рейтинг идет постоянная "Загрузка. Пожалуйста, подождите..."

Вероятная версия на которую рассчитан хак, где-то в районе ниже 11.
А вот это вариант не пробовали он свежее

Хотя может проблема в том, что там есть несколько выборов типов рейтинга: тип 1, тип 2, тип 3,попробуйте изменить в панели DLE может это как-то поможет или остается искать в интернете у автора SX2 новую адаптацию к данному рейтингу.
Александр от 25 октября 2017 15:39
Здравствуйте. Подскажите пожалуйста в чем может быть причина.
Сделал все как написано, звезды появились, при наведении меняют цвет, но при нажатии ничего не происходит.. рейтинг не выставляется.
Также заметил что функция "[complaint]Видео не работает?[/complaint]" перестала работать, при нажатии экран прыгает вниз сайта.


Добрый день,
возможно версия движка DLE, с каждой версии разработчики меняют большую часть кода и некоторые хаки перестают работать, ещё попробуйте проверить на дефаулт шаблоне, возможно скрипты вашего шаблона создают проблему.


Спасибо за ответ. У меня версия 11.3 ..проверил на дефолтном шаблоне, там при нажатии на рейтинг идет постоянная "Загрузка. Пожалуйста, подождите..."
dle9.com от 25 октября 2017 12:34
Цитата: Александр
Здравствуйте. Подскажите пожалуйста в чем может быть причина.
Сделал все как написано, звезды появились, при наведении меняют цвет, но при нажатии ничего не происходит.. рейтинг не выставляется.
Также заметил что функция "[complaint]Видео не работает?[/complaint]" перестала работать, при нажатии экран прыгает вниз сайта.

Добрый день,
возможно версия движка DLE, с каждой версии разработчики меняют большую часть кода и некоторые хаки перестают работать, ещё попробуйте проверить на дефаулт шаблоне, возможно скрипты вашего шаблона создают проблему.
Александр от 25 октября 2017 03:55
Здравствуйте. Подскажите пожалуйста в чем может быть причина.
Сделал все как написано, звезды появились, при наведении меняют цвет, но при нажатии ничего не происходит.. рейтинг не выставляется.
Также заметил что функция "[complaint]Видео не работает?[/complaint]" перестала работать, при нажатии экран прыгает вниз сайта.
dle9.com от 6 июля 2017 15:16
Цитата: Dartus
У меня вопрос. Как можно запретить менять рейтинг проголосовавшему? )

там привязка к IP кажется, если он динамический никак
Dartus от 6 июля 2017 13:34
У меня вопрос. Как можно запретить менять рейтинг проголосовавшему? )
Dartus от 6 июля 2017 13:18
Гости такие ленивые)
Спасибо все работает, хотя инструкция немного по части шаблона устарела.
Я так полагаю что если только по инструкции будет работать при включенной команде "Оценка"
Спасибо )
Sergy от 13 августа 2016 19:41
Автор, сделайте адаптацию хака под актуальную версию ДЛЕ 11,1
dle9.com от 4 июля 2016 21:04
Цитата: Chicago


И где же ее взять, эту адаптацию?)

текст из новости выше
Адаптация под DLE 10.4: SX2 Дополнил установку!

Значение слово "адаптация" можно прочитать в интернете, делают её как правило авторы хаков и модулей.

Спросить у автора, посмотреть в интернете или спросить на форумах, сделать самостоятельно.
Добавить комментарий

Оставить комментарий

    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent