Вывод топиков из vBulletin в LS

Доброго времени суток!

Буквально на днях решил я сделать проект на LS, ибо после нескольких часов экспериментов и копания движка, я пришел к выводу, что он мне ну ооочень нравится. Стандартных возможностей живой улицы хватило фактически для всего проекта, но встала задача выводить последние сообщения с форума VBulletin в LS, некий «прямой эфир» топиков с форума.
Решил поделится с Вами, может кому-то пригодится…

Для начала, определюсь с задачей, а она кратка и понятна:

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

Так как нам нужен именно блок, необходимо создать для него обработчик(класс) ну и шаблон вывода

Создаем файл

BlockStreamForum.class.php в classes/blocks со следущим содержанием

class BlockStreamForum extends Block {
	public function Exec() {
		$forum_path = 'club';
		$threads = 10;
		$this->Viewer_Assign('Title',"Новое на форуме");
		include_once($forum_path.'/includes/config.php');
		mysql_connect($config['MasterServer']['servername'],$config['MasterServer']['username'],$config['MasterServer']['password']);
		mysql_select_db($config['Database']['dbname']);
		$sql = "SELECT * FROM ".$config['Database']['tableprefix']."thread ORDER BY lastpost LIMIT 0,".$threads;
		$query = mysql_query($sql);
		while ($row = mysql_fetch_array($query)) {
			$content .= '<a href="forum/showthread.php?goto=newpost&t='.$row['threadid'].'" class="stream-topic">'.$row['title'].'</a><p class="stream-author">'.$row['lastposter'].' в '.date('H:i',$row['lastpost']).'</p>'; 
		}
		$this->Viewer_Assign('Content',$content);
		mysql_close();
		}
		
	}


Разумеется, переменные для шаблона можно переназначить из массива $row, но я в качестве шаблона блока использовал шаблон комментов, поэтому решил отформатировать строку прям тут. Если честно, не знаю насколько это правильно.

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

Ну и шаблон блока, назовем соответственно, block.streamforum.tpl

и его код:

<div class="block stream">

				<div class="tl"><div class="tr"></div></div>
				<div class="cl"><div class="cr">
					
					<h1>{$Title}</h1>
					
									
					
					<div class="block-content">
					
					{$Content}
					</div>
					<div class="right"><a href="http://yourdomain.com/forum">На форум</a></div>

					
				</div></div>
				<div class="bl"><div class="br"></div></div>
			</div>


Теперь нам неообходимо вывести блок в нужном нам месте (у меня это главная страница), ну и правим ActionIndex.class.php

public function Init() {		
		$this->Viewer_AddBlocks('right',array('streamforum','stream','blogs'));
		/**
		 * Подсчитываем новые топики
		 */
		$this->iCountTopicsCollectiveNew=$this->Topic_GetCountTopicsCollectiveNew();
		$this->iCountTopicsPersonalNew=$this->Topic_GetCountTopicsPersonalNew();
		$this->iCountTopicsNew=$this->iCountTopicsCollectiveNew+$this->iCountTopicsPersonalNew;
	}


Вот и все, на выходе получаем блок с новыми топиками с форума vBulletin, надеюсь кому-то будет полезно. И не судите строго))

Если будет время опубликую пост, о том как я делал общую авторизацию/регистрацию пользователей LS и vBulletin, но, как я понял не стоит, ибо welcome to openAPI от vkontakte)

З.ы.
Версии скриптов на которых я работал:

LiveStreet v.0.3.1 и vBulletin v3.6.7

2 комментария

avatar
кто проверял работает?
avatar
как адаптировать под 1.0.3 и vB 4.2.2?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.