Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

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

Тема в разделе "Вопросы- ответы", создана пользователем Burial, 22 янв 2018.

22.01.18 в 21:43
13.04.20 в 19:00
24
2.877
0
  1. TopicStarter Overlay
    Burial

    Burial Местный

    Регистрация:
    30 сен 2015
    Сообщения:
    1.996
    Лучших ответов:
    2
    Рейтинги:
    +464 / 80 / -0
    Как сделать, чтобы рейтинг отображался в процентах (87%), а не в цифрах типа: +5
     
  2. byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.295
    Лучших ответов:
    54
    Рейтинги:
    +5.206 / 74 / -0
    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}
     
    • Нравится Нравится x 2
  3. redissx

    redissx Бывалый

    Регистрация:
    23 сен 2015
    Сообщения:
    885
    Лучших ответов:
    7
    Рейтинги:
    +1.073 / 173 / -0
    • Нравится Нравится x 2
  4. TopicStarter Overlay
    Burial

    Burial Местный

    Регистрация:
    30 сен 2015
    Сообщения:
    1.996
    Лучших ответов:
    2
    Рейтинги:
    +464 / 80 / -0
    Нет, имел виду обычный, без правок 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 */
     
  5. ifreez

    ifreez Бывалый

    Регистрация:
    16 янв 2017
    Сообщения:
    125
    Лучших ответов:
    0
    Рейтинги:
    +36 / 3 / -0
    Чет не хочет работать этот хак, кэш чистил все без толку, показывает цифры
    Может это неполный код?
     
  6. byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.295
    Лучших ответов:
    54
    Рейтинги:
    +5.206 / 74 / -0
    например вместо 10 в рейтинге сколько он показывает? тут остается простая математика, и если что-то не так отображает, то это легко можно привести к нужному виду, преобразовав $rating_proc в нужный вид.
     
  7. ifreez

    ifreez Бывалый

    Регистрация:
    16 янв 2017
    Сообщения:
    125
    Лучших ответов:
    0
    Рейтинги:
    +36 / 3 / -0
    как привести в нужный вид? подскажи пожалуйста
     
  8. byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.295
    Лучших ответов:
    54
    Рейтинги:
    +5.206 / 74 / -0
    Код:
    $rating_proc = $rp+$rm;
    это простая математика сложения двух чисел, отрицательного и положительного рейтинга! В зависимости от того, в каком виде выведены значение рейтинга, можно изменить его в нужный вид, например,
    Код:
    $rating_proc = ($rp+$rm)*10;
    тем самым мы наш рейтинг умножим на 10.
     
  9. ifreez

    ifreez Бывалый

    Регистрация:
    16 янв 2017
    Сообщения:
    125
    Лучших ответов:
    0
    Рейтинги:
    +36 / 3 / -0
    загвоздка в том, что через {rating_proc} у меня выводиться количество проголосовавших и только, мне нужен рейтинг в процентах, как этого добиться непонятно, я в php, как и в математике мягко говоря не вывожу
     
  10. byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.295
    Лучших ответов:
    54
    Рейтинги:
    +5.206 / 74 / -0
    ifreez попробуй так:
    Код:
    $rp/(($rp+$rm)/100)
     
    • Нравится Нравится x 1
  11. ifreez

    ifreez Бывалый

    Регистрация:
    16 янв 2017
    Сообщения:
    125
    Лучших ответов:
    0
    Рейтинги:
    +36 / 3 / -0
    вместо 117, получилось 116.23931623932
     
  12. byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.295
    Лучших ответов:
    54
    Рейтинги:
    +5.206 / 74 / -0
    там уже делай округление round($rating_proc,0)
     
    • Нравится Нравится x 1
  13. ifreez

    ifreez Бывалый

    Регистрация:
    16 янв 2017
    Сообщения:
    125
    Лучших ответов:
    0
    Рейтинги:
    +36 / 3 / -0
    теперь просто 116
     
  14. redissx

    redissx Бывалый

    Регистрация:
    23 сен 2015
    Сообщения:
    885
    Лучших ответов:
    7
    Рейтинги:
    +1.073 / 173 / -0
    Нужно
    $(".t-rate:not(.wp)").wRatePercent()
    заменить на
    $(".th-rate-in:not(.wp)").wRatePercent()
     
    • Нравится Нравится x 2
    • Полезно Полезно x 1
  15. ifreez

    ifreez Бывалый

    Регистрация:
    16 янв 2017
    Сообщения:
    125
    Лучших ответов:
    0
    Рейтинги:
    +36 / 3 / -0
    как выяснилось, это ошибка с моей стороны была, а byroot был прав, спасибо большое за помощь, все работает как надо
     
  16. TopicStarter Overlay
    Burial

    Burial Местный

    Регистрация:
    30 сен 2015
    Сообщения:
    1.996
    Лучших ответов:
    2
    Рейтинги:
    +464 / 80 / -0
    Так не получилось чёт ) Всё равно также подгружает следующие новости: +3959...
     
  17. redissx

    redissx Бывалый

    Регистрация:
    23 сен 2015
    Сообщения:
    885
    Лучших ответов:
    7
    Рейтинги:
    +1.073 / 173 / -0
    Суть в том, что нужно перезапустить функцию после подгрузки. В коде выше было так. Значит код напутан. Скинь сайт в лс.
     
    • Нравится Нравится x 1
  18. TopicStarter Overlay
    Burial

    Burial Местный

    Регистрация:
    30 сен 2015
    Сообщения:
    1.996
    Лучших ответов:
    2
    Рейтинги:
    +464 / 80 / -0
    В общем redissx помог мне ) Там ещё class в shorstory у рейтинга надо было поправить немного.
     
  19. fluppik

    fluppik Зелёный

    Регистрация:
    11 фев 2020
    Сообщения:
    4
    Лучших ответов:
    0
    Рейтинги:
    +1 / 0 / -0
    Здравствуйте! Скажите пожалуйста куда вставить код round($rating_proc,0) , чтобы сработало округление цифры???

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

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.295
    Лучших ответов:
    54
    Рейтинги:
    +5.206 / 74 / -0
    вместо $rating_proc
     
Похожие темы
  1. kuchen
    Ответов:
    8
    Просмотров:
    1.801
  2. Serhii
    Ответов:
    16
    Просмотров:
    2.385
  3. Roman.U
    Ответов:
    13
    Просмотров:
    1.030
  4. vasilijs
    Ответов:
    4
    Просмотров:
    846
  5. John
    Ответов:
    1
    Просмотров:
    5.165
Загрузка...
Яндекс.Метрика