1 (18.05.2013 10:38 отредактировано Xnokie)

Тема: Проблема с рейтингом DLE

Доброе утро!
Убрал рейтинг от сандера и поставил обычный, однако в обычном не все так хорошо как хотелось бы. После голосования выводятся не 5ть,а 6ть или более звезд. Сколько звезд поставишь, настолько этот рейтинг и увеличивается.

<ul itemprop="rating" itemscope="" itemtype="http://data-vocabulary.org/Rating" class="unit-rating">
        <li itemprop="average" class="current-rating" style="width:102px;">6</li>
        <li><a href="#" title="Плохо" class="r1-unit" onclick="doRate('1', '542'); return false;">1</a></li>
        <li><a href="#" title="Приемлемо" class="r2-unit" onclick="doRate('2', '542'); return false;">2</a></li>
        <li><a href="#" title="Средне" class="r3-unit" onclick="doRate('3', '542'); return false;">3</a></li>
        <li><a href="#" title="Хорошо" class="r4-unit" onclick="doRate('4', '542'); return false;">4</a></li>
        <li itemprop="best"><a href="#" title="Отлично" class="r5-unit" onclick="doRate('5', '542'); return false;">5</a></li>
        </ul>

Вот CSS:

+ открыть спойлер

.rating {
    width: 85px;
    height: 17px;
    font-size: 0.9em;
    padding-top: 15px;
}

.unit-rating {
    list-style: none;
    margin: 0;
    padding: 0;
    width: 85px;
    height: 17px;
    position: relative;
    background: url("../dleimages/rating.png") repeat-x;
}

.unit-rating li {
    text-indent: -90000px;
    padding: 0;
    margin: 0;
    float: left;
}

.unit-rating li a {
    display: block;
    width: 17px;
    height: 17px;
    text-decoration: none;
    text-indent: -9000px;
    z-index: 17;
    position: absolute;
    padding: 0;
}

.unit-rating li a:hover {
    background: url("../dleimages/rating.png") 0 -17px;
    z-index: 2;
    left: 0;
}

.unit-rating a.r1-unit {
    left: 0;
}

.unit-rating a.r1-unit:hover {
    width:17px;
}

.unit-rating a.r2-unit {
    left: 17px;
}

.unit-rating a.r2-unit:hover {
    width: 34px;
}

.unit-rating a.r3-unit {
    left: 34px;
}

.unit-rating a.r3-unit:hover {
    width: 51px;
}

.unit-rating a.r4-unit {
    left: 51px;
}

.unit-rating a.r4-unit:hover {
    width: 68px;
}

.unit-rating a.r5-unit {
    left: 68px;
}

.unit-rating a.r5-unit:hover {
    width: 85px;
}

.unit-rating li.current-rating {
    background: url("../dleimages/rating.png") 0 -34px;
    position: absolute;
    height: 17px;
    display: block;
    text-indent: -9000px;
    z-index: 1;
}

Подскажите как поправить пожалуйста

Re: Проблема с рейтингом DLE

Xnokie, Не в css тут дело, а в ошибке в файлах.
Так как значение 6 в твоем коде соответствует переменной $rating, которая в свою очередь равна:

    if( $rating AND $vote_num ) $rating = round( ($rating / $vote_num), 0 );
    else $rating = 0;
    $rating = $rating * 17;

Так что лучше замени свой файл functions.php на чистый из дистрибутива. А потом и микроразметку добавишь, если надо.

3

Re: Проблема с рейтингом DLE

admin пишет:

Так что лучше замени свой файл functions.php на чистый из дистрибутива. А потом и микроразметку добавишь, если надо.

Пробовал заменять дело в том что!!!

Re: Проблема с рейтингом DLE

Xnokie пишет:

Пробовал заменять дело в том что!!!

Не понял...

5 (19.05.2013 00:55 отредактировано Xnokie)

Re: Проблема с рейтингом DLE

admin пишет:

Не понял...

Пробовал зашвыривать чистый functions.php
Вообще всю папку engine пробовал закидывать, насколько я понял это проблема в стилях...
Вот что в show.full:

+ открыть спойлер

if ( $row['vote_num'] == 0 ) $row['vote_num'] = 1;

if ( $row['vote_num'] == 0 ) $row['vote_num'] = 1; // Кстати, этих строк так и должно быть 2е?


        if( $row['allow_rate'] ) {

            $tpl->set( '{rating}', ShowRating( $row['id'], $row['rating'], $row['vote_num'], $user_group[$member_id['user_group']]['allow_rating'] ) );
            $tpl->set( '{vote-num}', "<span itemprop=\"votes\" id=\"vote-num-id-".$row['id']."\">".$row['vote_num']."</span>" );
            $tpl->set( '[rating]', "" );
            $tpl->set( '[/rating]', "" );

        } else {

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

А вот functions:

+ открыть спойлер

function ShowRating($id, $rating, $vote_num, $allow = true) {
    global $lang;

    if( $rating AND $vote_num ) $rating = round( ($rating / $vote_num), 0 );
    else $rating = 4;
    $AVERrating = $rating;
    $rating = $rating * 17;

    if( !$allow ) {

        $rated = <<<HTML
<div class="rating">
        <ul class="unit-rating">
        <li class="current-rating" style="width:{$rating}px;">{$rating}</li>
        </ul>
</div>
HTML;

        return $rated;
    }

    $rated = <<<HTML
<div id='ratig-layer-{$id}'><div class="rating">
        <ul itemprop="rating" itemscope itemtype="http://data-vocabulary.org/Rating" class="unit-rating">
        <li itemprop="average" class="current-rating" style="width:{$rating}px;">{$AVERrating}</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 itemprop="best"><a href="#" title="{$lang['excellent']}" class="r5-unit" onclick="doRate('5', '{$id}'); return false;">5</a></li>
        </ul>
</div></div>
HTML;

    return $rated;
}

function userrating($id) {
    global $db;
   
    $row = $db->super_query( "SELECT 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;
}

Ajax/rating.php:

+ открыть спойлер

<?php

@session_start();
@error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE );
@ini_set ( 'display_errors', true );
@ini_set ( 'html_errors', false );
@ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE );

define( 'DATALIFEENGINE', true );
define( 'ROOT_DIR', substr( dirname(  __FILE__ ), 0, -12 ) );
define( 'ENGINE_DIR', ROOT_DIR . '/engine' );

$go_rate = intval( $_REQUEST['go_rate'] );
$news_id = intval( $_REQUEST['news_id'] );

if( $go_rate > 5 or $go_rate < 1 ) $go_rate = 0;
if( ! $go_rate or ! $news_id ) die( "Hacking attempt!" );

include ENGINE_DIR . '/data/config.php';

if( $config['http_home_url'] == "" ) {
   
    $config['http_home_url'] = explode( "engine/ajax/rating.php", $_SERVER['PHP_SELF'] );
    $config['http_home_url'] = reset( $config['http_home_url'] );
    $config['http_home_url'] = "http://" . $_SERVER['HTTP_HOST'] . $config['http_home_url'];

}

require_once ENGINE_DIR . '/classes/mysql.php';
require_once ENGINE_DIR . '/data/dbconfig.php';
require_once ENGINE_DIR . '/modules/functions.php';

$_REQUEST['skin'] = totranslit($_REQUEST['skin'], false, false);

if( $_REQUEST['skin'] ) {
    if( @is_dir( ROOT_DIR . '/templates/' . $_REQUEST['skin'] ) ) {
        $config['skin'] = $_REQUEST['skin'];
    } else {
        die( "Hacking attempt!" );
    }
}

if( $config["lang_" . $config['skin']] ) {
    if ( file_exists( ROOT_DIR . '/language/' . $config["lang_" . $config['skin']] . '/website.lng' ) ) {   
        include_once ROOT_DIR . '/language/' . $config["lang_" . $config['skin']] . '/website.lng';
    } else die("Language file not found");
} else {
   
    include_once ROOT_DIR . '/language/' . $config['langs'] . '/website.lng';

}
$config['charset'] = ($lang['charset'] != '') ? $lang['charset'] : $config['charset'];


//################# Определение групп пользователей
$user_group = get_vars( "usergroup" );

if( ! $user_group ) {
    $user_group = array ();
   
    $db->query( "SELECT * FROM " . USERPREFIX . "_usergroups ORDER BY id ASC" );
   
    while ( $row = $db->get_row() ) {
       
        $user_group[$row['id']] = array ();
       
        foreach ( $row as $key => $value ) {
            $user_group[$row['id']][$key] = stripslashes($value);
        }
   
    }
    set_vars( "usergroup", $user_group );
    $db->free();
}

require_once ENGINE_DIR . '/modules/sitelogin.php';

if( ! $is_logged ) $member_id['user_group'] = 5;

if( ! $user_group[$member_id['user_group']]['allow_rating'] ) die( "Hacking attempt!" );

$_IP = $db->safesql( $_SERVER['REMOTE_ADDR'] );
$member_id['name'] = $db->safesql($member_id['name']);

if( $is_logged ) $where = "member = '{$member_id['name']}'";
else $where = "ip ='{$_IP}'";

$row = $db->super_query( "SELECT news_id FROM " . PREFIX . "_logs where news_id ='$news_id' AND {$where}" );

if( !$row['news_id'] AND count( explode( ".", $_IP ) ) == 4 ) {
   
    $db->query( "UPDATE " . PREFIX . "_post_extras SET rating=rating+'$go_rate', vote_num=vote_num+1 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 ) );

    }
}

$row = $db->super_query( "SELECT news_id, rating, vote_num FROM " . PREFIX . "_post_extras WHERE news_id ='$news_id'" );

if( $_REQUEST['mode'] == "short" ) {
   
    $buffer = ShortRating( $row['news_id'], $row['rating'], $row['vote_num'], false );

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

}

$db->close();

@header( "Content-type: text/html; charset=" . $config['charset'] );
echo $buffer;
?>

6

Re: Проблема с рейтингом DLE

admin, Отвечай епт давай!!!

Re: Проблема с рейтингом DLE

Xnokie пишет:

if ( $row['vote_num'] == 0 ) $row['vote_num'] = 1; // Кстати, этих строк так и должно быть 2е?

Нет, должно быть один раз, но это ничего не меняет.

Xnokie пишет:

admin, Отвечай епт давай!!!

Ты совсем охренел что ли! Я теперь принципиально не буду отвечать...

8

Re: Проблема с рейтингом DLE

Xnokie пишет:

admin, Отвечай епт давай!!!

admin пишет:

Ты совсем охренел что ли! Я теперь принципиально не буду отвечать...

)))

9

Re: Проблема с рейтингом DLE

admin, Отвечай!

Re: Проблема с рейтингом DLE

сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
tuchkasсайтсайт

Re: Проблема с рейтингом DLE

Rich270.2vitaReprYoshWindXVIIXVIIXVIIFerzradbSignAtlaBistZdenMarcJuleHaroJohnGratSociRola
LiteJazzCorsPremTescNivecucuOreaRachStomJoseMiloBehoMakiOLAYCaroMennGarnNiveHugoPatrJose
SunsDoctLiliCathAnneSansCottLuciStagMickReadTannCaroWillDonaXVIIAgatRoxygunmFELIRoxyRoxy
XVIIPoloJeweMercGrisPhilJeanHerbGeorStevZombRighPasqMargRaimAgatChetZoneZoneZoneKillZone
ZoneChetCaroZoneOrsoYolaGHOSMichSuzaJoelEijiXVIIGlenSmokXVIIHenrMandYvesManoHervDonoYasu
EditPhilJackArthXVIIRobeTakaBetwVideBronElecBekoStieSacrBratShoePinaTequNeriDuraThomSmal
EggeGiseMicrLLeoPancLatiAlabHellSdKfSonyMORGWinxdarkWindwwwtBorkElitRedmChucCommBritWind
SecrWWWUfoulJohaCybeXVIIMontRichHighHeatKaziSpelVerlFrieFlasHellSatawwwsPaweBlanLiyaNana
JaggSteiFranLeonExceAngeUllrPushGeneMigucaseInteBurnYourSabbWindConcModeGonzAnnewwwnFyod
OscaWITCWindJackElisChriWindVideVideVideWindSpirRobeQuarRetuGeormostDaraKateMichGeraAbba
tuchkasJereJewe

Re: Проблема с рейтингом DLE

нель205.34PERFPERFРытхForzГурчHowaлесоAgatТолмAtomCafeRondБараWindтрилSonaРудаErneLeigJohn
ЗубрШерсXVIICR30GeleblonBylyPresБуреWillBobbMikhIlluКузиTotaобслskelPantакадсельКурьMing
ZhanPenhPenhmuchпотракваVoltЗахаJeweKennЧугуGiorвешацепоPianШляхсертValeIrenLuxoВолоМалк
AquaPartParoLittElecКопыФилиTirsRichНагаТереБобрWindсмерValiKennхар-ArtsавтоДангАльбArts
КолпMichHastArtsdiamLarrHappосвясереДекуHonoанглIrwiSelmPaulGipsDigiJavaCompKrisКазаARCH
SandMillSideonliAfriЛаврАГПокомпмесясостРазмToshПроиMika8998ЗароBefl3969Pola(05-ТурцAnto
SpeeAVTOJeweRussспецFreeValiсиликистHobbинстзаряGammJeweфотоиголDefeBrauPhilCITYWhisЛитР
ДолжMicrHeinRayeDouzHeleЛитРТихоЛитР1923(карИллюГущеКазаРомаHeisВороKissСтанакадDisnBogd
ФедепримExceАнонтехнОсипJohnкартТурчSelmАхреЛимиШеведеятКостГригВолоунивSureКуруJazzGibs
КнижКащеХорсСычеRickСтепWillмесямесямесяпредМарчавтоИванGamzсупеЛебеMagiКазаМусаРомавсег
tuchkasWellкниг

Re: Проблема с рейтингом DLE

Econ115.3смотReprВайлвторCanzрабоКитаXVIIБарсKnutShinFiskMarkLineСодеVocaСнисDualEuroРома
MealTescClueTefaTescCleaJuicTherXVIIмузыНаумискуOrlaValsсертАтмоInhiSunsMavaNighCreoРуди
BennсертRichдопоDaviXVIIИллюNathLawlBandHermElegPlayBrokГраниронгостРастxDevshinSelaSela
ВойтMoreVainMakiкульKoboMareТимоFiniEdgaЛевирубеСероIsabтреуRobeSwarRHLIToveZoneпрошambe
жизн1101Will01-2SwarFranSwarZoneHenrBethWrigOlofmailMiloGustЗабеIngoШилопостJuliJohnЛяхо
СаллFIBAпострубеEdgaЛевиэпохдекоSoup1784CrasПроиSamsRondSonyProwJardкруж4400ProfсложКита
сертJeanARAGМексаспиSwinBathсборинстнезазнакXaviPoweJustСтепEdenWoodBoscDeLoCommTrioНаум
СмолAbigБогддоповыбоофицЛитРСовеМалаГвозЧернАпелВаргHenrЕлисспраAdorлебепринBattBarbМила
FireMannMichHaraМатуРомаDigiМихеЛихачтенAndrКеллДанидругБрагTotaПрохTuttНикоБитнчитарабо
ПанюсолдтеатSterпереДмитМальSoupSoupSoupIronКозиСолоГолуМироудаэFeatСказЧерчКарлHelpклас
tuchkasкартпрак