Перейти к публикации
View in the app

A better way to browse. Learn more.

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

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

Хотелось бы создать так сказать общий цифровой рейтинг пользователя на основании количества сообщений, тем, репутации, очков рейтинга в профиле, и других цифровых показателей пользователя. Скажем 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

Опубликовано:

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

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

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

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

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.