07.04.2011 08:25:07
Последние темы с форумов в чат
Итак, разберём такую вещь, как вывести последние темы с форумов в чат. Конкретно рассмотрим движки mybb2 и ipb.
mybb2
тут всё легко. ищем строчку
и вписываем домен своего форума. Например:
Вставляем в нужное нам место - готово. Скрипт выводит 10 последних сообщений.
ipb
С этим будет всё сложнее, ибо скрипта под чат я не нашёл.
Для того, чтобы вывести последние сообщения для ipb нужен хостинг, поддерживающий php.
Ну, распишу всё подробно. Открываем блокнот, копируем в него этот скрипт:
Настраиваем скрипт под свой форум:
вместо localhost вписываем IP сервера.
Вписываем имя базы данных, логин и пароль доступа к ней.
Скрипт настроен.
Теперь сохраняем файл с расширением .php
Заливаем его на PHP-хостинг.
А в самом чате уже прописываем:
Ширину и высоту подберёте нужную. Скрипт выводит последние 10 тем с форума. (Количество тем можно настроить под свой вкус)
Удачного пользования.
<script src="ССЫЛКА_НА_ФОРУМ/export.php?type=js&max=10" type="text/javascript"></script>
<script type="text/javascript">
var html='';
var ts = '';
var mo = '';
var hh = '';
var mm = '';
var i = 0;
for(i=0;i<content.length;i++) {
ts = new Date();
ts.setTime(1000*content[i][0]);
mo = ts.getMonth()+1;
if (mo<10) mo='0'+mo;
hh = ts.getHours();
mm = ts.getMinutes()+'';
if (mm<10) mm='0'+mm;
ts = ts.getDate()+'.'+mo+' '+hh+':'+mm;
html2="</tr></tbody></table></div>"
html1="<h2>Последние 10 сообщений форума</h2><div class=\"container\"><table cellspacing=\"0\" width=100%><thead><tr><th scope=\"col\">Автор</th><th scope=\"col\">Время</th><th scope=\"col\">Последнее сообщение</th></tr></thead><tbody class=\"hasicon\">"
html+='<tr><td>'+content[i][1]+'</td><td class=\"tc2\">'+ts+'<td class=\"tcr\"><a href=\"'+content[i][2]+'\" target=\"_blank\">'+content[i][3]+'</a><br /></td></tr>';
}
var arr=document.getElementsByTagName("div")
i=0
str=document.URL
while(arr[i] ){
if((str.substring(str.lastIndexOf('/')+1)=="" || str.substring(str.lastIndexOf('/')+1)=="index.php") && arr[i].className=="statscon"){
name=arr[i].innerHTML
name=name.substring(0)
arr[i].innerHTML=""+html1+""+html+""+html2+"<br><h2>Общая статистика</h2>"+name+""
}
i++
}
</script>
<script type="text/javascript">
var html='';
var ts = '';
var mo = '';
var hh = '';
var mm = '';
var i = 0;
for(i=0;i<content.length;i++) {
ts = new Date();
ts.setTime(1000*content[i][0]);
mo = ts.getMonth()+1;
if (mo<10) mo='0'+mo;
hh = ts.getHours();
mm = ts.getMinutes()+'';
if (mm<10) mm='0'+mm;
ts = ts.getDate()+'.'+mo+' '+hh+':'+mm;
html2="</tr></tbody></table></div>"
html1="<h2>Последние 10 сообщений форума</h2><div class=\"container\"><table cellspacing=\"0\" width=100%><thead><tr><th scope=\"col\">Автор</th><th scope=\"col\">Время</th><th scope=\"col\">Последнее сообщение</th></tr></thead><tbody class=\"hasicon\">"
html+='<tr><td>'+content[i][1]+'</td><td class=\"tc2\">'+ts+'<td class=\"tcr\"><a href=\"'+content[i][2]+'\" target=\"_blank\">'+content[i][3]+'</a><br /></td></tr>';
}
var arr=document.getElementsByTagName("div")
i=0
str=document.URL
while(arr[i] ){
if((str.substring(str.lastIndexOf('/')+1)=="" || str.substring(str.lastIndexOf('/')+1)=="index.php") && arr[i].className=="statscon"){
name=arr[i].innerHTML
name=name.substring(0)
arr[i].innerHTML=""+html1+""+html+""+html2+"<br><h2>Общая статистика</h2>"+name+""
}
i++
}
</script>
тут всё легко. ищем строчку
<script src="ССЫЛКА_НА_ФОРУМ/export.php?type=js&max=10" type="text/javascript">
и вписываем домен своего форума. Например:
<script src="https://igust.servis4u.top/export.php?type=js&max=10" type="text/javascript">
Внимание: это как пример, темы с Айгуста выводиться не будут, ибо он не на mybb2!Вставляем в нужное нам место - готово. Скрипт выводит 10 последних сообщений.
С этим будет всё сложнее, ибо скрипта под чат я не нашёл.
Для того, чтобы вывести последние сообщения для ipb нужен хостинг, поддерживающий php.
Ну, распишу всё подробно. Открываем блокнот, копируем в него этот скрипт:
<?php
//======[ОСНОВНЫЕ НАСТРОЙКИ]======
//Префикс таблицы с IPB
$prefix = '';
//Сколько тем выводить
$num = 10;
//Сколько символов оставить в названии темы после урезания
$topic_num_sym = 65;
//Имя папки с картинками текущего скина
$img_path = '1';
//Формат времени
$time = 'H:i';
//Форумы, которые мы не трогаем
$forumexclude = '0';
//Сервер БД на котором висит база форума
$host="localhost";
//Имя БД
$database="lalala";
//Логин БД
$username="lalala";
//Пароль БД
$password="lalala";
//====[Если не знаем PHP - дальше ничего не трогаем ]=========
$ipb_db = mysql_pconnect($host, $username, $password);
mysql_select_db($database, $ipb_db);
$rd = "SET CHARACTER SET utf8";
IF (!$result = mysql_query($rd)) {
ECHO "ERROR!!!\n";
}
$resultf = mysql_query("SELECT tid, title, description, state, posts, starter_id, last_poster_id, last_post, icon_id, starter_name, last_poster_name, views, topic_hasattach FROM ".$prefix."topics WHERE (forum_id NOT IN ($forumexclude)) ORDER BY last_post DESC LIMIT $num",$ipb_db) or die(mysql_error());
$row_resultf = mysql_fetch_assoc($resultf);
$totalRows_resultf = mysql_num_rows($resultf);
do {
$topicstrip = $row_resultf['title'];
if (strlen($topicstrip) > $topic_num_sym) {
$topicstrip = substr($topicstrip,0,$topic_num_sym);
$topicstrip = $topicstrip."...";
}
$status = ($row_resultf['state'] == "closed") ? "<img src=\"forum/style_images/$img_path/f_closed.gif\" border=\"0\" alt=\"Тема закрыта\">" : "";
$attach = ($row_resultf['topic_hasattach'] == "1") ? "<img src=\"temp/A-Vector/images/files.gif\" border=\"0\" alt=\"В сообщении есть прикрепленные файлы\"> " : "";
$last_date = date($time,$row_resultf['last_post']);
$bt.= "<small class=\"3\">$last_date:</small> <b><a title=\"".$row_resultf['description']."\" href=\"forum/index.php?showtopic=".$row_resultf['tid']."&view=getlastpost\">$topicstrip</a></b><br>";
} while($row_resultf = mysql_fetch_assoc($resultf));
mysql_free_result($resultf);
echo $bt;
return $bt;
?>
//======[ОСНОВНЫЕ НАСТРОЙКИ]======
//Префикс таблицы с IPB
$prefix = '';
//Сколько тем выводить
$num = 10;
//Сколько символов оставить в названии темы после урезания
$topic_num_sym = 65;
//Имя папки с картинками текущего скина
$img_path = '1';
//Формат времени
$time = 'H:i';
//Форумы, которые мы не трогаем
$forumexclude = '0';
//Сервер БД на котором висит база форума
$host="localhost";
//Имя БД
$database="lalala";
//Логин БД
$username="lalala";
//Пароль БД
$password="lalala";
//====[Если не знаем PHP - дальше ничего не трогаем ]=========
$ipb_db = mysql_pconnect($host, $username, $password);
mysql_select_db($database, $ipb_db);
$rd = "SET CHARACTER SET utf8";
IF (!$result = mysql_query($rd)) {
ECHO "ERROR!!!\n";
}
$resultf = mysql_query("SELECT tid, title, description, state, posts, starter_id, last_poster_id, last_post, icon_id, starter_name, last_poster_name, views, topic_hasattach FROM ".$prefix."topics WHERE (forum_id NOT IN ($forumexclude)) ORDER BY last_post DESC LIMIT $num",$ipb_db) or die(mysql_error());
$row_resultf = mysql_fetch_assoc($resultf);
$totalRows_resultf = mysql_num_rows($resultf);
do {
$topicstrip = $row_resultf['title'];
if (strlen($topicstrip) > $topic_num_sym) {
$topicstrip = substr($topicstrip,0,$topic_num_sym);
$topicstrip = $topicstrip."...";
}
$status = ($row_resultf['state'] == "closed") ? "<img src=\"forum/style_images/$img_path/f_closed.gif\" border=\"0\" alt=\"Тема закрыта\">" : "";
$attach = ($row_resultf['topic_hasattach'] == "1") ? "<img src=\"temp/A-Vector/images/files.gif\" border=\"0\" alt=\"В сообщении есть прикрепленные файлы\"> " : "";
$last_date = date($time,$row_resultf['last_post']);
$bt.= "<small class=\"3\">$last_date:</small> <b><a title=\"".$row_resultf['description']."\" href=\"forum/index.php?showtopic=".$row_resultf['tid']."&view=getlastpost\">$topicstrip</a></b><br>";
} while($row_resultf = mysql_fetch_assoc($resultf));
mysql_free_result($resultf);
echo $bt;
return $bt;
?>
Настраиваем скрипт под свой форум:
//Сервер БД на котором висит база форума
$host="localhost";
$host="localhost";
вместо localhost вписываем IP сервера.
//Имя БД
$database="lalala";
//Логин БД
$username="lalala";
//Пароль БД
$password="lalala";
$database="lalala";
//Логин БД
$username="lalala";
//Пароль БД
$password="lalala";
Вписываем имя базы данных, логин и пароль доступа к ней.
Скрипт настроен.
Теперь сохраняем файл с расширением .php
Заливаем его на PHP-хостинг.
А в самом чате уже прописываем:
<iframe src="ссылка на файл, который залили" width="ширина_окна" height="высота_окна"></iframe>
Ширину и высоту подберёте нужную. Скрипт выводит последние 10 тем с форума. (Количество тем можно настроить под свой вкус)
Удачного пользования.