Вывод топиков из vBulletin в LS
Доброго времени суток!
Буквально на днях решил я сделать проект на LS, ибо после нескольких часов экспериментов и копания движка, я пришел к выводу, что он мне ну ооочень нравится. Стандартных возможностей живой улицы хватило фактически для всего проекта, но встала задача выводить последние сообщения с форума VBulletin в LS, некий «прямой эфир» топиков с форума.
Решил поделится с Вами, может кому-то пригодится…
Для начала, определюсь с задачей, а она кратка и понятна:
Необходим блок, в который будут выводится последние темы с форума
Так как нам нужен именно блок, необходимо создать для него обработчик(класс) ну и шаблон вывода
Создаем файл
Разумеется, переменные для шаблона можно переназначить из массива $row, но я в качестве шаблона блока использовал шаблон комментов, поэтому решил отформатировать строку прям тут. Если честно, не знаю насколько это правильно.
Ну и выборка самих топиков может производится средствами самой воблы, но я опять так и решил не заморачиваться, ибо было мало времени
Ну и шаблон блока, назовем соответственно, block.streamforum.tpl
и его код:
Теперь нам неообходимо вывести блок в нужном нам месте (у меня это главная страница), ну и правим ActionIndex.class.php
Вот и все, на выходе получаем блок с новыми топиками с форума vBulletin, надеюсь кому-то будет полезно. И не судите строго))
Если будет время опубликую пост, о том как я делал общую авторизацию/регистрацию пользователей LS и vBulletin, но, как я понял не стоит, ибо welcome to openAPI от vkontakte)
З.ы.
Версии скриптов на которых я работал:
LiveStreet v.0.3.1 и vBulletin v3.6.7
Буквально на днях решил я сделать проект на 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 комментария