Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Общий цифровой рейтинг

Хотелось бы создать так сказать общий цифровой рейтинг пользователя на основании количества сообщений, тем, репутации, очков рейтинга в профиле, и других цифровых показателей пользователя. Скажем 100 сообщений это 1 балл рейтинга, 10 тем - тоже 1 балл, и так далее, и что бы общий показатель выводить в тему.

Возможно ли такое реализовать?

Рекомендованные сообщения

Строка, вызывающая ошибку, находится в файле admin\sources\base\ipsController.php

 

$this->doExecute( $registry );

С новой правкой тоже не работает, выдает такую же ошибку:..

Исправил условие.
Исправил условие.

Все равно ошибку выдает :(

А не поможет, потому, что запрос к таблице profile_portal делается по дефолту, с этими правками, не только при сортировке по ключам 'pp_rating_real' и 'grating'.

 

Можно так - найти:

		$joins		= array();

	if ( $_queryPP )
	{
		$joins[] 	= array( 'from' => array( 'pfields_content' => 'p' ), 'where' => 'p.member_id=m.member_id', 'type' => 'left' );
		$joins[] 	= array( 'from' => array( 'profile_portal' => 'pp' ), 'where' => 'pp.pp_member_id=m.member_id', 'type' => 'left' );
	}

Заменить на:

		$joins = array(
		array(
			'from'	=> array( 'profile_portal' => 'pp' ),
			'where'	=> 'pp.pp_member_id=m.member_id',
			'type'	=> 'left'
			)
		);

	if ( $_queryPP )
	{
		$joins[]	= array( 'from' => array( 'pfields_content' => 'p' ), 'where' => 'p.member_id=m.member_id', 'type' => 'left' );
	}

Unknown column 'm.topics_started' in 'field list'

Это вообще откуда взялось? У Вас в таблице members есть столбец topics_started? Уверен, что нет

Это вообще откуда взялось? У Вас в таблице members есть столбец topics_started? Уверен, что нет

У меня установлен хук Number Of Topics Started :)

Странно, заработало в обоих случаях, и с методом от @Dmitriy427, и @newbie, но только с такой выборкой:

 

(FLOOR(m.posts/10) + FLOOR(pp.pp_reputation_points/10)

Т.е. не работает фильтр по статьям и темам (хотя компоненты устновлены и таблицы есть).

 

+ FLOOR(m.topics_started/10) + FLOOR(m.tutorials_articles/3)

Вы запрашиваете не существующие в таблице 'm.' ("members") поля.

Для таких запросов нужно дописывать $joins[] и обращаться к соответствующим таблицам.

Вы запрашиваете не существующие в таблице 'm.' ("members") поля.

Все, исправил, туплю уже :) На тестовом не был установлен этот хук )

 

Вопрос еще один по рейтингу - возможно ли присвоить ему переменную, чтобы можно было использовать для ограничения функций форума по количеству баллов рейтинга? Или, например, привязать Звания не к количеству сообщений, а именно к рейтингу?

привязать Звания не к количеству сообщений, а именно к рейтингу

Не подскажете, возможно ли такое реализовать, не переделывая глобально уже созданную систему рейтинга?

Чтобы именно система званий зависела не от кол-ва сообщений, а от баллов рейтинга.

Изменено пользователем Strategius

Ты ранги имеешь ввиду?

\admin\sources\base\ipsMember.php

 

if ( $member['posts'] >= $v['POSTS'] )

$member['posts'] замени на поле которое содержит твое значение в таблице members.

замени на поле которое содержит твое значение в таблице members

Да, только дело в том, что $grating - величина динамическая и рассчитывается по формуле, и в поле таблицы не заносится... А можно ли сделать, чтобы он либо кешировался, ибо заносился в поле таблицы?

Да, только дело в том, что $grating - величина динамическая и рассчитывается по формуле, и в поле таблицы не заносится... А можно ли сделать, чтобы он либо кешировался, ибо заносился в поле таблицы?

 

Так рассчитайте рейтинг сперва, а после сравнивайте.

Выше

			foreach( $rank_cache as $k => $v)

добавьте

$rating = $member['posts'] + $member['pp_reputation_points']; // Тут сами определите формулу

После это

if ( $member['posts'] >= $v['POSTS'] )

замените на

if ( $rating >= $v['POSTS'] )

Примерно так я уже пытался сделать, но не получалось ) Спасибо Вам большое! А как в настройках админки кол-во сообщений заменить на кол-во рейтинга? Чтобы вручную можно было настраивать.

 

Вот тут АЦ - Members > Member Ranks > Member Rank Set Up.

Изменено пользователем Strategius

А как в настройках админки кол-во сообщений заменить на кол-во рейтинга?

А какая разница? Читайте "Минимальное количество сообщений для получения звания" как "Минимальный рейтинг, необходимый для получения звания".

Вы же в коде кол-во постов меняете на свое значение. И не более.

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.