Архив Айгуст —
архив помогалки Августа
«Никто не вечен… В отличие от знаний»
Внимание!
  Материалы на данном сайте представляют собой архивную копию форума «Айгуст - помогалка Августа» на момент октября 2019 года с целью сохранения знаний. Все права на материалы принадлежат их авторам. Материалы представлены в открытый доступ в ознакомительных целях, запрещено их коммерческое использование без согласования с авторами. Администрация сайта не несёт ответственности за содержание материалов, в том числе за наличие вредоносных закладок в коде, используйте любой предоставленный код на свой страх и риск. Рекомендуется проверять любые файлы вручную и перезаливать на собственный хостинг, дабы избежать возможной модификации или исчезновения в будущем.

Как вывести в топик последние темы с форума

13.08.2010 13:40:11
Как вывести в топик последние темы с форума

Данное сообщение содержит рецепт по выводу в топик последних сообщений с форума на движке пхпбб 3, установленного на вашем хосте. Сходным образом, однако, внеся в код необходимые изменения, можно добиться вывода последних сообщений с любого движка в любое место :–)


§ 1. Создание страницы ПХП с темами

Необходимо создать файл ПХП (topic.php) и разместить его на вашем хосте. Ниже представлен пример кода для такого файла с комментариями, которые позволят настроить его.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="ru-ru" xml:lang="ru-ru"> 
<head> 
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
  <meta http-equiv="content-language" content="ru-ru" />
  <title>topic.php от лаборатории «проМили»</title>
</head>

<body>

<?php
  
# Установим подключение к БД.
  $con = mysql_connect("имя сервера","имя пользователя БД","пароль пользователя БД");
  // Имя сервера по умолчанию -- «localhost». Иное указано в настройках менеджера БД.
  // Имя пользователя БД -- имя пользователя БД форума, обладающего правом SELECT. Рекомендую создать нового, вместо того чтобы использовать имя пользователя БД форума со всем набором полномочий.
  // Его пароль.

  if (!$con) {
    die('Could not connect: ' . mysql_error());
  }

  mysql_select_db("имя БД", $con);
  // Имя БД форума (что-то типа your_forum или your_board, но может быть любым -- вы сами даете ей название при создании).

  $result = mysql_query("SELECT * FROM phpbb_topics
    ORDER BY topic_time DESC
    LIMIT 0 , 5
  "
);
  // Имейте ввиду, 5 -- количество тем для вывода.

  while($row = mysql_fetch_array($result)) {
    echo "<p class='topic_all'>";
    echo "<span class='topic_date'><a href='http://путь_к_форуму/memberlist.php?mode=viewprofile&u=" . $row['topic_first_post_id'] . "' target='_blank'>" . $row['topic_poster'] . "</a> " . date('j.m.Y, H:i:s',$row['topic_time']) . "</span>";
    echo "<br />";
    echo "<a class='topic_title' href='http://путь_к_форуму/viewtopic.php?t=" . $row['topic_id'] . "' target='_blank'>" . $row['topic_title'] . "</a>";
    echo "</p>";
  }

  mysql_close($con);
  // Закрываем подключение.
?>
</body>
</html>

§ 2. Создание айфрейма для вывода тем в топик

Следующим этапом необходимо создать айфрейм (элемент ХТМЛ), содержащий созданную выше страничку и вставить его в топик. Ниже представлен примерный код айфрейма. Значения высоты и ширины вы можете подставить свои. О других возможных атрибутах тега айфрейм читайте здесь.

<iframe src ="http://путь_к_директории_с_ПХП/topic.php" width="100px" height="100px">
<p>Лаборатория «проМили»</p>
</iframe>

§ 3. Стилизация вывода

ЦСС и присвоенные элементам ХТМЛ в ПХП классы позволят вам оформить вывод топика любым понравившимся вам образом. Ниже представлен список селекторов для доступа к оформлению элементов вывода. Вставить результат необходимо в перед айфреймом. Ознакомиться со свойствами и значениями ЦСС можно здесь.

<style type="text/css">
.topic_all {
Некое_свойство:некое_значение;
}
.topic_date {
Некое_свойство:некое_значение;
}
.topic_title {
Некое_свойство:некое_значение;
}
</style>
#204
13.09.2010 04:46:12
Re: Как вывести в топик последние темы с форума
Одоптированно под ПХПББ я так понимаю так как на vBulletin не работает!
Если есть вариант под воблу или кто знает как одоптировать этот расскажите плиз!
#1125
13.09.2010 04:49:08
Re: Как вывести в топик последние темы с форума

Работает, только нужно немного по другому сделать. Позже скину.

#1126
13.09.2010 18:26:59
Re: Как вывести в топик последние темы с форума

Последние тему форума на булке.
Это сам скрипт последних тем для булки.
<?php
if (!defined('BLOCK_FILE')) {
Header("Location: ../index.php");
exit;
}
/*--------------------------------------------------------------------
block VBFORUM Version 2 for Slaed
----------------------------------------------------------------------
Этот скрипт предназначен для вывода информации с форумного движка системы VB
сделан специально для использования в вашей phpNuke
(тестился в версии Slaed 1.6 FREE но вполне может использоваться и в более ранних версиях)
выводит темы, где был последний пост на главной страничке вашего сайта.
автор скрипта Argos_Den, связаться с автором можно по адресу argosden@mail.ru
----------------------------------------------------------------------*/
global $db;

//Опции блока
$lcolor = "#003366"; //Цвет заголовка блока
$limit = "15"; //Колличество заголовков, которые нужно показать
$urlforum = "http://forum2.test.ru"; //Для корректного отображения ссылок, введите полный УРЛ до вашего форума(без слеша в конце/)
$str2 = "35"; //При каком колличестве символов в нужно обрезать заголовок??
$str = "1000"; //При каком колличестве символов, резать текст в посте автора?

//Укажите нужный префикс таблиц (уточните в конфиге вашего форума) Если префикса нет, тогда оставьте кавычки пустыми.
$prefic = "vb";

//Параметры подключения к отдельной базе, если форум установлен отдельно(не рекомендуется) от базы phpnuke.
//Мы не рекомендуем устанавливать форум отдельно от Nuke. Но если вы это сделали, введите нужные значения ниже.
$host = "localhost"; //Хост БД
$username = "root"; //Имя пользователя БД
$passwd = ""; //Пароль БД
$dbforum = "forum2"; //Название БД от Форума. Если оставить пустым, используется БД от phpNuke


//======================================================================================================
//ТО ЧТО НИЖЕ, НЕ РЕКОМЕНДУЕТСЯ МЕНЯТЬ, ДЛЯ БЕЗОПАСНОСТИ РАБОТЫ БЛОКА (если не знаете язык php, mysql)
//======================================================================================================
if ($prefic > "") {
$pr = "$prefic";
} else {
$pr = "<font color=red>не указан префикс!</font>";
}
if ($dbforum != "") {
include ("config.php");
$content .="<fieldset style='padding: 2; color: $lcolor'><legend><b>Новое на форуме</b></legend><table width=100% border=0>";
$content .="<tr><td width=62%><b>Тема</b></td><td align=center><b>Автор</b></td><td align=center><b>Пр.</b></td><td align=center><b>От.</b></td><td width=5%><center><b>Последний</b></center></td></tr><tr><td bgcolor=#2D496E colspan=5></td></tr>";
$goto = mysql_connect($host, $username, $passwd) or die("К сожалению блок не установлен, причина >> Ошибка соединения с базой, проверьте данные доступа к базе! <br> Вы указали : <br>Хост базы = <b>$host</b><br> Имя пользователя = <b>$username</b><br> пароль = <b>*******</b> (если всё другое вы ввели верно, проверьте пароль доступа)<br> Название базы = <b>$dbforum</b><br><br><br>Если проблемы остались, тогда уточните данные у своего хостинг-провайдера " . mysql_error());
mysql_select_db($dbforum) or die("Не удалось выбрать базу, укажите точное название вашей базы, где установлен форум<br>Вы указали > <b>$dbforum</b>");
$query = "SELECT p.postid, p.parentid, p.username, p.userid, p.dateline, p.pagetext, t.forumid, t.threadid, t.title, t.replycount, t.postusername, t.postuserid, t.lastposter, t.views, t.lastpost FROM ".$prefic."post AS p LEFT JOIN ".$prefic."thread AS t ON (t.threadid = p.postid ) ORDER BY t.lastpost DESC LIMIT $limit";
$result = mysql_query($query) or die("Query failed : Блок не установлен, Ошибка выбора таблиц! <br>Укажите точный префикс базы форума!<br><br><br>Префикс для таблиц форума вы указали: <b>$pr</b><br>Решение проблемы такое: Неоходимо указать точный префикс для БД(можно узнать из конфига вашего форума)<br>В случае, если префикса вообще нет, тогда ничего не указывайте в переменной префикса этого блока!<br><br>" . mysql_error());
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

$postid = $row['postid'];
$postuser = $row['postusername'];
$postuser2 = $row['lastposter'];
$postrow = $row['daterow'];
$ptitle = $row['title'];
$pagehtml = $row['pagetext'];
$rcou = $row['replycount'];
$views = $row['views'];
$upid = $row['threadid'];
$piduser = $row['postuserid'];

if(strlen($pagehtml) >= $str);
$pagehtml = substr($pagehtml,0,$str);
if (strlen($pagehtml) >= $str) {
$pagehtml .= ".......";
}
if(strlen($ptitle) >= $str2);
$ptitle = substr($ptitle,0,$str2);
if (strlen($ptitle) >= $str2) {
$ptitle .= "<b>......</b>";
}

if ($ptitle > "") {
$content .="<tr><td width=62%><a href=$urlforum/showthread.php?goto=newpost&t=$upid title='$ptitle'>$ptitle</a></td><td align=center><a href=$urlforum/member.php?u=$piduser title='контакт с автором этого топика ($postuser)'>$postuser</a></td><td align=center>$views</td><td align=center>&nbsp;$rcou</td><td align=center><a href=$urlforum/member.php?find=lastposter&t=$upid title='Последний, кто ответил в этой теме $postuser2'>$postuser2</a></td></tr>";
}
}
$content .="</table></fieldset>";
mysql_free_result($result);
mysql_close($goto);
sql_connect($dbhost, $dbuname, $dbpass, $dbname);


} else {

$content .="<fieldset style='padding: 2; color: $lcolor'><legend><b>Новое на форуме</b></legend><table width=100% border=0>";
$content .="<tr><td width=62%><b>Тема</b></td><td align=center><b>Автор</b></td><td align=center><b>Пр.</b></td><td align=center><b>От.</b></td><td width=5%><center><b>Последний</b></center></td></tr><tr><td bgcolor=#2D496E colspan=5></td></tr>";
$result = $db->sql_query("SELECT p.postid, p.parentid, p.username, p.userid, p.dateline, p.pagetext, t.forumid, t.threadid, t.title, t.replycount, t.postusername, t.postuserid, t.lastposter, t.views, t.lastpost FROM ".$prefic."post AS p LEFT JOIN ".$prefic."thread AS t ON (t.threadid = p.postid ) ORDER BY t.lastpost DESC LIMIT $limit")
or die
("Query failed : Блок не установлен, Ошибка выбора таблиц! <br>Укажите точный префикс базы форума!<br><br><br>Префикс для таблиц форума вы указали: <b>$pr</b><br>Решение проблемы такое: Неоходимо указать точный префикс для БД(можно узнать из конфига вашего форума)<br>В случае, если префикса вообще нет, тогда ничего не указывайте в переменной префикса этого блока!<br><br>" . mysql_error());
while ($row = $db->sql_fetchrow($result)) {

$postid = $row['postid'];
$postuser = $row['postusername'];
$postuser2 = $row['lastposter'];
$postrow = $row['daterow'];
$ptitle = $row['title'];
$pagehtml = $row['pagetext'];
$rcou = $row['replycount'];
$views = $row['views'];
$upid = $row['threadid'];
$piduser = $row['postuserid'];

if(strlen($pagehtml) >= $str);
$pagehtml = substr($pagehtml,0,$str);
if (strlen($pagehtml) >= $str) {
$pagehtml .= ".......";
}
if(strlen($ptitle) >= $str2);
$ptitle = substr($ptitle,0,$str2);
if (strlen($ptitle) >= $str2) {
$ptitle .= "<b>......</b>";
}

if ($ptitle > "") {
$content .="<tr><td width=62%><a href=$urlforum/showthread.php?goto=newpost&t=$upid title='Обсуждается пост автора $postuser далее цитата>>> $pagehtml'>$ptitle</a></td><td align=center><a href=$urlforum/member.php?u=$piduser title='контакт с автором этого топика ($postuser)'>$postuser</a></td><td align=center>$views</td><td align=center>&nbsp;$rcou</td><td align=center><a href=$urlforum/member.php?find=lastposter&t=$upid title='Последний, кто ответил в этой теме $postuser2'>$postuser2</a></td></tr>";
}
}
$content .="</table></fieldset>";
}

?>

Тут уже делаем всё что вам нужно. Точнее вырезаем.
Заливаем на хост с форумом.
И дальше на сайте создаём айфрейм.
<iframe src ="http://путь на ссылку к скрипту" width="100px" height="100px">
<p>Лаборатория «проМили»</p>
</iframe>


#1138
14.09.2010 01:27:47
Re: Как вывести в топик последние темы с форума
Класс сенкью! Ты самый лучший друг админов августа полюбому!
#1150
14.09.2010 11:34:28
Re: Как вывести в топик последние темы с форума
<iframe src ="http://путь на ссылку к скрипту" width="100px" height="100px">
<p>Лаборатория «проМили»</p>
</iframe>

чёт в этой ссылке не так он мне в маленьком окошке полностью форум показывает!
#1162
14.09.2010 12:57:04
Re: Как вывести в топик последние темы с форума

Ну да.
width="100px" height="100px"

Ширина и высота.
#1167
14.09.2010 13:43:17
Re: Как вывести в топик последние темы с форума
он не темы а именно сам форум тут скрипт
<?php
if (!defined('BLOCK_FILE')) {
Header("Location: ../index.php");
exit;
}
/*--------------------------------------------------------------------
block VBFORUM Version 2 for Slaed
----------------------------------------------------------------------
Этот скрипт предназначен для вывода информации с форумного движка системы VB
сделан специально для использования в вашей phpNuke
(тестился в версии Slaed 1.6 FREE но вполне может использоваться и в более ранних версиях)
выводит темы, где был последний пост на главной страничке вашего сайта.
автор скрипта Argos_Den, связаться с автором можно по адресу argosden@mail.ru
----------------------------------------------------------------------*/
global $db;

//Опции блока
$lcolor = "#003366"; //Цвет заголовка блока
$limit = "15"; //Колличество заголовков, которые нужно показать
$urlforum = "http://forum2.test.ru"; //Для корректного отображения ссылок, введите полный УРЛ до вашего форума(без слеша в конце/)
$str2 = "35"; //При каком колличестве символов в нужно обрезать заголовок??
$str = "1000"; //При каком колличестве символов, резать текст в посте автора?

//Укажите нужный префикс таблиц (уточните в конфиге вашего форума) Если префикса нет, тогда оставьте кавычки пустыми.
$prefic = "vb";

//Параметры подключения к отдельной базе, если форум установлен отдельно(не рекомендуется) от базы phpnuke.
//Мы не рекомендуем устанавливать форум отдельно от Nuke. Но если вы это сделали, введите нужные значения ниже.
$host = "localhost"; //Хост БД
$username = "root"; //Имя пользователя БД
$passwd = ""; //Пароль БД
$dbforum = "forum2"; //Название БД от Форума. Если оставить пустым, используется БД от phpNuke


//======================================================================================================
//ТО ЧТО НИЖЕ, НЕ РЕКОМЕНДУЕТСЯ МЕНЯТЬ, ДЛЯ БЕЗОПАСНОСТИ РАБОТЫ БЛОКА (если не знаете язык php, mysql)
//======================================================================================================
if ($prefic > "") {
$pr = "$prefic";
} else {
$pr = "<font color=red>не указан префикс!</font>";
}
if ($dbforum != "") {
include ("config.php");
$content .="<fieldset style='padding: 2; color: $lcolor'><legend><b>Новое на форуме</b></legend><table width=100% border=0>";
$content .="<tr><td width=62%><b>Тема</b></td><td align=center><b>Автор</b></td><td align=center><b>Пр.</b></td><td align=center><b>От.</b></td><td width=5%><center><b>Последний</b></center></td></tr><tr><td bgcolor=#2D496E colspan=5></td></tr>";
$goto = mysql_connect($host, $username, $passwd) or die("К сожалению блок не установлен, причина >> Ошибка соединения с базой, проверьте данные доступа к базе! <br> Вы указали : <br>Хост базы = <b>$host</b><br> Имя пользователя = <b>$username</b><br> пароль = <b>*******</b> (если всё другое вы ввели верно, проверьте пароль доступа)<br> Название базы = <b>$dbforum</b><br><br><br>Если проблемы остались, тогда уточните данные у своего хостинг-провайдера " . mysql_error());
mysql_select_db($dbforum) or die("Не удалось выбрать базу, укажите точное название вашей базы, где установлен форум<br>Вы указали > <b>$dbforum</b>");
$query = "SELECT p.postid, p.parentid, p.username, p.userid, p.dateline, p.pagetext, t.forumid, t.threadid, t.title, t.replycount, t.postusername, t.postuserid, t.lastposter, t.views, t.lastpost FROM ".$prefic."post AS p LEFT JOIN ".$prefic."thread AS t ON (t.threadid = p.postid ) ORDER BY t.lastpost DESC LIMIT $limit";
$result = mysql_query($query) or die("Query failed : Блок не установлен, Ошибка выбора таблиц! <br>Укажите точный префикс базы форума!<br><br><br>Префикс для таблиц форума вы указали: <b>$pr</b><br>Решение проблемы такое: Неоходимо указать точный префикс для БД(можно узнать из конфига вашего форума)<br>В случае, если префикса вообще нет, тогда ничего не указывайте в переменной префикса этого блока!<br><br>" . mysql_error());
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

$postid = $row['postid'];
$postuser = $row['postusername'];
$postuser2 = $row['lastposter'];
$postrow = $row['daterow'];
$ptitle = $row['title'];
$pagehtml = $row['pagetext'];
$rcou = $row['replycount'];
$views = $row['views'];
$upid = $row['threadid'];
$piduser = $row['postuserid'];

if(strlen($pagehtml) >= $str);
$pagehtml = substr($pagehtml,0,$str);
if (strlen($pagehtml) >= $str) {
$pagehtml .= ".......";
}
if(strlen($ptitle) >= $str2);
$ptitle = substr($ptitle,0,$str2);
if (strlen($ptitle) >= $str2) {
$ptitle .= "<b>......</b>";
}

if ($ptitle > "") {
$content .="<tr><td width=62%><a href=$urlforum/showthread.php?goto=newpost&t=$upid title='$ptitle'>$ptitle</a></td><td align=center><a href=$urlforum/member.php?u=$piduser title='контакт с автором этого топика ($postuser)'>$postuser</a></td><td align=center>$views</td><td align=center>&nbsp;$rcou</td><td align=center><a href=$urlforum/member.php?find=lastposter&t=$upid title='Последний, кто ответил в этой теме $postuser2'>$postuser2</a></td></tr>";
}
}
$content .="</table></fieldset>";
mysql_free_result($result);
mysql_close($goto);
sql_connect($dbhost, $dbuname, $dbpass, $dbname);


} else {

$content .="<fieldset style='padding: 2; color: $lcolor'><legend><b>Новое на форуме</b></legend><table width=100% border=0>";
$content .="<tr><td width=62%><b>Тема</b></td><td align=center><b>Автор</b></td><td align=center><b>Пр.</b></td><td align=center><b>От.</b></td><td width=5%><center><b>Последний</b></center></td></tr><tr><td bgcolor=#2D496E colspan=5></td></tr>";
$result = $db->sql_query("SELECT p.postid, p.parentid, p.username, p.userid, p.dateline, p.pagetext, t.forumid, t.threadid, t.title, t.replycount, t.postusername, t.postuserid, t.lastposter, t.views, t.lastpost FROM ".$prefic."post AS p LEFT JOIN ".$prefic."thread AS t ON (t.threadid = p.postid ) ORDER BY t.lastpost DESC LIMIT $limit")
or die
("Query failed : Блок не установлен, Ошибка выбора таблиц! <br>Укажите точный префикс базы форума!<br><br><br>Префикс для таблиц форума вы указали: <b>$pr</b><br>Решение проблемы такое: Неоходимо указать точный префикс для БД(можно узнать из конфига вашего форума)<br>В случае, если префикса вообще нет, тогда ничего не указывайте в переменной префикса этого блока!<br><br>" . mysql_error());
while ($row = $db->sql_fetchrow($result)) {

$postid = $row['postid'];
$postuser = $row['postusername'];
$postuser2 = $row['lastposter'];
$postrow = $row['daterow'];
$ptitle = $row['title'];
$pagehtml = $row['pagetext'];
$rcou = $row['replycount'];
$views = $row['views'];
$upid = $row['threadid'];
$piduser = $row['postuserid'];

if(strlen($pagehtml) >= $str);
$pagehtml = substr($pagehtml,0,$str);
if (strlen($pagehtml) >= $str) {
$pagehtml .= ".......";
}
if(strlen($ptitle) >= $str2);
$ptitle = substr($ptitle,0,$str2);
if (strlen($ptitle) >= $str2) {
$ptitle .= "<b>......</b>";
}

if ($ptitle > "") {
$content .="<tr><td width=62%><a href=$urlforum/showthread.php?goto=newpost&t=$upid title='Обсуждается пост автора $postuser далее цитата>>> $pagehtml'>$ptitle</a></td><td align=center><a href=$urlforum/member.php?u=$piduser title='контакт с автором этого топика ($postuser)'>$postuser</a></td><td align=center>$views</td><td align=center>&nbsp;$rcou</td><td align=center><a href=$urlforum/member.php?find=lastposter&t=$upid title='Последний, кто ответил в этой теме $postuser2'>$postuser2</a></td></tr>";
}
}
$content .="</table></fieldset>";
}

?>
можно и не использовать!
#1168
14.09.2010 15:23:32
Re: Как вывести в топик последние темы с форума

Потому как нужно лишнее немного вырезать. Пиши в аську будем разбираться.

#1177
15.09.2010 10:18:13
Re: Как вывести в топик последние темы с форума
InfinitI
Благодарствую))) То что я и хотел)))
#1197

Другие темы раздела