Статистика рейтинга новости для dle 10-10.1
Robot 2014.03.05 DLE хаки 2434Данный модификация позволяет вывести пользователю статистику рейтинга данной новости.
Выводит процентную шкалу баллов голосовавших .
Протестировано пользователем Nimad на Опен сервере. Версия DLE 10.1
Приступим к установке:
Выполняем sql запрос из phpmyadmin:
ALTER TABLE `dle_post_extras` ADD `static_votes` varchar(200) NOT NULL DEFAULT '';
Заменяем содержимое файла engine/ajax/rating.php
от строки
php - Код
$where = "ip ='{$_IP}'";
До строки php - Код
$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 flooder($ip, $news_time = false) {
Выше добавляем:
/* статистика рейтинга */
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;
}
В стилях вашего шаблона добавляем:
.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]
Другие новости по теме:
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.