Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Haktar

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

Recommended Posts

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

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

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

  • Upvote 1

Share this post


Link to post
Share on other sites

Все работает, спасибо большое!

Share this post


Link to post
Share on other sites

А возможно ли добавить этот рейтинг в форум как репутацию, чтобы он кэшировался в базе данных и по его переменной можно было создавать условия доступа к функциям форума?

 

Например:

 

<if test="$member['grating'] > 1">Отображение кнопки, если рейтинг больше единицы</if>

Share this post


Link to post
Share on other sites
А возможно ли добавить этот рейтинг в форум как репутацию, чтобы он кэшировался в базе данных и по его переменной можно было создавать условия доступа к функциям форума?

Не всегда и не везде доступны данные.

Например:

 

Вообще можно так

Отображение кнопки, если рейтинг больше единицы

  • Upvote 2

Share this post


Link to post
Share on other sites
Не всегда и не везде доступны данные.

А нельзя сделать, чтобы рейтинг один раз рассчитался и хранился в таблице, и данные будут браться из нее?

 

<if test="(floor($member['posts']/100) + floor($member['pp_reputation_points']/10)) > 1">Отображение кнопки, если рейтинг больше единицы</if>

Так конечно можно, но это много где необходимо будет исправлять.

Share this post


Link to post
Share on other sites
А нельзя сделать, чтобы рейтинг один раз рассчитался и хранился в таблице, и данные будут браться из нее?

Так это же переменная величина, которая зависит от постов и репутации.

Так конечно можно, но это много где необходимо будет исправлять.

Добавьте функцию, например, в класс IPSMember.

Share this post


Link to post
Share on other sites
Так это же переменная величина, которая зависит от постов и репутации.

Понял. Да, это слишком сложно получается.

 

Добавьте функцию, например, в класс IPSMember.

А как это сделать, не подскажете?

Edited by Strategius

Share this post


Link to post
Share on other sites

А как это сделать, не подскажете?

 

Открываете admin/sources/base/ipsMember.php

И добавляете что-то типа

	public static function rating($member)
{
	if (isset($member['posts']) and isset($member['pp_reputation_points']))
	{
		return (floor($member['posts']/100) + floor($member['pp_reputation_points']/10));
	}

	return 0;
}

Далее в шаблоне используете

<if test="IPSMember::rating($member) > 1">Отображение кнопки, если рейтинг больше единицы</if>

  • Upvote 2

Share this post


Link to post
Share on other sites

@newbie, а Вы не подскажете, как добавить к Вашему методу из поста #15 дополнительные выборки в виде сортировки по репутации и статьям (компонент установлен).

 

Добавляю эти выборки в выпадающий список (что в расширенных фильтрах поиска), но почему-то работает только выборка по $grating.

 

$this->DB->build( array( 'select'    => ' m.member_id',

меняю на:

 

$grating = "(FLOOR(m.posts/100) + FLOOR(pp.pp_reputation_points/10)) AS grating";
		$reputation = "(FLOOR(pp.pp_reputation_points)) AS reputation";
		$articles = "(FLOOR(m.tutorials_articles)) AS articles";
		$this->DB->build( array( 'select'    => "m.member_id, {$grating}, {$reputation}, {$articles}",

А эта строка:

 

if ( $_queryPP )

Заменена на:

 

if ( $_queryPP or 1==1 )

Но выборка в выпадающем списке работает только по $grating, по репутации и статьям выдает ошибку базы данных. Подозреваю, что из-за обращения к не существующим полям в таблице members, но по рейтингу-то работает...

 

Лог ошибки:

 

mySQL query error: SELECT m.member_id FROM members m  LEFT JOIN pfields_content p ON ( p.member_id=m.member_id ) 
LEFT JOIN profile_portal pp ON ( pp.pp_member_id=m.member_id )   WHERE m.members_l_display_name !='' AND m.members_l_display_name  IS NOT NULL  AND m.member_group_id NOT IN(5) AND m.member_banned=0 AND ( ! ( members_bitoptions & 1 ) != 0) ORDER BY articles desc LIMIT 0,20

Share this post


Link to post
Share on other sites

Лог ошибки:

Тут только запрос. Где сама ошибка?

Share this post


Link to post
Share on other sites
Тут только запрос. Где сама ошибка?

Вот, все что было в файле...

 

Date: Mon, 16 Oct 2017 09:02:38 +0000
Error: 1054 - Unknown column 'articles' in 'order clause'
IP Address: /index.php?app=members&module=list
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
mySQL query error: SELECT m.member_id FROM members m  LEFT JOIN pfields_content p ON ( p.member_id=m.member_id ) 
LEFT JOIN profile_portal pp ON ( pp.pp_member_id=m.member_id )   WHERE m.members_l_display_name !='' AND m.members_l_display_name  IS NOT NULL  AND m.member_group_id NOT IN(5) AND m.member_banned=0 AND ( ! ( members_bitoptions & 1 ) != 0) ORDER BY articles desc LIMIT 0,20
.--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
| File                                                                       | Function                                                                      | Line No.          |
|----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------|
| test.ru\admin\sources\base\ipsController.php    | [public_members_list_view].doExecute                                          | 306               |
'----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'

Share this post


Link to post
Share on other sites

Вот ошибка

Unknown column 'articles' in 'order clause'

Прикрепите измененный файл, чтобы посмотреть, что Вы там сделали

Share this post


Link to post
Share on other sites

@newbie, а, понял. Значит, всё-таки в статьях ошибка закопалась?

Вот, это тот файл, с которым тестировал: view.php

Share this post


Link to post
Share on other sites

			$this->DB->build( array( 'select'    => 'm.member_id' . (($this->sort_key == 'grating') ? ", (FLOOR(m.posts/100) + FLOOR(m.topics_started/10) + FLOOR(m.tutorials_articles/5) + FLOOR(pp.pp_reputation_points/20)) AS grating" : ''),
								 ............................................................
								 'order'	 => $this->sort_key . ' ' . $this->sort_order,

Обратите внимание на select.

Когда сортировка идет по grating, то select выглядит как

SELECT m.member_id, (FLOOR(m.posts/100) + FLOOR(m.topics_started/10) + FLOOR(m.tutorials_articles/5) + FLOOR(pp.pp_reputation_points/20)) AS grating

Во всех остальных случаях

SELECT m.member_id

А в order используется $this->sort_key, значение которого при вышеуказанной ошибке равно articles. Естественно данного поля нет.

Share this post


Link to post
Share on other sites

@newbie, если честно, не понял... Строка

 

$this->DB->build( array( 'select'    => 'm.member_id' . (($this->sort_key == 'grating') ? ", (FLOOR(m.posts/100) + FLOOR(m.topics_started/10) + FLOOR(m.tutorials_articles/5) + FLOOR(pp.pp_reputation_points/20)) AS grating" : ''),

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

 

$this->DB->build( array( 'select'    => "m.member_id, {$grating}, {$reputation}, {$articles}",

Исправил, как Вы написали, но все равно не работает.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...