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

Рубрика: Хаки для DLE » Хак DLE 11.2, 11.1, 11.0, 10.6, 10.5, 10.4, 10.3, 10.2, 10.1, 10.0, 9.8, 9.7, 9.6, 9.5, 9.4, 9.3, 9.2, 9.0
Рейтинг 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 шаблонов
[url=http://www.dle9.com/]дле[/url]

Найти:

[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 и выше
  • 80
Рубрика: DLE хаки » Хак для DLE
Ранее » DLE приватный доступ сайта« Далее DLE UP News
Добавление комментарияОставить комментарий
  • № :16
  • 13 августа 2016 19:41
Автор, сделайте адаптацию хака под актуальную версию ДЛЕ 11,1
  • № :15
  • 4 июля 2016 21:04
Цитата: Chicago


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

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

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

Спросить у автора, посмотреть в интернете или спросить на форумах, сделать самостоятельно.
  • № :14
  • 4 июля 2016 18:10
Цитата: dle9.com
Цитата: Chicago
Здравствуйте.
FAQ: Как сделать так, чтобы к примеру при 8.4 показывало 8-мь звёзд и почти половинку закрашенную ?


Пытаюсь сделать для 5 звездного рейтинга.
Почему-то не корректно срабатывает на DLE11...


В DLE 11 там строчка немного видоизмененная:

$rating = $rating * 20;




Пробовал экспериментировать с цифрой 20 - работает, но как-то странно...
Например ставлю 17 - для рейтинга 2,5 показывает 2,6 звезд... а для рейтинга 3,5 - показывает 3,2 звезд...

В чем причина и как это грамотно решить?
Заранее благодарю за помощь.

Здравствуйте.
хак рассчитан для DLE 10.4-10.6 выше уже версия работает некорректно, нужна новая адаптация для 11.0


И где же ее взять, эту адаптацию?)
  • № :13
  • 4 июля 2016 18:07
Цитата: Chicago
Здравствуйте.
FAQ: Как сделать так, чтобы к примеру при 8.4 показывало 8-мь звёзд и почти половинку закрашенную ?


Пытаюсь сделать для 5 звездного рейтинга.
Почему-то не корректно срабатывает на DLE11...


В DLE 11 там строчка немного видоизмененная:

$rating = $rating * 20;




Пробовал экспериментировать с цифрой 20 - работает, но как-то странно...
Например ставлю 17 - для рейтинга 2,5 показывает 2,6 звезд... а для рейтинга 3,5 - показывает 3,2 звезд...

В чем причина и как это грамотно решить?
Заранее благодарю за помощь.

Здравствуйте.
хак рассчитан для DLE 10.4-10.6 выше уже версия работает некорректно, нужна новая адаптация для 11.0
  • № :12
  • 4 июля 2016 17:09
Здравствуйте.
FAQ: Как сделать так, чтобы к примеру при 8.4 показывало 8-мь звёзд и почти половинку закрашенную ?


Пытаюсь сделать для 5 звездного рейтинга.
Почему-то не корректно срабатывает на DLE11...


В DLE 11 там строчка немного видоизмененная:

$rating = $rating * 20;


Пробовал экспериментировать с цифрой 20 - работает, но как-то странно...
Например ставлю 17 - для рейтинга 2,5 показывает 2,6 звезд... а для рейтинга 3,5 - показывает 3,2 звезд...

В чем причина и как это грамотно решить?
Заранее благодарю за помощь.
  • № :11
  • 23 февраля 2016 03:23
Цитата: vasia0412
обновил движек до 10,6 и поставил, спасибо

удачи, на здоровье!
  • № :10
  • 22 февраля 2016 22:48
обновил движек до 10,6 и поставил, спасибо
  • № :9
  • 22 февраля 2016 19:11
Цитата: vasia0412
Когда ставлю код:

Ошибка появляется: functions.php on line 39


значить код добавленный сюда \engine\modules\functions.php не подходит по версии дле или добавлен с ошибкой, попробуете код из архива, иногда скопированный в браузере код изменяется и создает ошибку

в предыдущий для дле 9.7 в чем точно была проблема???
  • № :8
  • 22 февраля 2016 18:33
Когда ставлю код:


Ошибка появляется: functions.php on line 39
  • № :7
  • 2 февраля 2016 02:40
Цитата: Сэрго
Подскажите пожалуйста как сделать чтобы в короткой новости бал разделялся точкой а не запятой?
Спасибо!

можете скриншрт сделать, если смотреть на картинку в новости, разделение идет точкой, хотя возможно там скриншот полной новости.
  • № :6
  • 1 февраля 2016 23:23
Подскажите пожалуйста как сделать чтобы в короткой новости бал разделялся точкой а не запятой?
Спасибо!
  • № :5
  • 1 декабря 2015 12:40
Цитата: dle9.com
Цитата: LilO
а к кому-нибудь в случае просьбы о помощи можно обратиться? Извините за сообщения не по теме :)

можно в комментарии к модулю, чем сможем поможем, или направим на форум, где тоже могут подсказать

Огромное вам спасибо!!
  • № :4
  • 1 декабря 2015 12:24
Цитата: LilO
а к кому-нибудь в случае просьбы о помощи можно обратиться? Извините за сообщения не по теме :)

можно в комментарии к модулю, чем сможем поможем, или направим на форум, где тоже могут подсказать
  • № :3
  • 1 декабря 2015 10:24
Огромное спасибо за ответ, вторая ссылка больше подойдет, правда, мне не совсем такая оценочная система нужна - мне бы подошла с десятью звездочками (примерно как на кинопоиске или world art). Постараюсь разобраться, и хотелось бы уточнить: а к кому-нибудь в случае просьбы о помощи можно обратиться? Извините за сообщения не по теме :)
  • № :2
  • 1 декабря 2015 05:36
Цитата: LilO
Здравствуйте! Ребят, подскажите, пожалуйста, возможно ли сделать в ДЛЕ нечто вроде: у меня есть каталог игр, и мне нужно было бы, чтобы любой пользователь мог оценить каждую игру, в таком случае оценки были выводились у него в профиле, а на страничке к игре отмечалось количество оценок и можно было бы посмотреть, кто из пользователей и как проголосовал (типа суммарный рейтинг игры). В принципе, это возможно сделать? Буду очень признательна, если подскажите, или хотя бы кините ссылочку, где про это можно почитать... Спасибо!

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

так или иначе их придется как-то подгонять Модуль DLE Rank / Звания больше подойдет наверное oRating v3 Рейтинг для DLE
  • № :1
  • 30 ноября 2015 16:19
Здравствуйте! Ребят, подскажите, пожалуйста, возможно ли сделать в ДЛЕ нечто вроде: у меня есть каталог игр, и мне нужно было бы, чтобы любой пользователь мог оценить каждую игру, в таком случае оценки были выводились у него в профиле, а на страничке к игре отмечалось количество оценок и можно было бы посмотреть, кто из пользователей и как проголосовал (типа суммарный рейтинг игры). В принципе, это возможно сделать? Буду очень признательна, если подскажите, или хотя бы кините ссылочку, где про это можно почитать... Спасибо!