Для 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
Для DLE хак Статистика рейтинга новости
Симпатичная модификация для DLE хак Статистика рейтинга новости, которая позволяет вывести пользователю в оригинальном виде статистику рейтинга данной новости, процентную шкалу баллов голосовавших, количество и т.д. dle9.com

Установка хака для DLE Статистика рейтинга новости:
Для начала следует выполнить SQL запрос через phpmyadmin вашего хостинга, читаем подробно здесь как сделать MySQL запрос :

ALTER TABLE `dle_post_extras` ADD  `static_votes` varchar(200) NOT NULL DEFAULT '';


Заменяем содержимое файла engine/ajax/rating.php:

$where = "ip ='{$_IP}'";


До строки:

$buffer = ShowRating( $row['news_id'], $row['rating'], $row['vote_num'], false );


На следующий код:

$rowlog = $db->super_query( "SELECT news_id FROM " . PREFIX . "_logs WHERE news_id ='$news_id' AND {$where}" ); //переименовали $row на $rowlog

/* 
Добавляем новую строку в phpmyadmin
ALTER TABLE `dle_post_extras` ADD  `static_votes` varchar(200) NOT NULL DEFAULT '';
*/

//Добавили вывод строки :,static_votes
$row = $db->super_query( "SELECT news_id, rating, vote_num,static_votes FROM " . PREFIX . "_post_extras WHERE news_id ='$news_id'" );
 
if( !$rowlog['news_id'] AND count( explode( ".", $_IP ) ) == 4 ) {//переименовали $row на $rowlog

//перезаписываем $row['static_votes']
$staticVote = count(unserialize($row['static_votes'])) > 0 ? unserialize($row['static_votes']) : array();
$static_votes= array();
for($i = 1; $i < 6; $i++) {$staticVote[$i] = intval($staticVote[$i]) ? $staticVote[$i] : 0;
$static_votes[$i] = ($i==$go_rate) ? $staticVote[$i]+1 : $staticVote[$i];
}
	
	 //$db->query( "UPDATE " . PREFIX . "_post_extras SET rating=rating+'$go_rate', vote_num=vote_num+1 WHERE news_id ='$news_id'" ); 
	$db->query( "UPDATE " . PREFIX . "_post_extras SET rating=rating+'$go_rate', vote_num=vote_num+1,static_votes='".serialize($static_votes)."' WHERE news_id ='$news_id'" ); 
	 
if ( $db->get_affected_rows() )	{
		if( $is_logged ) $user_name = $member_id['name'];
		else $user_name = "noname";
		
		$db->query( "INSERT INTO " . PREFIX . "_logs (news_id, ip, member) values ('$news_id', '$_IP', '$user_name')" );

		if ( $config['allow_alt_url'] == "yes" AND !$config['seo_type'] ) $cprefix = "full_"; else $cprefix = "full_".$news_id;	
	
		clear_cache( array( 'news_', 'rss', $cprefix ) );

	}
}


Открываем файл engine/inc/massactions.php находим строку:

$db->query( "UPDATE " . PREFIX . "_post_extras SET vote_num='0' WHERE news_id='{$id}'" );


Заменяем на эту:

$db->query( "UPDATE " . PREFIX . "_post_extras SET vote_num='0',static_votes='' WHERE news_id='{$id}'" );


Открываем engine/modules/show.full.php после строки:

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


Вставить:

// Вывод статистики рейтинга
$tpl->set( '{static-rating}',ShowStaticRating($row['vote_num'],count(unserialize($row['static_votes'])) > 0 ? unserialize($row['static_votes']) : array()));$tpl->set( '[static-rating]', "" );$tpl->set( '[/static-rating]', "" );


Далее после строки:

$tpl->set( '{rating}', "" );


Вставить:

$tpl->set( '{static-rating}','');$tpl->set_block( "'\[static-rating\](.*?)\[/static-rating\]'si", "" );


В файл engine/modules/functions.php добавляем новую функцию в любом месте до слова function:

/* статистика рейтинга */
function ShowStaticRating($vote_num,$static_votes=array()){
global $config;
$rated = '';
$staticrate = array();
if(count($static_votes)>1){
$color= array('1'=>'one','2'=>'two','3'=>'three','4'=>'four','5'=>'five') ;
for($i = 1; $i < 6; $i++) {
$num = $static_votes[$i];
if( ! $num ) $num = 0;
			if( $vote_num != 0 ) $proc = $num / ($vote_num /100); 
			else $proc = 0;
			$proc = round( $proc, 2 );
$staticrate[] = '<div class="rating-bar-container '.$color[$i].'"> <span class="bar-label"> <span class="star-tiny star-full"></span>'.$i.' </span> <span class="bar" style="width:'.intval($proc).'%"></span> <span class="bar-number">'.$num.'</span> </div> ';
} 
$rated = '<div class="rating-histogram_hide"><div class="title">Статистика</div><div class="rating-histogram"> '.implode("n",array_reverse($staticrate)).'</div></div>';}
return $rated;
}


В style.css вашей темы добавить:

.rating-histogram_hide{
background: #ffffff;-moz-border-radius: 5px;-webkit-border-radius: 5px;border-radius: 5px;-webkit-box-shadow: 0px 2px 10px 0px rgba(63,69,75,0.5);-moz-box-shadow: 0px 2px 10px 0px rgba(63,69,75,0.5);box-shadow: 0px 2px 10px 0px rgba(63,69,75,0.5);color: #4c5157;cursor: default;display: none;font-size: 11px;right:35px;line-height: 14px;padding: 11px 17px 12px 13px;position: absolute;min-width: 230px;z-index: 1;border-collapse: separate;text-align:left;}
.rating-histogram_hide .title {font-weight: bold;}
.rating-histogram{width:170px;float:right}
.rating-histogram{padding:20px 20px 20px 30px}
.rating-bar-container{color:#737373;height:23px;font-weight:400;position:relative;width:100%}
.bar-label{font-size:11px;left:-30px;letter-spacing:1px;position:absolute;top:4px}
.bar-number{color:#333;font-size:11px;left:5px;position:absolute;top:4px}
.rating-bar-container .bar{-moz-opacity:0.8;opacity:0.8;filter:alpha(opacity=80);-webkit-transition:width .25s ease;-moz-transition:width .25s ease;
-o-transition:width .25s ease;transition:width .25s ease;display:inline-block;height:100%}
.rating-bar-container.five .bar{background:#88b131}
.rating-bar-container.four .bar{background:#99cc00}
.rating-bar-container.three .bar{background:#ffcf02}
.rating-bar-container.two .bar{background:#ff9f02}
.rating-bar-container.one .bar{background:#ff6f31}
.star-tiny{display:inline-block}
.star-tiny{height:16px;position:relative;top:-1px;width:16px;vertical-align:middle}
.star-full{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAdElEQVQoz2P4//8/AzmYgWKN6KC4uDgBhGF8UjQ+AGGSNEJt+w/FCXg1AhUUAHEDEB8A4g9IGj9AxUByBdg0LkBSjAsvwOpUApoX4PUjUMEFLJouEAwcSjTCFB+AYjAfr0agAgNo/AUgGRQAFTOgbpIjFQMAtcfKBD81ItYAAAAASUVORK5CYII=)
}


В шаблон fullstory.tpl вашей темы вставить:

[static-rating]<div><a href="#" onclick="$('.rating-histogram_hide').toggle('blind',{},100); return false;">статистика рейтинга</a>{static-rating}</div>[/static-rating]


Автор: rocksmart
Версия datalife engine: на DLE 10.1 и выше

Скачать хаки для дле, как хак Статистика рейтинга новости в тестовом файле
  • 60
Рубрика: DLE хаки » Хак для DLE
Ранее » Хак для DLE Генератор вопросов и ответов« Далее DLE Редирект внешних ссылок
Добавление комментарияОставить комментарий