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

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

Копия рейтинга звездами без возможности голосовать в этом рейтинге

Тема в разделе "Свободное общение", создана пользователем Frosty, 24 июн 2017.

24.06.17 в 12:30
24.06.17 в 15:28
13
1.620
0
  1. TopicStarter Overlay
    Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    935
    Лучших ответов:
    1
    Рейтинги:
    +187 / 18 / -0
    Сделал у себя на сайте общую оценку рейтинга в отдельный блок, вопрос, как теперь сделать общую оценку рейтинга в виде звед ? пример Screenshot

    Стандартный вывод есть, но дело в том что мне нужно вывести не в один блок а в соседний

    в php файле есть
    • {$rating}
    он и выводит общий рейтинг звездами, мне нужно его сделать что бы выводился в любое место в шаблоне полной новости

    Сразу сорян если не правильно сформулировал свой вопрос
     
    #1 Frosty, 24 июн 2017
    Последнее редактирование модератором: 24 июн 2017
  2. TopicStarter Overlay
    Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    935
    Лучших ответов:
    1
    Рейтинги:
    +187 / 18 / -0
    Забыл упомянуть, готов заплатить за реализацию. Так же требуется исправить еще один хак, на 11.3 не хочет работать
     
  3. Ботяра

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    0
    Лучших ответов:
    54
    Рейтинги:
    +711 / 74 / -0
    1. чтобы выводился числовой рейтинг?
    2. он итак выводится в любом месте шаблона полной/краткой новостей.

    Если просто значение выводить надо, то в файле show.full.php добавить
    PHP:
    $tpl->set'{vote-num-count}'$row['vote_num'] );
    после
    PHP:
    $tpl->set'[/rating]'"" );
    и в шаблоне выводить {vote-num-count}
     
  4. TopicStarter Overlay
    Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    935
    Лучших ответов:
    1
    Рейтинги:
    +187 / 18 / -0
    Не не числовой, а звездами, вот так Screenshot
     
  5. TopicStarter Overlay
    Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    935
    Лучших ответов:
    1
    Рейтинги:
    +187 / 18 / -0
    То есть в функции уже есть вывод, но он выводит все вместе через {rating}.

    <li class="current-rating" style="width:{$rating}%;">{$rating}</li>

    Вот он. Его хочу вывести отдельно в виде звезд
     
  6. Ботяра

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    0
    Лучших ответов:
    54
    Рейтинги:
    +711 / 74 / -0
    modules/functions.php
    рейтинг выводится
    PHP:
    function ShowRating($id$rating$vote_num$allow true) {
        global 
    $lang$config;

        if( !
    $config['rating_type'] ) {
            
            if( 
    $rating AND $vote_num $rating round( ($rating $vote_num), );
            else 
    $rating 0;
            
            if (
    $rating $rating 0;

            
    $rating $rating 20;
        
            if( !
    $allow ) {
            
                
    $rated = <<<HTML
    <div class="rating">
            <ul class="unit-rating">
            <li class="current-rating" style="width:
    {$rating}%;">{$rating}</li>
            </ul>
    </div>
    HTML;
            
                return 
    $rated;
            }
        
            
    $rated = <<<HTML
    <div id='ratig-layer-{$id}'><div class="rating">
            <ul class="unit-rating">
            <li class="current-rating" style="width:
    {$rating}%;">{$rating}</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><a href="#" title="
    {$lang['excellent']}" class="r5-unit" onclick="doRate('5', '{$id}'); return false;">5</a></li>
            </ul>
    </div></div>
    HTML;
        
            return 
    $rated;

        } elseif (
    $config['rating_type'] == "1") {
            
            if( 
    $rating $rating 0;
            
            if( 
    $allow $rated "<span id=\"ratig-layer-{$id}\" class=\"ignore-select\"><span class=\"ratingtypeplus ignore-select\" >{$rating}</span></span>";
            else 
    $rated "<span class=\"ratingtypeplus ignore-select\" >{$rating}</span>";
            
            return 
    $rated;
        
        } elseif (
    $config['rating_type'] == "2") {
            
            
    $extraclass "ratingzero";
            
            if( 
    $rating ) {
                
    $extraclass "ratingminus";
            }
            
            if( 
    $rating ) {
                
    $extraclass "ratingplus";
                
    $rating "+".$rating;
            }
            
            if( 
    $allow $rated "<span id=\"ratig-layer-{$id}\" class=\"ignore-select\"><span class=\"ratingtypeplusminus ignore-select {$extraclass}\" >{$rating}</span></span>";
            else 
    $rated "<span class=\"ratingtypeplusminus ignore-select {$extraclass}\" >{$rating}</span>";
            
            return 
    $rated;
            
        }
        
    }
    замени на
    PHP:
    function ShowRating($id$rating$vote_num$allow true) {
        global 
    $lang$config;

        if( !
    $config['rating_type'] ) {
            
            if( 
    $rating AND $vote_num $rating round( ($rating $vote_num), );
            else 
    $rating 0;
            
            if (
    $rating $rating 0;

            
    $rating1 str_replace",""."$rating );
            
    $rating $rating 20;
        
            if( !
    $allow ) {
            
                
    $rated = <<<HTML
    <div class="rating">
            <ul class="unit-rating">
            <li class="current-rating" style="width:
    {$rating}%;">{$rating}</li>
            </ul>
    <div class="rating_digits"><div class="rating_digits_1">Рейтинг: 
    {$rating1}/5 ({$vote_num} гол.)</div></div>
    </div>
    HTML;
            
                return 
    $rated;
            }
        
            
    $rated = <<<HTML
    <div>
        <div id='ratig-layer-
    {$id}'><div class="rating">
            <ul class="unit-rating">
            <li class="current-rating" style="width:
    {$rating}%;">{$rating}</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="bestRating"><a href="#" title="
    {$lang['excellent']}" class="r5-unit" onclick="doRate('5', '{$id}'); return false;">5</a></li>
            </ul>
    <div class="rating_digits"><div class="rating_digits_1">Рейтинг: 
    {$rating1}/5 ({$vote_num} гол.)</div></div>
    </div></div></div>
    HTML;
        
            return 
    $rated;

        } elseif (
    $config['rating_type'] == "1") {
            
            if( 
    $rating $rating 0;
            
            if( 
    $allow $rated "<span id=\"ratig-layer-{$id}\" class=\"ignore-select\"><span class=\"ratingtypeplus ignore-select\" >{$rating}</span></span>";
            else 
    $rated "<span class=\"ratingtypeplus ignore-select\" >{$rating}</span>";
            
            return 
    $rated;
        
        } elseif (
    $config['rating_type'] == "2") {
            
            
    $extraclass "ratingzero";
            
            if( 
    $rating ) {
                
    $extraclass "ratingminus";
            }
            
            if( 
    $rating ) {
                
    $extraclass "ratingplus";
                
    $rating "+".$rating;
            }
            
            if( 
    $allow $rated "<span id=\"ratig-layer-{$id}\" class=\"ignore-select\"><span class=\"ratingtypeplusminus ignore-select {$extraclass}\" >{$rating}</span></span>";
            else 
    $rated "<span class=\"ratingtypeplusminus ignore-select {$extraclass}\" >{$rating}</span>";
            
            return 
    $rated;
            
        }
        
    }
    очисти кеш и посмотри как стал выводится. Под звездами должно появится:
    2017-06-24_18-23-38.png
    далее уже вывод можно настроить в этом коде в html либо стилями выровнять всё как надо.
     
  7. TopicStarter Overlay
    Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    935
    Лучших ответов:
    1
    Рейтинги:
    +187 / 18 / -0
    Не, ты не так меня видимо понял, рейтинг для голосования у меня уже выведен, оценка выведена, теперь нужно вывести рядом с оценкой вот так вот звезды, Screenshot
     
  8. Ботяра

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    0
    Лучших ответов:
    54
    Рейтинги:
    +711 / 74 / -0
    как вариант тогда, в functions.php после выешеупомсянутой функции добавить:
    PHP:
    function ShowRatingDouble($id$rating$vote_num$allow true) {
        global 
    $lang$config;

        if( !
    $config['rating_type'] ) {
         
            if( 
    $rating AND $vote_num $rating round( ($rating $vote_num), );
            else 
    $rating 0;
         
            if (
    $rating $rating 0;

            
    $rating1 str_replace",""."$rating );
            
    $rating $rating 20;
     
            
    $rated = <<<HTML
        <div class='ratig-layer-{$id}'><div class="rating">
            <ul class="unit-rating">
            <li class="current-rating" style="width:
    {$rating}%;">{$rating}</li>
            <li><span title="
    {$lang['useless']}" class="r1-unit">1</span></li>
            <li><span title="
    {$lang['poor']}" class="r2-unit">2</span></li>
            <li><span title="
    {$lang['fair']}" class="r3-unit">3</span></li>
            <li><span title="
    {$lang['good']}" class="r4-unit">4</span></li>
            <li><span title="
    {$lang['excellent']}" class="r5-unit">5</span></li>
            </ul>
    <div class="rating_digits"><div class="rating_digits_1">Рейтинг: 
    {$rating1}/5 ({$vote_num} гол.)</div></div>
    </div></div>
    HTML;
     
            return 
    $rated;
      }
    }
    в show.full.php после
    PHP:
    $tpl->set'{rating}'ShowRating$row['id'], $row['rating'], $row['vote_num'], $user_group[$member_id['user_group']]['allow_rating'] ) );
    добавить
    PHP:
    $tpl->set'{rating-2}'ShowRatingDouble$row['id'], $row['rating'], $row['vote_num'], $user_group[$member_id['user_group']]['allow_rating'] ) );
    в шаблоне выводить {rating-2}

    PS если ошибка в функцию будет - напиши, возможно что где-то лишнюю ковычку не поставил... и добавь в конце ещё одну }
     
    #8 Ботяра, 24 июн 2017
    Последнее редактирование: 24 июн 2017
    • Нравится Нравится x 1
  9. TopicStarter Overlay
    Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    935
    Лучших ответов:
    1
    Рейтинги:
    +187 / 18 / -0

    Не вышло, php ошибку выдает
     
  10. Ботяра

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    0
    Лучших ответов:
    54
    Рейтинги:
    +711 / 74 / -0
    дописал после немного...
     
  11. TopicStarter Overlay
    Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    935
    Лучших ответов:
    1
    Рейтинги:
    +187 / 18 / -0
    Во, то что нужно! Женька, в скайпе отпиши мне ) а то не могу достучатсья до тебя уже пару дней
     
  12. TopicStarter Overlay
    Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    935
    Лучших ответов:
    1
    Рейтинги:
    +187 / 18 / -0
    Нужна еще одна доработка в существующем коде) нужно присвоить иконку к тегу $tpl->set( '{rating_nums}', str_replace(",",".",round($row['rating']/max(1,$row['vote_num']),1)));

    Если ни одного голоса нет, то выводится знак вопросика, но он у меня в виде иконки, то есть если голоса есть за новость то показывает вот так <span class="stareval-note friends">5</span> <span class="stareval-note friends">{rating_nums}</span>

    А если нет ни одного голоса, то он должен выводить <span class="stareval-note no-rating">?</span>
     
  13. Ботяра

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    0
    Лучших ответов:
    54
    Рейтинги:
    +711 / 74 / -0
    проверил все файлы ДЛЕ по коду - не находит в ней вообще ничего по упоминанию {rating_nums}!

    в каком файле взял этот код и как всё выводится?
     
  14. TopicStarter Overlay
    Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    935
    Лучших ответов:
    1
    Рейтинги:
    +187 / 18 / -0
    Да это сторонняя модификация )

    $tpl->set( '{rating_nums}', str_replace(",",".",round($row['rating']/max(1,$row['vote_num']),1)));
     
Яндекс.Метрика