Перейти к контенту

[2.1.x]Topic Post Hint v1.2


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

  • Ответы 195
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Загружено фотографий

.silent, при чем здесь другие моды?:D Это стандартная функция ipb. А за мод спасибо, класс;) Тока проблемка одна, не показывает сообщения внутри форумов, на одном скине, на втором все ок. Все перепроверил, все правильно...
Ссылка на комментарий
Поделиться на других сайтах

при чем здесь другие моды?smile.gif Это стандартная функция ipb.
тогда почему мой мод должен показывать объявления? :D

 

с тебя адрес форума, тестовый логин и название скина

Ссылка на комментарий
Поделиться на других сайтах

Инвизионист, я уже писал выше:

Last Post Hint v1.1

 

а еще говорят что на купленных версиях все работает, блин :)

Ну эт я читал, только ничего не понял ;)

Вопросы:

Где именно находится этот class_db_mysql.php :D и что с ним делать, то есть что чем заменять, заранее спасибо :)

Ссылка на комментарий
Поделиться на других сайтах

Инвизионист, ips_kernel/class_db_mysql.php

 

ищем:

	function simple_select( $get, $table, $where="" )
{
	$this->cur_query .= "SELECT $get FROM ".$this->obj['sql_tbl_prefix']."$table";

	if ( $where != "" )
	{
		$this->cur_query .= " WHERE ".$where;
	}
}

меняем на

	function simple_select( $get, $table, $where="" )
{
	if (is_array($table))
	{
		$final_from = array();
		$from_array = array();

		$from_array = $table;

	   foreach( $from_array as $tbl => $alias )
			$final_from[] = $this->obj['sql_tbl_prefix'].$tbl.' '.$alias;

	   $table = implode( ","	 , $final_from);		
	}
	else
		$table = $this->obj['sql_tbl_prefix']."$table";

	$this->cur_query .= "SELECT $get FROM $table";

	if ( $where != "" )
	  $this->cur_query .= " WHERE ".$where;
}

в оригинале просто не проверяется, массив ли идет на $table или просто строка.

в моем переделанном - если идет строка, то обрабатывается как и раньше, а если массив, то он перебирается, проставляет префиксы таблицам и возвращает строку с несколькими таблицами.

почему-то разработчики IPS думают что в FROM могут стоять две таблицы только если используется JOIN...

Ссылка на комментарий
Поделиться на других сайтах

почему-то разработчики IPS думают что в FROM могут стоять две таблицы только если используется JOIN...

просто вызывать нужно другой метод - не simple_select единым, как грится... учите матчасть, перед тем как советывать править CORE классы )))

Ссылка на комментарий
Поделиться на других сайтах

Vic'er, я simple_select не вызываю :D

я вызываю simple_construct, он в свою очередь build_query. та проверяет наличие JOIN'а в запросе и вызывает simple_select или simple_select_with_join.

во втором перебирается массив таблиц, в первом - нет.

 

разве я ухудшил метод? :)

по-моему, я сделал его нормальным ;)

 

 

 

кстати, в тему - кто пользуется модом "hide text" от Vic'er'а, рекоммендую поправить sources/action_public/ajax.php:

 

ищем:

$tout = $parser->pre_display_parse( $tout );

, добавляем выше

$tout = $parser->regex_hide_hidden( $tout, $this->ipsclass->member['id']);

Ссылка на комментарий
Поделиться на других сайтах

разве я ухудшил метод?

по-моему, я сделал его нормальным

нет, ты изменил его суть - что не есть гуд - симпл селект предназначен для простейшей выборки из одной таблицы.

 

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

Ссылка на комментарий
Поделиться на других сайтах

Vic'er,

 

		$this->ipsclass->DB->simple_construct( array( 
				'select' => 'p.pid, p.post, p.author_name, t.tid, t.forum_id as fid',
				'from'   => array('posts' => 'p', 'topics' => 't'),
				'where'  => "t.tid=p.topic_id AND queued = 0 AND topic_id='".$tid."'",
				'order'  => 'pid DESC',
				'limit'  => array(0, 1) ) );
	$outer = $this->ipsclass->DB->simple_exec();

 

почему взлетела ошибка я уже написал вроде ;)

 

нет, ты изменил его суть - что не есть гуд - симпл селект предназначен для простейшей выборки из одной таблицы.

мне что, теперь JOIN'ы все время в таких запросах юзать что-ли? :D по-моему, здесь ему быть незачем. запрос и так довольно простой. да и если учесть что mySQL при оптимизации запроса с LEFT JOIN условие в нем все равно сместит в WHERE, то я не вижу смысла. ну правда.

да и "старую суть" я оставил на месте.

по-моему, так намного красивее нежели писать голую строку со вставками переменной с префиксом таблиц.

 

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

Ссылка на комментарий
Поделиться на других сайтах

vio82, вот именно что ничем не может отличаться.

у людей работает. я не телепат чтобы сказать что у вас там такое, честно.

если хотите помощи - выложите куда-нибудь в интернет и дайте мне адрес. с тестовым аккаунтом. можно в ПМ.

Ссылка на комментарий
Поделиться на других сайтах

.silent, огромное спасибо за мод, всё работает с первого раза.

РеШпект!!!

 

Только в ридми, думаю, надо вписать, где есть файл class_db_mysql.php, а то я тоже в дистрибутиве искал коммандером... :D

 

Ну и хотелось бы такую же фичу при наведении на само имя темы, но только первый пост! ;)

 

Ждём!!!

Ссылка на комментарий
Поделиться на других сайтах

про первый пост уже пожелания были.

сделаю под конец недели, наверное. когда времени будет побольше свободного.

 

обновил архив. в архиве добавился файл с необходимыми изменениями для пользователей модов скрытого текста от Vic'er'a или от Dru.

Ссылка на комментарий
Поделиться на других сайтах

Ещё маленькое уточнение: при наведении с главной страницы форума на "Последнее сообщение" вместе с хинтами появляется надпись, типа

Перейти к последнему непрочитанному сообщению: "имя темы"

Так вот: чтобы эта подсказка не вылезала и не закрывала хинты, надо

 

Открыть файл sources/classes/class_forums.php, в нём найти:

$forum_data['last_topic']  = "<a href='{$this->ipsclass->base_url}showtopic={$forum_data['last_id']}&view=getnewpost' title='{$this->ipsclass->lang['tt_gounread']}: {$forum_data['full_last_title']}'>{$forum_data['last_title']}</a>";

и заменить на:

$forum_data['last_topic']  = "<a href='{$this->ipsclass->base_url}showtopic={$forum_data['last_id']}&view=getnewpost'>{$forum_data['last_title']}</a>";

 

Правда, таким образом исчезнут некоторые другие подсказки при наведении на темы, но это не так критично, я думаю...

Короче для эстетов пригодится! :D

 

З.Ы. - нашёл .silent, я просто оформил. ;)

Ко мне с вопросами не лезть!

Ссылка на комментарий
Поделиться на других сайтах

vio82, ошибку, которая была у вас нашли и исправили. спасибо VADOS'у за пример форума, где была та же штука что и у вас.

из архива перезалейте только ajax.js.

Ссылка на комментарий
Поделиться на других сайтах

Мне показывает ошибку:

 

mySQL query error: SELECT p.pid, p.post, p.author_name, t.tid, t.forum_id as fid FROM ibf_Array WHERE t.tid=p.topic_id AND queued = 0 AND topic_id='275' ORDER BY pid DESC LIMIT 0,1

 

SQL error: Table 'therune_runet.ibf_Array' doesn't exist

SQL error code:

Date: Tuesday 24th of January 2006 02:18:32 PM

 

 

а в скаченого архива:

 

Если после установки мода у вас возникла ошибка вида

 

// --------------------------------------------------

 

SQL error: Table 'ipb.ibf_Array' doesn't exist

 

// --------------------------------------------------

 

то Вам нужно изменить файл ips_kernel/class_db_mysql.php

функция simple_select должна выглядеть так:

 

 

// --------------------------------------------------

function simple_select( $get, $table, $where="" )

{

if (is_array($table))

{

$final_from = array();

$from_array = array();

 

$from_array = $table;

 

foreach( $from_array as $tbl => $alias )

$final_from[] = $this->obj['sql_tbl_prefix'].$tbl.' '.$alias;

 

$table = implode( "," , $final_from);

}

else

$table = $this->obj['sql_tbl_prefix']."$table";

 

$this->cur_query .= "SELECT $get FROM $table";

 

if ( $where != "" )

$this->cur_query .= " WHERE ".$where;

}

// --------------------------------------------------

 

 

ЧТО НАДО ИЗМЕНИТЬ ЧТОБЫ РАБОТАЛА НОРМАЛЬНО?

Ссылка на комментарий
Поделиться на других сайтах


×
×
  • Создать...

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

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.