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

Квэнди

  • записей
    7
  • комментариев
    25
  • просмотров
    37 927

Блок "кто в чате" (ElfChat) на главной странице формуа


Kvendi

2 733 просмотра

1. В файле /sources/action_public/boards.php:

найти:

//-----------------------------------------
	// Showing who's chatting NEW?
	// IPB3.0: To Do: move into components
	//-----------------------------------------

	if ( $this->ipsclass->vars['chat04_account_no'] and $this->ipsclass->vars['chat04_who_on'] )
	{
		require_once( ROOT_PATH.'sources/lib/func_chat.php' );

		$chat		   =  new func_chat();
		$chat->ipsclass =& $this->ipsclass;

		$chat->register_class( $this );

		$chat_html = $chat->get_online_list();

		$this->output = str_replace( "<!--IBF.WHOSCHATTING-->", $chat_html, $this->output );
	}

Заменить на:

//-----------------------------------------
	// Showing who's chatting NEW?
	// IPB3.0: To Do: move into components
	//-----------------------------------------
	global $DB, $std, $ibforums;

	$this->ipsclass->DB->query("SELECT COUNT(*) AS count FROM elfchat_users");

	$cactive = $this->ipsclass->DB->fetch_row();
	$chat_active = "<I>Никого</I>";

	if ( $cactive > 0 )
	{	
		$this->ipsclass->DB->query("SELECT ibf_members.id,ibf_members.mgroup,ibf_members.members_display_name from ibf_members inner join elfchat_users on ibf_members.id=elfchat_users.det");
		 while ( $member = $this->ipsclass->DB->fetch_row() )
					{

						$groups = $this->ipsclass->cache['group_cache'][ $member['mgroup'] ];   
							$data['members'][ $member['id'] ] = "<a href='{$this->ipsclass->base_url}showuser={$member['id']}' >{$this->ipsclass->make_name_formatted($member['members_display_name'],$member['mgroup'])}</a>";
							$chat_active = implode(",\n", $data['members']);  
					}


	}



		$this->output = str_replace( "<!-- CHAT_ACTIVE -->" , $this->ipsclass->compiled_templates['skin_boards']->chat_active($chat_active) , $this->output );

2. в админке->внешний вид->Изменить HTML шаблоны (для всех стилей операцию повторить)->skin_boards->Добавить шаблон

Название шаблона chat_active

Входящие переменные $chat_active=""

Содержание шаблона:

<td class="formsubtitle" colspan="2">В Чате</td>
			</tr>
			<tr>
					<td class="row1" width="1%"><{F_ACTIVE}></td>
					<td class="row2">

							 {$chat_active}

					</td>
			</tr>

Далее в шаблоне skin_boards->stats_header в самый конец шаблона вставляем:

<!-- CHAT_ACTIVE -->

 

Вот и все.

код основан на коде Theron

тестировалось на 2.3.3

19 комментариев


Рекомендуемые комментарии

Посомтрел, да действительно если вы используете чат не как IPB модуль, а как отдельный продукт, забрать оттуда имена пока не получится, можно попробовать, конечно, выводить имена ( правда там проблема с кодировками) но я смысла не вижу, ведь блок же именно для IPB так и используйте его как IPB модуль, тогда там и имена будут корректно показываться )
Ссылка на комментарий
понимаю, что вопрос глупый, но после выполнения первого действия, т.е. замены кода в /sources/action_public/boards.php форум перестает работать вообще. На белом листе выдается сообщение "Ошибка при работе с базой данных". Версия форума последняя, никаких модов не стоит. Из дополнительных компонент установлен только эльфийский чат.
Ссылка на комментарий

в том то все и дело, что больше никакой информации нет. на белом листе только эта надпись.

Включение режима отладки на 3й пункт тоже ничего не дает.

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

Ссылка на комментарий
Время: Mon, 14 Apr 2008 15:58:22 +0400

Код ошибки: 1109

Сообщение сервера: Unknown table 'ibf_members' in field list

IP-адрес клиента: 87.103.150.199

Страница: /forum/

Запрос: SELECT vr_ipb_members.id,ibf_members.mgroup,ibf_members.members_display_name from vr_ipb_members inner join elfchat_users on vr_ipb_members.id=elfchat_users.det

Ссылка на комментарий

возможно дело в префиксе таблицы?

 

.....

 

 

Ура! заработало! так все и было.

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

форум старый и обновлялся с версии 1.3, префиксы таблиц остались в наследство...

 

2 All: если у вас проблемы с данным модом, попробуйте заменить "ibf_" на ваш префикс таблиц. В указанном примере выше он был "vr_ipb_"

Ссылка на комментарий

Извините, наболело: ЗАЧЕМ???

SELECT m.id, m.mgroup, m.members_display_name FROM ibf_members m INNER JOIN elfchat_users u ON m.id=u.det

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

Ссылка на комментарий

количеством байт php файла, лежащего на сервере...

вообще не дураки же их придумали

в кодировании информации имеет смысл такое правило - чем меньшим количеством знаков закодировано определенное состояние, тем надежнее

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

Ссылка на комментарий
×
×
  • Создать...

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

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