Уникальный, элегантный цифровой рейтинг [DLE 9.3- 9.6]

6 августа 2012 - Андрей
Цифровой рейтинг новости для DLE 9.3 - 9.6
Цифровой рейтинг новости для 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
1344253751_rating_96.rar | 42.77 Кб | Скачан: 364 раза


Я исправлял данный хак под себя, так как у меня в профиле не выводится рейтинг пользователя, возможно из-за этого исчезла и ошибка, так как я изменил часть кода, которая отвечает за вывод рейтинга в userinfo.

Спасибо за внимание.

 

Рейтинг: 0 Голосов: 0 489 просмотров
Комментарии (7)
wizard # 7 августа 2012 в 02:22 0
Все сделал вроде появился новый рейтинг а само голосование не пашет?
Подскажите плиз smile-19
Андрей # 7 августа 2012 в 08:46 0
wizard,
Всё должно работать
trachodil # 5 октября 2012 в 00:37 0
ToRN™, привет а можешь сделать такую красоту но уже для DLE 9.7, буду признателен тебе!
Андрей # 5 октября 2012 в 12:09 0
trachodil,
Вы пробовали ставить на 9.7?
trachodil # 5 октября 2012 в 18:34 0
да!, но function.php нету shortrating
Criticuss # 8 января 2013 в 14:32 0
А можно сделать такое чудо для 9.7?
Андрей # 14 января 2013 в 07:45 0
Criticuss,
Конечно можно. Какие ошибки возникают в процессе установки?