Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Страницы 1
Тема закрыта
Подскажите есть ли такой скрипт. Нужно на главной странице сайта в блоке вывести последние изменённые темы punbb
Все уже есть.
См файл:
extern.php
Для своего сайта я делал так.Был блок для phpnuke
Маленько модифицировал для Slaed
В действии можешь глянуть на сайте www.pe4ora.ru
<?php
if (!defined('BLOCK_FILE')) {
Header("Location: ../index.php");
exit;
}
# Этот блок предназначен для вывода ообщений с форума punBB
#
# TODO:
# есть 7 переменных которые вам надо описать:
# $pbb_dbhost - хост где расположена база форума
# $pbb_dbuser - имя юзера для доступа к базе
# $pbb_dbpass - пасс юзера для доступа к базе
# $pbb_dbname - название базы данных в которую установлен форум
# $pbb_dbprefix - префикс баз данныз форума
# $pbb_path - писать в виде ссылки!(как в примере внизу)..думаю смысл понятен
#
# iSage 2006.
$pbb_dbname = "**********";
$pbb_dbprefix = "pun";
$pbb_dbhost ="localhost";
$pbb_dbuser = "************";
$pbb_dbpass= "**************";
$pbb_path = "http://pe4ora.ru/forum";
$xdbx=mysql_connect($pbb_dbhost, $pbb_dbuser, $pbb_dbpass,true);
mysql_select_db($pbb_dbname,$xdbx);
$content ="<center>Последние сообщения</center><br>";
$a = 1;
$result = mysql_query("SELECT a.id,a.subject,FROM_UNIXTIME(a.last_post,'%d/%m/%Y в %T') as last_post,a.last_poster,b.id from ".$pbb_dbprefix."topics a LEFT JOIN ".$pbb_dbprefix."users b ON b.username=a.last_poster ORDER BY a.last_post DESC LIMIT 0, 7", $xdbx);
while(list($topic_id,$topic_name, $post_time,$poster_name,$poster_id) = mysql_fetch_row($result))
{
$content .="<STYLE=\"text-decoration: none\"><font color=\"#666666\"><b>Тема: <br></b>";
$content .= "<a href=\"$pbb_path/viewtopic.php?id=$topic_id&action=new\"STYLE=\"text-decoration: none\"><b> $topic_name</b></a><br><font color=\"#666666\"><i>Автор <A HREF=\"$pbb_path/profile.php?id=$poster_id\"STYLE=\"text-decoration: none\">$poster_name</a><br> $post_time</i></font><br><br>";
$a++;
}
mysql_close($xdbx);
?>
Редактировался hcs (2007-02-05 05:20:31)
abend
когда пишешь код, лучше всего его вставлять в теги [code ] и [/code ]
В моде punportal есть такой пример. я немного изменил его под себя.
Не совсем понятно что значит "на главной странице сайта". Сайт поддерживает, например, авторизацию через форум punbb или имеет собственный механизм? Стили форума включены на главной странице? Если да - то вот подходящий код:
<div class="block">
<h2><span><? echo $lang_portal['Recent Topics']; ?></span></h2>
<div class="box">
<div id="recenttopics" class="inbox">
<?php
$topictodisplay = '10';
$result = $db->query('SELECT t.subject, t.id '.
'FROM '. $db->prefix.'topics AS t '.
'INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id '.
'LEFT JOIN '. $db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].') '.
'WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL'.
'ORDER BY t.last_post DESC LIMIT '. $topictodisplay)
or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
while($cur_topic = $db->fetch_assoc($result))
{
$caption = $cur_topic['subject'];
// truncate subject if necessary. approx 22 (mulibyte) characters for 190px column
if (mb_strlen($caption) > 22) {
$alt = ' title="'.pun_htmlspecialchars($caption).'"';
$caption = pun_htmlspecialchars(mb_substr($caption, 0, 21)).'…';
} else {
$caption = pun_htmlspecialchars($caption);
$alt = '';
}
echo "\t<ul><li>» <a href=\"".$pun_config['o_base_url'].'/topic/'.$cur_topic['id'].'"'.$alt.'>'.$caption."</a></li></ul>\n";
}
?>
</div>
</div>
</div>
Так же сделали выход 10 последних сообщений с форума на главную. Вроде всё работает не плохо.
Приветствую, у меня возникала небольшая проблема по теме, в файле extern.php есть небольшой пример:
Show the 15 most recently active topics from all forums:
include('http://host.com/forums/extern.php?action=active');
Делаю так:
include('/путь/к/корню/forums/extern.php?action=active');
но не получается, выводится сообщение:
Warning: include(/путь/к/корню/forums/extern.php?action=active) [function.include]: failed to open stream: No such file or directory in /путь/к/корню/content/support.inc.php on line 12
Warning: include() [function.include]: Failed opening '/путь/к/корню/forums/extern.php?action=active' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /путь/к/корню/content/support.inc.php on line 12
Путь к файлу точно верный, в чём проблема, подскажите пожалуйста?
Редактировался Dios (2007-09-04 12:43:47)
Dios, это неправильный синтаксис. оно и не должно работать
КСТАТИ О ПРИМЕРЕ: include('http://...') будет работать только если PHP имеет специальные настройки для этого. по-умолчанию такое невозможно.
а в виндовой версии php это может не заработать в принципе. на хостинге провайдер скорее всего закрыл такую возможность, чтобы голова меньше болела. вобщем забудь про include 'http:...'.
если ты НЕ указал протокол http или ftp, то php ищет на диске файл с именем "extern.php?action=active" — прямо вот так, с вопросиком. такого файла конечно нет, о чем тебе и сообщается.
и вообще, если тебе удастся заинклудить extern.php то появятся новые ошибки из-за повторного использования общих файлов (операторы require...)
все плохо, но решение есть: http://punbb.org/forums/viewtopic.php?pid=90394#p90394
на самом деле вывод последних сообщений с твоего же сайта через подключение extern — это лишний расход ресурсов. лучше все-таки сделать на базе примера из punportal.
artoodetoo, спасибо тебе за оперативную помощь, ты внёс ясность в мой затуманеный моск )
Самым простым для меня решением оказалось: Новостная лента
тоже неплохо
Непонятная штука получается:
в адресной строке ввожу
http://www.мой_сайт.ru/forum/extern.php?action=active
ничего не отображается
.. а вот
http://www.мой_сайт.ru/forum/extern.php?action=online
http://www.мой_сайт.ru/forum/extern.php?action=online_full
http://www.мой_сайт.ru/forum/extern.php?action=stats
отображаются
Ваще ничего непонимаю...
Редактировался Advan (2007-10-21 14:25:56)
У меня такая проблема сайт находится на адресе domen.ru, а форум на forum.domen.ru чего-то ни один из выше названных вариантов не заработал.
Есть какие-нить ещё варианты попроще?
Редактировался jeder (2007-10-22 19:17:05)
Непонятная штука получается:
в адресной строке ввожу
http://www.мой_сайт.ru/forum/extern.php?action=active
ничего не отображается.. а вот
http://www.мой_сайт.ru/forum/extern.php?action=online
http://www.мой_сайт.ru/forum/extern.php?action=online_full
http://www.мой_сайт.ru/forum/extern.php?action=stats
отображаютсяВаще ничего непонимаю...
[size=16]Неужели никто не поможет понять в чем дело?![/size]
Ну у вас то наверняка все выводится!!!? Подскажите, где собака зарыта???
Редактировался Advan (2007-10-31 21:41:18)
Заметил небольшое неудобство при использовании extern.php. Если вывод использовать на форуме, и при этом быть "залогиненным", то при переходе по ссылке на тему мы попадаем к первому непрочитанному сообщению (ссылка вида *action=new). Но если мы выводим, например, список последних активных тем на сайте (или на форуме, но при этом "не залогинены") и переходим на тему по ссылке вида *action=new, то всегда попадаем на первое сообщение темы, даже если тема на нескольких страницах. Мне это показалось не очень удобным, поэтому чуть изменил extern.php. ~255 строка:
echo '<li><a href="'.$pun_config['o_base_url'].'/viewtopic.php?id='.$cur_topic['id'].'&action=new" title="'.pun_htmlspecialchars($cur_topic['subject']).'">'.$subject_truncated.'</a></li>'."\n";
Заменим на:
echo '<li><a href="'.$pun_config['o_base_url'].'/viewtopic.php?id='.$cur_topic['id'].'&action=last" title="'.pun_htmlspecialchars($cur_topic['subject']).'">'.$subject_truncated.'</a></li>'."\n";
В итоге, мы всегда будем переноситься к последнему сообщению в теме по клику на ссылку из вывода extern.php, что гораздо удобнее, имхо. Стоит подчеркнуть, что это незначительное изменение тестировалось лишь на выводе последних активных тем (Output - regular HTML), понятия не имею, как оно затронет вывод RSS и остальные функции. Скорее всего никак, но стоит иметь это ввиду
У меня возникает другая проблема
ввожу в адресную строку:
http://forum.jeder.ru/extern.php?action=active
Выскакивает ошибка:
Fatal error: Call to undefined function my_strlen() in /home/......../forum/include/functions.php on line 861
Вот содержимое functions.php:
// Equivalent to strlen(), but counts &#[0-9]+ as one character (for unicode)
//
function pun_strlen($str)
{
// FIX FOR UTF-ENCODING
// Original:
//return strlen(preg_replace('/&#([0-9]+);/', '!', $str));
//return mb_strlen(preg_replace('/&#([0-9]+);/', '!', $str));
//return strlen(utf8_decode($str));
return my_strlen($str);
}
861 строчка это return my_strlen($str);
поставил в начале //
т.е. так получилось:
// Equivalent to strlen(), but counts &#[0-9]+ as one character (for unicode)
//
function pun_strlen($str)
{
// FIX FOR UTF-ENCODING
// Original:
//return strlen(preg_replace('/&#([0-9]+);/', '!', $str));
//return mb_strlen(preg_replace('/&#([0-9]+);/', '!', $str));
//return strlen(utf8_decode($str));
//return my_strlen($str);
}
всё заработало.
У меня форум в windows-1251 кодировке.
То, что я сделал, как-нить на его работе отразится?
И ещё вопрос. Выводится при этой команде только название темы, а как сделать вывод самого сообщения?
Не делайте так! Сообщения начинают выводиться на главной, но в результате этого новые пользователи не могут зарегистрироваться на форуме.
Взаимосвязь и решение проблемы в процессе поиска.
Редактировался jeder (2008-05-08 13:33:40)
У меня так же не работает, хотя всё работало.
ton96
Если у тебя всё работало, то зачем ты менял что-то?
jeder Скачай из новой сборки extern.php
ну а вот скинуть готовый файл рабочий с новосной лентой не как? вот не че не понял вроде все как надо делал м не че... скиньте кто нить готовый нормальный файл extern
Все уже есть.
См файл:
extern.php
а у меня там кодировочка косячная... как быть ?
Ещё вопрос возник.
Можно ли с помощью extern.php выводить на сайт первое сообщение из новой темы на форуме?
Чтобы именно сам текст сообщения был.
Страницы 1
Тема закрыта