Перейти к содержанию

Поиск сообщества

Показаны результаты для тегов 'рейтинг'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Invision Community
    • Дизайн и стилизация
    • Приложения и плагины
    • Помощь и поддержка
    • Миграция на Invision Community
    • IP.Board 3.x
    • Разработка
  • invisionbyte.ru
    • Обратная связь
    • Тестовые посты
    • Обо всём

Категории

  • Начало работы
  • Администрирование
    • Интернет-магазин (Commerce)
    • Страницы (Pages)
    • Форумы (Forums)
    • Галерея (Gallery)
    • Загрузки (Files)
    • Блоги (Blogs)
    • Пользователи
  • Модерирование
  • Кастомизация
    • Дизайн и стилизация
    • Локализация
  • Антиспам и безопасность
  • Приложения сторониих разработчиков
  • Разработчику
  • База знаний
  • Общее
    • Хостинг
    • Домены
    • Поисковая оптимизация

Категории

  • Новое сообщество
    • Лицензия
    • Системные требования
    • Установка
    • Обновление
    • Перенос с других платформ
  • Приложения
    • Форумы
    • Страницы
    • Галерея
    • Загрузки
    • Блоги
    • Календарь
    • Коммерция
  • Продвижение
    • Продвижение в социальных сетях
  • Общее использование
    • Знакомство
    • Общие настройки
    • Контент
    • Пользователи
    • Модерация
    • Авторизация через сайты
    • СЕО оптимизация
    • Управление файлами
  • Индивидуализация
    • Темы и дизайн
    • Языки и переводы
    • Редактор сообщений
    • Синтаксис шаблонов
    • CSS фреймворк
    • Javascript
    • Советы и трюки
  • Расширение возможностей
    • Конфигурация
    • Управление сервером
    • IPS Connect
  • Разработка
    • Приложения
    • Плагины
  • Сторонние приложения
    • Automation Rules

Категории

  • Темы и дизайн
  • Дополнительные возможности
  • Обновление Invision Community
  • Безопасность
  • Миграция на Invision Community
  • Ошибки

Категории

  • Русский язык для Invision Community
  • Плагины
  • Темы
  • Модули оплаты

Категории

  • Общее
  • Разработка
    • Приложения
    • Плагины
    • Расширения
  • Фреймворк
    • Ноды
    • Элементы контента
    • Комментарии
    • Отзывы
  • Пользователи и аутентификации
  • Другие возможности
    • Уведомления и E-mail
    • Формы
    • Коммерция
  • Документация разработчика
  • REST API
    • Система
    • Загрузки
    • Страницы
    • Форумы
    • Галерея
    • Календарь
    • Блоги
    • Магазин

Категории

  • Успешные истории и интервью с владельцами сообществ на Invision Community

Категории

  • Локализция Invision Community
  • Коммерция
  • Антиспам и безопасность
  • Темы и дизайн
  • Интерфейс
  • Модерирование
  • Дополнительно
  • Локализация

Блоги

  • Мой тестовый блог
  • IPS 4 и контентные проекты
  • Блог начинающего сисадмина или идеальный сервер для IPS4
  • Подробнее о IPS4
  • Продвижение городского форума на Invision Community

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


Адрес сайта

Найдено: 4 результата

  1. Павел

    Репутация темы

    Плагин отображает общую репутацию темы при просмотре форума. Репутация подсчитывается только у первого поста темы.
  2. Плагин отображает общую репутацию темы при просмотре форума. Репутация подсчитывается только у первого поста темы. Просмотр полной приложение
  3. При миграции с vBulletin на Invision Community администраторы часто встречаются вопросом миграции данных некогда популярного для vBulletin приложения - iTrader, позволяющего производить оценку сделок, в похожее приложение для Invision Community - Trader Feedback System. В данной статье мы разберёмся как всё же перенести эти данные. 1 этап - перенос общего рейтинга Сперва перенесём общее число рейтинга пользователей, который содержится в таблице user (vBulletin) в колонке itrader_total. Создадим php файл с произвольным именем и положим его в корень нашего установленного Invision Community и добавим в него следующий код: <?php require_once 'init.php'; $userRatings = iterator_to_array( \IPS\Db::i()->select( 'username, itrader_total', 'user' ) ); foreach ( $userRatings as $k => $v ) { if ( $v['itrader_total'] != 0 ) { if ( $v['itrader_total'] > 0 ) { \IPS\Db::i()->update('core_members', array('feedb_pos' => $v['itrader_total']), array('name=?', $v['username'])); } if ( $v['itrader_total'] < 0 ) { \IPS\Db::i()->update('core_members', array('feedb_neg' => $v['itrader_total']), array('name=?', $v['username'])); } } } Всё просто. Здесь мы подключаемся к базе Invision Community, добавляем в массив поля имени и рейтинг из таблицы user (ПРИМЕЧАНИЕ: таблица user должна быть в той же базе, в которую установлен Invision Community). Путём конструкции foreach проходим весь массив и добавляем рейтинг в поле feedb_pos таблицы core_members, если рейтинг положительный и в поле feedb_neg той же таблицы, если рейтинг ниже нуля. 2 этап - перенос комментариев к сделке Теперь задача чуть посложнее. Нам нужно добавить сущности сделок в таблицу feedback_feedback для Trader Feedback System. Для этого замените код в нашем произвольном php файле (или создайте новый файл) на следующий код: <?php require_once 'init.php'; foreach ( \IPS\Db::i()->select( '*', 'itrader_comments' ) as $row ) { try { /* Находим отправителя */ $sender_name = \IPS\Db::i()->select('username', 'user', array('userid=?', $row['userid']))->first(); $sender_id = \IPS\Db::i()->select('member_id', 'core_members', array('name=?', $sender_name))->first(); /* Находим получателя */ $itrader = \IPS\Db::i()->select('*', 'itrader', array('rateid=?', $row['rateid']))->first(); $receiver_name = \IPS\Db::i()->select('username', 'user', array('userid=?', $itrader['rateduserid']))->first(); $receiver_id = \IPS\Db::i()->select('member_id', 'core_members', array('name=?', $receiver_name))->first(); } catch( \Exception $e ){} /* Рейтинг */ if ( $itrader['rating'] == 0 ) { $rating = 1; } elseif ( $itrader['rating'] == -1 ) { $rating = 0; } else { $rating = 2; } \IPS\Db::i()->insert( 'feedback_feedback', array( 'fb_id' => NULL, 'fb_date' => $row['dateline'], 'fb_sender_id' => $sender_id, 'fb_receiver_id' => $receiver_id, 'fb_ip' => $row['ipaddress'], 'fb_comment' => $row['comment'], 'fb_rating' => $rating, 'fb_content_id' => 117471, 'fb_type' => 0, 'fb_class' => 'IPS\forums\Topic' ) ); } Поскольку после конвертирования пользователи получили другие ID, придётся выполнить некоторые манипуляции по соответствую ID старого пользователя новому. Здесь мы: Находим имя получателя из по его id в vBulletin; Находим id по имени в Invision Community. Тоже самое с получателем. Определяем рейтинг, т.к. у этих приложений разная система подсчёта. Делаем инсерты в таблицу feedback. siv1987 предложил (за что ему огромное спасибо) упростить данный код и сделать всё одним запросом: \IPS\Db::i()->select( 'c.*, m.member_id as sender_id, m2.member_id as receiver_id, u.username as sender_name, u2.username as receiver_name, i.rating', array( 'itrader_comments', 'c' ) ) ->join( array( 'user', 'u' ), 'u.userid=c.userid' ) ->join( array( 'core_members', 'm' ), 'm.name=u.username' ) ->join( array( 'itrader', 'i' ), 'i.rateid=c.rateid' ) ->join( array( 'user', 'u2' ), 'u2.userid=i.rateduserid' ) ->join( array( 'core_members', 'm2' ), 'm2.name=u2.username' ) Если данных в таблице itrader_comments много, можно воспользоваться одним запросом, что значительно уменьшит нагрузку на сервер mysql. 3 этап - пересчёт данных Для этого запустим задачу пересчёта данных, которая есть в приложении. Опять же создадим php файл и запустим его из браузера: <?php require_once 'init.php'; \IPS\Task::queue( 'feedback', 'RecountFeedback' ); На этом перенос завершён!
  4. Рейтинги позволяют пользователям оценивать элементы контента из 5 или 10 (в зависимости от настроек) звёзд. Как реализовать рейтинги Во-первых, вам необходимо реализовать интерфейс рейтингов в своей модели контента, например: implements \IPS\Content\Ratings Далее добавьте следующие ключи в свойство $databaseColumnMap вашей модели. Это необязательно, но добавление их сделает ваше приложение намного более эффективным при возврате среднего рейтинга при просмотре. Как обычно, значение каждого ключа должно быть именем столбца базы данных, который содержит значение. rating_average - текущий средний рейтинг элемента. rating_total -общая сумма всех рейтингов элемента. rating_hits - количество полученных голосов элементом. Наконец, отобразите рейтинг в шаблоне просмотра контента. Например: {$item->rating()|raw} Дополнительные доступные методы модели boolean canRate( [ \IPS\Member $member ] ) Указывает, имеет ли пользователь разрешение на оценку этого элемента. $member (\IPS\Member, необязательный) - Пользователь, чьи разрешения должны быть проверены. По умолчанию используется текущий авторизованный пользователь. float averageRating() Возвращает средний рейтинг элементов (общий рейтинг, деленный на количество голосов). string rating() Отображает значки звездочек, представляющие текущий средний рейтинг. Если у пользователя есть разрешение на оценку элемента, эти значки будут интерактивными, позволяя пользователю кликнуть, чтобы оценить.
×
×
  • Создать...

Важная информация

Используя наш сайт вы соглашаетесь с нашей Политикой конфиденциальности