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

Рейтинг фотографий и просмотры

  • 20 декабря 2012 г.
  • Здравствуйте уважаемые форумчане! Не подскажите через какую функцию можно отобразить в фотогалерее числовой рейтинг от звездочек который и кол-во просмотров?
    • 20 декабря 2012 г.
    • Отобразить нужно в списке или подробном описании фото? Разные методы за это отвечают.
      • 20 декабря 2012 г.
      • Что полегче будет) Если можно оба варианта. Приоритетнее подробном опписании.
        • 20 декабря 2012 г.
        • Для карточки товара.

          Значение рейтинга всех элементов, в том числе и фото, хранится в таблице rating поле rating.

          Чтобы его выбрать для конкретной фотки в методе id() файла photo.model.php, примерно после

          Код
          $this->result["tags"] = $this->diafan->_tags->get();


          напишем

          Код
          $this->result["rating_number"] = DB::query_result("SELECT rating FROM {rating} WHERE module_name='photo' AND element_id=%d", $this->result['id']);


          Далее полученное значение нужно вывести в файле photo.view.id.php с помощью

          Код
          echo $result["rating_number"];


          Количества просмотров по умолчанию нет, поэтому нужно сначала их считать. В таблицу photo нужно добавить поле с типом INT с названием, например, count_show. Чтобы при просмотре фото значение поля увеличивалось, в том же методе id() файла photo.model.php напишем

          Код
          DB::query_result("UPDATE {photo} SET count_show = count_show + 1 WHERE id=%d", $this->result['id']);


          а чтобы получить текущее значение

          Код
          $this->result["count_show"] = DB::query_result("SELECT count_show FROM {photo} WHERE id=%d", $this->result['id']);


          ну и вывести photo.view.id.php с помощью

          Код
          echo $result["count_show"];


          Для списка фото подобные манипуляции нужно провести в методе list_ (если категории не включены в настройках) или list_category (если категории включены). В обоих методах есть цикл, начинающийся с

          Код
          foreach ($this->result["rows"] as $i => $row)


          Внутри него нужно выбрать значения, аналогично описанным выше способом для отдельного фото и выводить их в файле photo.view.list.php.

          • 21 декабря 2012 г.
          • Спасибо Андрей за столь большой и развернутый ответ!Буду сегодня правлять файлы.
          • 17 января 2013 г.
          • Здравствуйте еще раз Андрей! Вот выше манипуляции, которые Вы озвучили, они отображают только общий числовой рейтинг? Тобишь среднюю оценку? У меня сейчас на фотках, где 4,25, где 4,83. Получается общий числовой рейтинг. Мне надо кол-во проголосовавших
            • 18 января 2013 г.
            • Здравствуйте.
              Нужно добавить в таблицу rating еще одно поле и делать в него +1, когда кто-то голосует. Плюсовать нужно в файле rating/rating.ajax.php(57-74). Там пара запросов. Ну а выбирать значения точно также, как и среднюю оценку.

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум