Цифровой рейтинг новости для DLE 9.3 — 9.6
Сегодня я наткнулся на красивый и универсальный рейтинг новости для DLE. Мне он понравился, я решил его поставить сюда, на Soon.BY, стало всё хорошо, кроме некоторых нюансов, не показывается PopUp окно с профилем пользователя и выдаёт ошибку Mysql №1060?, начал я ковырять код и понял в чём проблема:
Мод хороший но в оригинале для старых версий DLE, я исправил инструкцию, а именно 1 часть кода для DLE 9.6. Что хочу сказать о данном хаке — хак очень хороший и привлекательный, напомню, что раньше были какие-то стрелочки и смотрелись не совсем элегантно, этот же мод смотрится красиво и элегантно.
Версия DLE: 9.3 — 9.6
Установка для Версияя DLE — 9.6:
Перед установкой делаем backup файлов:
1./engine/modules/functions.php
2./engine/ajax/rating.php
3./engine/classes/js/dle_js.js
4. Вашу базу данных
Закидываем 2 картинки которые находятся в архие в папку Images — вашего шаблона
rep_down.png
rep_up.png
Открыть файл /templates/ваш_шаблон/css/engine.css
Найти ---> /*---Рейтинг---*/
.rating {
.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;
}
и заменяем на (Спасибо за стиль zagruzka-plus)
.rateBtn{cursor:pointer;display:inline-block;vertical-align:0px}.rateBtn img{display:inline-block;vertical-align:-6px}.ratingBox{padding:2px;margin-right:8px}.rateСounter{font-weight:bold;display:inline-block;min-width:26px;color:#4B4B4B;padding:2px;font-size:10px;text-shadow:0px 1px 0px #fff;text-align:center;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;background:#7СB600;background: -moz-linear-gradient(top, #FFF 0%, #E5E5E5 100%);background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#FFFFFF), color-stop(100%,#E5E5E5));background: -webkit-linear-gradient(top, #FFF 0%,#E5E5E5 100%);background: -o-linear-gradient(top, #FFF 0%,#E5E5E5 100%);background: -ms-linear-gradient(top, #FFF 0%,#E5E5E5 100%);background:linear-gradient(top, #FFF 0%,#E5E5E5 100%);border:1pxsolid #С8С8С8;}.rateСounter.clickable{cursor:pointer}.rateСounter.green{color:#fff;text-shadow:0px -1px 0px rgba(0,0,0,0.3);background:#7СB600;background: -moz-linear-gradient(top, #8EС300 0%, #6СAA00 100%);background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#8EС300), color-stop(100%,#6СAA00));background: -webkit-linear-gradient(top, #8EС300 0%,#6СAA00 100%);background: -o-linear-gradient(top, #8EС300 0%,#6СAA00 100%);background: -ms-linear-gradient(top, #8EС300 0%,#6СAA00 100%);background:linear-gradient(top, #8EС300 0%,#6СAA00 100%);border:1pxsolid #689E07}.rateСounter.red{color:#fff;text-shadow:0px -1px 0px rgba(0,0,0,0.3);background:#E71A0E;background: -moz-linear-gradient(top, #FE2F18 0%, #СF0404 100%);background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#FE2F18), color-stop(100%,#СF0404));background: -webkit-linear-gradient(top, #FE2F18 0%,#СF0404 100%);background: -o-linear-gradient(top, #FE2F18 0%,#СF0404 100%);background: -ms-linear-gradient(top, #FE2F18 0%,#СF0404 100%);background:linear-gradient(top, #FE2F18 0%,#СF0404 100%);border:1pxsolid #B00303}
Открыть файл /engine/modules/functions.php
Изменяем 3 функции --->
function ShowRating ()
function ShortRating ()
function userrating ()
На эти
function ShowRating($id, $rating, $vote_num, $allow = true) { global $is_logged, $member_id, $config, $lang, $db;if ($rating=='null'){$rating="Уже Голосовали!";}else{ if ($rating) $rating = round($rating, 0); else $rating = 0;if ($rating > 0) $rating = "<span class=\"rateСounter clickable green\" title=\"Рейтинг положителен\" alt=\"Рейтинг положителен\">+".$rating."</span>"; elseif ($rating == 0) $rating="<span class=\"rateСounter\" title=\"Рейтинг еще не выставлен\" alt=\"Рейтинг еще не выставлен\">".$rating."</span>"; else $rating = "<span class=\"rateСounter clickable red\" title=\"Рейтинг отрицателен\" alt=\"Рейтинг отрицателен\">".$rating."</span>";} if (!$allow) { $rated = <<<HTML<div id="ratig-layer">{$rating}</div>HTML; return $rated;}$rated .= <<<HTML<span id="ratig-layer-{$id}"><span class="rateBtn" onclick="doRate('1', '{$id}'); return false;"><img src="{THEME}/images/rep_up.png" title="Нравится(+)" alt="Нравится(+)"></span>{$rating}<span class="rateBtn" onclick="doRate('-1', '{$id}'); return false;"><img src="{THEME}/images/rep_down.png" title="Не нравится(-)" alt="Не нравится(-)"></span></span>HTML; return $rated;}function ShortRating($id, $rating, $vote_num, $allow = true) { global $config, $lang; if ($rating) $rating = round($rating, 0); else $rating = 0;if ($rating > 0) $rating = "<span class=\"rateСounter clickable green\" title=\"Рейтинг положителен\" alt=\"Рейтинг положителен\">+".$rating."</span>"; elseif ($rating == 0) $rating="<span class=\"rateСounter clickable\" title=\"Рейтинг еще не выставлен\" alt=\"Рейтинг еще не выставлен\">".$rating."</span>"; else $rating = "<span class=\"rateСounter clickable red\" title=\"Рейтинг отрицателен\" alt=\"Рейтинг отрицателен\">".$rating."</span>"; if (!$allow) { $rated = <<<HTML<div id="ratig-layer">{$rating}</div>HTML; return $rated;}$rated .= <<<HTML<span id="ratig-layer-{$id}"><span class="rateBtn" onclick="doRate('1', '{$id}'); return false;"><img src="{THEME}/images/rep_up.png" title="Нравится(+)" alt="Нравится(+)"/></span>{$rating}<span class="rateBtn" onclick="doRate('-1', '{$id}'); return false;"><img src="{THEME}/images/rep_down.png" title="Не нравится(-)" alt="Не нравится(-)"/></span></span>HTML; return $rated;}function userrating($id) { global $db; $row = $db->super_query( "SELEСT SUM(rating) as rating, SUM(vote_num) as num FROM " . PREFIX . "_post_extras WHERE user_id ='{$id}'" ); 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;}
Откройте ваш /engine/ajax/rating.php
Найти:
if ($go_rate > 5 OR $go_rate < 1) $go_rate = 0;-------Заменить на:if ($go_rate > 1 OR $go_rate < -1) $go_rate = 0;
Откройте ваш /engine/classes/js/dle_js.js
Находим
function doRate(a,b) {}
и изменяем на
function doRate(a,b) {
ShowLoading('');
$.get(dle_root + "engine/ajax/rating.php", { go_rate: a, news_id: b, skin: dle_skin }, function(data){
HideLoading('');
$("#ratig-layer-" + b).html(data);
});
};
Заходи в папку с вашим шаблоном и в 3 файлах меняем
Файлы --->
shortstory.tpl
fullstory.tpl
userinfo.tpl
Находим {rating} изменяем на строку то что ниже<div class="ratingBox">{rating}</div>
Скачать цифровой рейтинг новости для DLE 9.6
Я исправлял данный хак под себя, так как у меня в профиле не выводится рейтинг пользователя, возможно из-за этого исчезла и ошибка, так как я изменил часть кода, которая отвечает за вывод рейтинга в userinfo.
Спасибо за внимание.