Редактор темы

Вопрос? Рейтинг в процентах

  • Автор темы Автор темы Burial
  • Дата начала Дата начала

Burial

Местный
Регистрация
30 Сен 2015
Сообщения
2.015
Рейтинг реакций
231
Баллы
63
Возраст
43
1/3
Автор темы
Как сделать, чтобы рейтинг отображался в процентах (87%), а не в цифрах типа: +5
 
Burial тип рейтинга +/-?
Если да, то в show.*.php после
PHP:
$tpl->set( '[/rating]', "" );
добавить
PHP:
$rm = ($row['vote_num'] - $row['rating'])/2;
$rp = $row['rating'] + $rm;
$rating_proc = $rp+$rm;
$tpl->set( '{rating_proc}', $rating_proc);
В шаблоне уже выводить {rating_proc}
 
Автор темы
Нет, имел виду обычный, без правок php. Как reddis подсказал...

А можешь подсказать в другом случае. У меня при аякс загрузке новостей (Загрузить ещё), в следующих коротких новостях отображается не процент, а числа типа: +2244. Если обычно переключать страницы, то все нормально отображается: 65%, 97% ...
Если вместо своего libs.js вставлю от этого Dark light tube - видео шаблон в двух цветах, то всё нормально.
Вот мой JS файл:
Код:
$(document).ready(function(){
    
    $("body").addClass("js");
    $('body').on('click', '.fav-guest', function() {
    DLEalert("Регистрируйтесь, и вы сможете добавлять видео, создавать свои закладки, оценивать и многое другое!", 'Необходима регистрация');
    return false;
    });
    
    $('.sorter').each(function(){
        var a = $(this),
            b = a.find('li[class] a').html();
        a.append('<span>'+b+'<span class="fa fa-angle-down"></span></span>');
        a.click(function() {
            $(this).find('form').fadeToggle(100);
        });   
    });
    $('#h-fav').html($('#l-fav').html());
    $('.th-rate-in').wRatePercent();
    
    $('.f-rate').each(function(){
        var rate = $(this),
            rcounts = rate.find('.rate-counts'),
            rdata = rate.find('.rate-data'),
            rrate = parseInt(rdata.find('.ratingtypeplusminus').text(), 10),
            rvote = parseInt(rdata.find('span[id*=vote]').text(), 10);
        rcounts.prepend('<div><span class="rate-perc">0%</span><span class="rate-likes">(0/0)</span></div><div class="rate-bar"><div class="rate-fill"></div></div>');
        if ( rvote >= rrate && rvote > 0 ) {
            var m = (rvote - rrate)/2,
                p = rvote - m,
                fill = Math.round(p/rvote*100);
                rate.find('.rate-fill').css({'width':''+fill+'%'});
                rcounts.find('.rate-likes').html('('+p+'/'+m+')');
                rcounts.find('.rate-perc').html(fill+'%');
        };
    });
    
    $("body").on("click","#pagi-load a",function(){var a=$(this).attr("href"),b=$(this).offset().top-200;return void 0!==a&&$.ajax({url:a,beforeSend:function(){ShowLoading("")},success:function(c){$("#bottom-nav").remove(),$("#dle-content").append($("#dle-content",c).html()),$("#dle-content").after($("#bottom-nav")),$(".t-rate:not(.wp)").wRatePercent(),window.history.pushState("","",a),$("html, body").animate({scrollTop:b},800),HideLoading("")},error:function(){HideLoading(""),alert("что-то пошло не так")}}),!1})
    
    $('body').on('click', '.fav-guest', function() {
        DLEalert("Регистрируйтесь, и вы сможете добавлять видео, создавать свои закладки, оценивать и многое другое!", 'Необходима регистрация');
        return false;
    });
    
    $('.btn-scr').click(function(){
        $('.f-screens').fadeToggle(0);
    });
    
    $('.btn-dl:has(ul) > a').click(function() {
        $(this).next('ul').fadeToggle(0);
        return false;
    });   
    
    $('body').append('<div class="close-overlay" id="close-overlay"></div><ul class="side-panel" id="side-panel"></ul>');
    $('.h-menu, ul.side-bcc').each(function() {
        $($(this).html()).appendTo('#side-panel');
    });   
    $(".btn-menu").click(function(){
        $('#side-panel').addClass('active');
        $("#close-overlay").fadeIn(200);
    });
    $(".close-overlay").click(function(){
        $('#side-panel').removeClass('active');
        $('#close-overlay').fadeOut(200);
    });
    
    $("#login-box").dialog({
        autoOpen: false,
        modal: true,
        show: 'fade',
        hide: 'fade',
        width: 320
    });

    $('.show-login').click(function(){
        $('#login-box').dialog('open');
    });
    
    $('#ac-av').html($('#lb-ava').html());
    
    $(".add-comm-btn").click(function(){
        $("#add-comm-form").slideToggle(200);
    });
    $(".reply").click(function(){
        $("#add-comm-form").slideDown(200);
    });
    $('body').on('click','.ac-textarea textarea, .fr-wrapper',function(){
        $('.add-comm-form').addClass('active').find('.ac-protect').slideDown(400);
    });
    $('.lb-soc a, .ac-soc a').on('click',function(){
       var href = $(this).attr('href');
       var width  = 820;
       var height = 420;
       var left   = (screen.width  - width)/2;
       var top   = (screen.height - height)/2-100;   

       auth_window = window.open(href, 'auth_window', "width="+width+",height="+height+",top="+top+",left="+left+"menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no");
       return false;
    });
    $('#dle-content > #dle-ajax-comments').appendTo($('#full-comms'));

    $('body').append('<div id="gotop"><span class="fa fa-chevron-up"></span></div>');
    var $gotop=$('#gotop');
    $(window).scroll (function () {
        if ($(this).scrollTop () > 300) {$gotop.fadeIn(200);
        } else {$gotop.fadeOut(200);}
    });   
    $gotop.click(function(){
        $('html, body').animate({ scrollTop : 0 }, 'slow');
    });
    
});

    function doRateLD( rate, id ) {
        ShowLoading('');
        $.get(dle_root + "engine/ajax/rating.php", { go_rate: rate, news_id: id, skin: dle_skin, user_hash: dle_login_hash }, function(data){
            HideLoading('');
            if ( data.success ) {
                var rating = data.rating;
                rating = rating.replace(/&lt;/g, "<");
                rating = rating.replace(/&gt;/g, ">");
                rating = rating.replace(/&amp;/g, "&");
                $("#ratig-layer-" + id).html(rating);
                $("#vote-num-id-" + id).html(data.votenum);
                var rt = parseInt($(rating).text()),
                    m = (data.votenum - rt)/2,
                    p = data.votenum - m,
                    fill = Math.round(p/data.votenum*100);
                    fRate = $("#f-rate-" + id);
                fRate.find('.rate-fill').css({'width':''+fill+'%'});
                fRate.find('.rate-likes').html('('+p+'/'+m+')');
                fRate.find('.rate-perc').html(fill+'%');
            } else if (data.error) {DLEalert ( data.errorinfo, dle_info );}
        }, "json");
    };

jQuery.fn.wRatePercent = function(){
    return this.each(function() {
        var a = $(this);
        var b = parseInt(a.find('.ratingtypeplusminus').text(),10);
        var c = parseInt(a.find('span[id*=vote]').text(),10);
        if ( c >= b && c > 0 ) {
        var t = Math.round((c - (c - b)/2)/c*100);
        a.text(t+'%');
        } else {a.text('0%');};
        a.addClass('wp');
    });
};


/* end */
 
Burial тип рейтинга +/-?
Если да, то в show.*.php после
PHP:
$tpl->set( '[/rating]', "" );
добавить
PHP:
$rm = ($row['vote_num'] - $row['rating'])/2;
$rp = $row['rating'] + $rm;
$rating_proc = $rp+$rm;
$tpl->set( '{rating_proc}', $rating_proc);
В шаблоне уже выводить {rating_proc}

Чет не хочет работать этот хак, кэш чистил все без толку, показывает цифры
Может это неполный код?
 
Чет не хочет работать этот хак, кэш чистил все без толку, показывает цифры
Может это неполный код?
например вместо 10 в рейтинге сколько он показывает? тут остается простая математика, и если что-то не так отображает, то это легко можно привести к нужному виду, преобразовав $rating_proc в нужный вид.
 
например вместо 10 в рейтинге сколько он показывает? тут остается простая математика, и если что-то не так отображает, то это легко можно привести к нужному виду, преобразовав $rating_proc в нужный вид.
как привести в нужный вид? подскажи пожалуйста
 
как привести в нужный вид? подскажи пожалуйста
Код:
$rating_proc = $rp+$rm;
это простая математика сложения двух чисел, отрицательного и положительного рейтинга! В зависимости от того, в каком виде выведены значение рейтинга, можно изменить его в нужный вид, например,
Код:
$rating_proc = ($rp+$rm)*10;
тем самым мы наш рейтинг умножим на 10.
 
Код:
$rating_proc = $rp+$rm;
это простая математика сложения двух чисел, отрицательного и положительного рейтинга! В зависимости от того, в каком виде выведены значение рейтинга, можно изменить его в нужный вид, например,
Код:
$rating_proc = ($rp+$rm)*10;
тем самым мы наш рейтинг умножим на 10.

загвоздка в том, что через {rating_proc} у меня выводиться количество проголосовавших и только, мне нужен рейтинг в процентах, как этого добиться непонятно, я в php, как и в математике мягко говоря не вывожу
 
вместо 117, получилось 116.23931623932
 
теперь просто 116
 
как выяснилось, это ошибка с моей стороны была, а byroot был прав, спасибо большое за помощь, все работает как надо
 
Автор темы
Так не получилось чёт ) Всё равно также подгружает следующие новости: +3959...
Суть в том, что нужно перезапустить функцию после подгрузки. В коде выше было так. Значит код напутан. Скинь сайт в лс.
 
Автор темы
В общем redissx помог мне ) Там ещё class в shorstory у рейтинга надо было поправить немного.
 
Здравствуйте! Скажите пожалуйста куда вставить код round($rating_proc,0) , чтобы сработало округление цифры???

там уже делай округление round($rating_proc,0)
Здравствуйте! Скажите пожалуйста куда вставить код round($rating_proc,0) , чтобы сработало округление цифры???
 
Последнее редактирование модератором:

Похожие темы Последние темы Популярные темы

Назад
Сверху