Вход • Регистрация

Оценка в отзывах звездочками

  • 19 ноября 2017 г.
  • Доброго всем времени суток.
    Сломала уже мозг, как вывести оценку не цифрами, а звездочками, типа как рейтинг сделан.

    Суть: js не нужен, как в рейтинге.
    Оценку клиенты ставят как обычно, но вот при выводе готового результата необходимо отобразить звездочки.

    Вывод всех полей в рейтинге происходит при помощи файла reviews.view.id.php
    Но в нем немного загадочная конструкция

    Код
    foreach ($result["params"] as $param)
    {
    echo '<div class="reviews_param'.($param["type"] == 'title' ? '_title' : '').'">'; //- тут потерла вывод имени поля. Далее идет вывод самих значений.
    if (! empty($param["value"]))
    {
    echo '<span class="reviews_param_value">';
    switch($param["type"])
    {
    case "attachments":
    foreach ($param["value"] as $a)
    {
    if ($a["is_image"])
    {
    if($param["use_animation"])
    {
    echo ' <a href="'.$a["link"].'" rel="prettyPhoto[gallery'.$result["id"].'reviews]"><img src="'.$a["link_preview"].'"></a> <a href="'.$a["link"].'" rel="prettyPhoto[gallery'.$result["id"].'reviews_link]">'.$a["name"].'</a>';
    }
    else
    {
    echo ' <a href="'.$a["link"].'"><img src="'.$a["link_preview"].'"></a> <a href="'.$a["link"].'">'.$a["name"].'</a>';
    }
    }
    else
    {
    echo ' <a href="'.$a["link"].'">'.$a["name"].'</a>';
    }
    }
    break;

    case "images":
    foreach ($param["value"] as $img)
    {
    echo '<img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["title"].'">';
    }
    break;

    case 'url':
    echo '<a href="'.$param["value"].'">'.$param["value"].'</a>';
    break;

    case 'email':
    echo '<a href="mailto:'.$param["value"].'">'.$param["value"].'</a>';
    break;

    default:
    if (is_array($param["value"]))
    {
    foreach ($param["value"] as $p)
    {
    if ($param["value"][0] != $p)
    {
    echo ', ';
    }
    if (is_array($p))
    {
    echo $p["name"];
    }
    else
    {
    echo $p;
    }
    }
    }
    else
    {
    echo $param["value"];
    }
    break;
    }
    echo '</span>';
    }
    echo '</div>';
    }


    Есть у кого-то мысли? Или тут нужен супер-сложный допил?
    • 19 ноября 2017 г. , редакция: 19 ноября 2017 г.
    • Получаем значение в балла = 4
      запускаем цикл до 5
      и пока значение меньше или равно баллу (4) выводим JPG звёздочки красного цвета
      а если больше этого значения - выводим JPG звёздочки серого цвета///

      Или что вы хотели?
      • 19 ноября 2017 г.
      • Основная проблема в получении значения.

        В массиве перебираются все имеющиеся поля и по порядку выводятся.
        Скрыть ненужные значения легко, а вот выцепить оценку и вывести ее отдельным циклом не получается, т.к. она не имеет собственной переменной.
        • 19 ноября 2017 г.
        • Лучше ссылку на документацию по модулю...
          • 19 ноября 2017 г.
          • Вот оно

            Выводится стандартным тегом <insert name="show" module="reviews">.

            Вставлено в shop.view.id.php
            Т.е. получаем отзывы о товарах в итоге.

            Здесь выводится сама форма для отзыва и непосредственно оставленные ранее отзывы.
  • 19 ноября 2017 г.
  • Александра, а докрутите пожалуйста, как вместо "Ж" и "*" выводить желтые и серые звезды?
    • 19 ноября 2017 г.
    • Пораскинул мозгами и сделал (все самое важное сделал Дмитрий), спасибо большое!
    • 20 ноября 2017 г.
    • На будущее тем, кто решит воспользоваться.

      Код
      if($i<=$ii){
      echo '<img src="../img/rpl.png">'; //желтая звездочка
      }else{
      echo '<img src="../img/rmin.png">'; //серая неактивная звездочка
      }


      ЖЖ и прочее заменяем картинками звездочек.

      Я не стала долго размышлять и взяла звездочки из модуля "рейтинг", чтобы красивенько выглядело (одинаково везде).
      • 20 ноября 2017 г.
      • Лучше туда вставить <span class="star yellow"></span> и <span class="star gray"></span> и на них уже повесить web-шрифты.
        В отличие от изображений, они масштабируются, плавно реагируют на наведение (transition и transform).
        • 20 ноября 2017 г.
        • Встречный вопрос: зачем нужны шрифты картинкам и плавность реагирования? На что реагирования?
          • 20 ноября 2017 г.
          • Он имеет в виду, что когда человек будет ставить оценку, при наведении на рейтинг, он красиво будет переливаться от серого к золотому.
          • 20 ноября 2017 г.
          • Для красоты. Глифы в админке в полный рост используются по моему уже картинок и не осталось совсем.
            Ещё такая фишка, если отключить отображение картинок на странице глифы всё равно будут отображаться как и положено тексту. Правда так уже никто не делает, а представьте что до этого додумались бы в 2002 году, вот тогда это была бы тема.
            А реагировать например на наведение курсора.
  • 20 ноября 2017 г.
  • Ну, вы товарищи даёте.
    Переливаться они у вас может и будут при наведении в модуле "рейтинг".

    В данном конкретном случае рейтинг звездочками никто не ставит. Голосование происходит тычком по радио-кнопочкам, стандартным.
    Звездочки выводятся в уже готовых отзывах.

    Собственно, в задаче требовалось именно это.
    • 20 ноября 2017 г.
    • Александра, звёзды и прочие фигуры тут ни при чём. У вас в примере в комментариях про них написано, поэтому я в примере и поставил "star".

      У вас в примере 2 изображения используется. Если, например, данные отправляются по AJAX, то при первом использовании у посетителя изображение ещё должно будет подгрузиться (у вас же в примере не спрайт). Это бывает заметно. А web-шрифтов много разных, там под все задачи есть значки, можно свои сделать.

      "Переливаться" они будут где угодно. При наведении, клике и прочем. Радиокнопки - тоже кнопки.
      • 20 ноября 2017 г.
      • Так у нас нет отправки данных. У нас есть вывод готовых результатов из базы.

        Цитата
        под все задачи есть значки

        Вот эта тема интересная, но не относящаяся к данному вопросу.

        У меня на новой версии диафана, где все картинки заменены на значки, отображаются в виде квадратиков. Ужасно выглядит. Как лечить, не знаете?
        • 20 ноября 2017 г.
        • Используйте SVG, и никаких проблем.
          Вот Вам кое что из моего фреймворка - https://nikatin.com/moi-narabotki/ikonki/

          Если захотите использовать, могу дать ссылки для подключения. Правда пока еще документация не готова))
          • 20 ноября 2017 г.
          • Степан, добавьте себе в набор. Жирный символ рубля не под все случаи подходит.
            • 21 ноября 2017 г.
            • Павел, спасибо. Добавлю))

              Вас заинтересовала моя наработка?)
              • 21 ноября 2017 г. , редакция: 21 ноября 2017 г.
              • Так я от туда и скачал большинство)))))
                Просто у меня немного другая политика под значением "нагрузка", не будем об этом)

                ___________
                Негативно отношусь к шрифтовым иконкам. Поэтому SVG.
              • 22 ноября 2017 г.
              • Цитата
                Так я от туда и скачал большинство)))))
                Я заметил.
                Цитата
                Негативно отношусь к шрифтовым иконкам.
                Поподробнее пожалуйста.
              • 22 ноября 2017 г.
              • Цитата
                Цитата Степан (idxdoc) от Сегодня, 20:22Негативно отношусь к шрифтовым иконкам.Поподробнее пожалуйста.

                Потому что шрифтовые иконки это хак, сейчас повсеместно есть поддержка формата svg, вот его и надо использовать.
              • 22 ноября 2017 г.
              • У шрифтов вечная проблема.
                Пока шрифт не загружен, вместо иконок кракозябры.
                Вообще есть целая статья про это.

                Несомненно у них есть плюсы, быстрее можно менять цвет, меньше кода, также все увеличивается без потери качества, но на фоне минусов я остановился на SVG через CSS. Получается не маленький код, но зато я в нем уверен.

                Конечно же сейчас я мало что сказал, но я уделил этому выбору 2 целых дня, читая множество всего и практикуя на личном опыте и то и то.
        • 20 ноября 2017 г. , редакция: 20 ноября 2017 г.
        • Цитата
          У меня на новой версии диафана, где все картинки заменены на значки
          А у вас - это на чём (ОС, браузер, версии)? Шрифты либо не скачиваются, либо не поддерживаются.

          Странно конечно. Сейчас даже утюг способен шрифты отобразить. На Win7 символ рубля из стандартного набора шрифтов вот не отображается, т.к. был добавлен в наборы после 2007-го, по-моему. А web-шрифты прекрасно работают.
          • 20 ноября 2017 г. , редакция: 20 ноября 2017 г.
          • В файле fontawesome.css присутствует достаточно много значков, которые используются на диафане.
            Все, что были использованы в дефолте, мне пришлось заменить обычными картинками.

            У меня лично хром последней версии, ОС семерка.
            У клиента - не знаю, какие версии.

            П.С. Перерыла весь интернет в свое время по поводу данного вопроса. Ничего не нашла.
            П.П.С. Кстати, на демке такого сейчас не наблюдаю. А вот на новом сайте 2 недели назад наблюдала.

            Причем происходит такое выборочно.
            Вот в админке того самого сайта в верхней панели иконки прекрасно вижу.
  • 28 мая 2018 г.
  • Добрый день, знатоки!
    Может быть кто-то сталкивался с задачей. В карточке товара есть рейтинг (оценки). Сама оценка выводится путем общего суммирования голосов. Каким образом можно вывести среднюю оценку (с округлением до десятых или сотых)?
    Скриншот того, что есть:


    Нашел modules/rating/views/rating.view.get.php, а именно:
    Код
    if($result["full"] && $result["count_votes"])
    {
    echo '<br>'.$this->diafan->_('Общий рейтинг').': '.$result["overall_rating"]
    .'<br>'.$this->diafan->_('Оценок').': '.$result["count_votes"];
    }


    Но что с этим делать не знаю.

Новости

  • Вчера, 09:05
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 
  • 15 декабря 2023 г.
  • Подводим итоги 2023 года. Выпустили новую сборку DIAFAN.CMS 7.1.1, вводим новые тарифы на аренду сайта и коммерческую поддержку и автообновления с января 2024 г., строим планы на будущий год.