Вывод заголовков последних постов из форума на главную сайта

Автор Nimalo, 09 декабря 2005, 19:36:50

« назад - далее »

0 Пользователи и 6 гостей просматривают эту тему.

Nimalo

Всем привет!
Давно пользуюсь SMF и решил сделать вывод последних заголовков сообщений из форума на главную страницу сайта. Но не получилось разобраться с БД форума. Не нашел где хранится код блока "Последние сообщения" из информационного центра. (для разюора полетов :) )
Может кто подскажет или даст наводящий кусочек кода? :)

Mavn

Хм а ты не пробовал стандартными средствами форума воспользоватся ? :) например SSI.php примеры приведены в файле ssi_examples.php  можно выводить как сообщения так и сами темы :) там все просто :);)
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Nimalo

ну мягко говоря мне этот способ не нравится... жутко убойный скрипт SSI.php (впринципе как все  >:D) требуется быстрота, маленькая загрузка сервера, но чувствую мои требования невыполнимы :)

Mavn

SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

PaXaN

Интересно, никто так и не доделал эту весчь? Очень полезная примочка..

Mavn

Пользуйтесь стандартными средствами это уже заложено в функционале.
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

PaXaN

а по пальцам можно? :)

Такой-то код поставить на сайт чтобы грузились последние сообщения)

Mavn

В файлах ssi_examples.php и ssi_examples.shtml   приведены примеры использования SSI.php поставляются вместе в комплекте с форумом :);)
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

SAS

PaXaN ты чо, полно хаков и модов писано на эту тему, есть такой замечательный сайт, как http://www.joomlahacks.com - я уверен, ты найдешь там для себя много интересного  :)

вот ссылка на на мод который тебе нужен(чтоб не парился с поиском) - http://www.joomlahacks.com/component/option,com_remository/Itemid,41/func,fileinfo/id,301/

Mavn

Чтобы других не вводить в заблуждение Ваша ссылка предназначена для Joomla! Прошу сразу указывать, потому как далеко не все пользователи сидят на этой cms.
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

PaXaN

Вот млин... я аж сначала обрадовался :) действительно.. ведь я не использую Джумулу..)) просто форум...

Mavn

народ я не пойму почему Вы не хотите использовать стандартные функции по примеру ???
Пишем в начале файла

<?php
require(dirname(__FILE__) . '/SSI.php');
?>


Потом в нужном месте пишем это для вывода последних тем с форума:

<?php ssi_recentTopics(); flush(); ?>

Для вывода последних сообщений

<?php ssi_recentPosts(); flush(); ?>


и так далее как это приведено в выше указаных файлах
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

bboy sergy

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

<?php ssi_recentPosts(); ?>
Но форум лежит в другой папке. Где мне нужно прописать путь к файлу ssi.php?
заранее благодарен

Mavn

<?php
require(dirname(__FILE__) . '/SSI.php');
?>

'/SSI.php'   указываешь путь к файлу
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

bboy sergy

бяка вылазит в том месте вставляю вот такой код
   <?php
require(dirname(__FILE__) .'forum/SSI.php');
?>


а вот и сама бяка )
Warning: main(): Unable to access /home/khabar/public_html/shelter-plusforum/SSI.php in /home/khabar/public_html/shelter-plus/news.php on line 31

Warning: main(/home/khabar/public_html/shelter-plusforum/SSI.php): failed to open stream: No such file or directory in /home/khabar/public_html/shelter-plus/news.php on line 31

Warning: main(): Unable to access /home/khabar/public_html/shelter-plusforum/SSI.php in /home/khabar/public_html/shelter-plus/news.php on line 31

Warning: main(/home/khabar/public_html/shelter-plusforum/SSI.php): failed to open stream: No such file or directory in /home/khabar/public_html/shelter-plus/news.php on line 31

Fatal error: main(): Failed opening required '/home/khabar/public_html/shelter-plusforum/SSI.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/khabar/public_html/shelter-plus/news.php on line 31

Mavn

SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

bboy sergy


Mavn

Млин ну все правильно я то пример привожу как путь прописать к SSI.php переменые вывода сами подставляйте. Пример внизу и перед этим тоже был прописан!

<?php
require(dirname(__FILE__) .'/smf11rc2/SSI.php');
ssi_recentTopics(); flush();
?>

SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

bboy sergy


Mavn

SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

BookMaster

#20

<?php

include_once("Settings.php");
//$timeformatstring1 = "%B %d, %Y, %I:%M:%S %p";
$dbcon mysql_connect($db_server,$db_user,$db_passwd);
mysql_select_db ($db_name);
if (
$limit == null)
{
        
$limit 10;
}

$lasttop mysql_query("SELECT ID_TOPIC,subject,posterName,posterEmail,posterTime,ID_MEMBER  FROM wdn_messages ORDER BY ID_MSG DESC LIMIT $limit ");
$thead "<table cellpadding=2 cellspacing=2 border=0 width=100%>";
echo 
"document.writeln('$thead');";
for(
$i=0$i<mysql_numrows($lasttop); $i++)
{
$tlist=mysql_fetch_array($lasttop);
$posttimestr date("H:i",$tlist[posterTime]);
//$posttime = strftime($timeformatstring,$tlist[posterTime]);
//$posttimestr = substr($posttime,strrpos($posttime,",")+1,9);
$topicsel mysql_query("SELECT ID_TOPIC,ID_BOARD FROM wdn_topics WHERE ID_TOPIC = $tlist[ID_TOPIC]");
$topicstr=mysql_fetch_array($topicsel);
$boardID $topicstr[ID_BOARD];
$boardsel mysql_query("SELECT ID_BOARD,name FROM wdn_boards WHERE ID_BOARD = $boardID");
$boardstr=mysql_fetch_array($boardsel);
$boardname $boardstr[name];
$postername rawurlencode($tlist[posterName]);
if (
$tlist[ID_MEMBER]!= (-1)){
$temptr "<tr><td valign=top bgcolor=#F5F5F5 width=30% align=left valign=top><a target=_blank target=_blank href=http://www.forum.bryansktalk.ru/index.php?board=$boardID><b>[$boardname]</b></a></td><td valign=top bgcolor=#F5F5F5 width=30%><a target=_blank target=_blank href=http://www.forum.bryansktalk.ru/index.php?board=$boardID;action=display;threadid=$tlist[ID_TOPIC];start=10000#lastpost>".substr($tlist[subject],0,25)."...</a></td><td valign=top bgcolor=#F5F5F5 width=20%>автор:<br>  <a target=_blank href=http://www.forum.bryansktalk.ru/index.php?action=viewprofile;user=$postername>$tlist[posterName]</a></td><td valign=top bgcolor=#F5F5F5  width=35% align=right><b> в $posttimestr</b></td></tr>";
echo 
"document.writeln ('$temptr');";
} else {
if (
$tlist[ID_MEMBER]= (-1))
$temptr "<tr><td valign=top bgcolor=#F5F5F5 width=30% align=left valign=top><a target=_blank target=_blank href=http://www.forum.bryansktalk.ru/index.php?board=$boardID><b>[$boardname]</b></a></td><td valign=top bgcolor=#F5F5F5 width=30%><a target=_blank target=_blank href=http://www.forum.bryansktalk.ru/index.php?board=$boardID;action=display;threadid=$tlist[ID_TOPIC];start=10000#lastpost>$tlist[subject]</a></td><td valign=top bgcolor=#F5F5F5 width=20%>автор:<br> $tlist[posterName]</td><td valign=top bgcolor=#F5F5F5 width=35% align=right><b>Сегодня</b> в $posttimestr</td></tr>";
echo 
"document.writeln('$temptr');";
}
}
$tfoot "</table>";
echo 
"document.writeln('$tfoot');";

mysql_close();
exit;
?>




результат можно посмотреть тут, например... http://www.bryansktalk.ru. Единственно минус - выводятся ВСЕ темы, в т.ч. и из закрытых для гостей разделов.

Mavn

В последней версии 1.1 rc2 эта проблема решена! Так что советуем обновится! :) ;)
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Olkon

SAS
Цитироватьесть такой замечательный сайт, как http://www.joomlahacks.com - я уверен, ты найдешь там для себя много интересного  Smiley

вот ссылка на на мод который тебе нужен(чтоб не парился с поиском) - http://www.joomlahacks.com/component/option,com_remository/Itemid,41/func,fileinfo/id,301/

Как его правильно устанавливать? Где указывать путь к форумум как минимум? Т.к. я его тупо поставил он так же тупо и не работает, что в общем не удивительно.

Можно конечно написать модуль на основе SSI.php, но ИМХО глупо писать когда уже есть готовый, тем более что я тот еще писатель... :)

SAS

"тупо поставил" - это как ?
и что не работает, ты в настройки этого компонента заглядывал ?

Olkon

SAS

Тупо это инсталлером джумлы инсталировал и все.

Далее это ведь не компонент это модуль насколько я понял и ставится он как модуль. Ну есть там какие-то настройки. Но я в нем поковырялся и пришел к выводу что он требует чтоб форум был в той же базе что и джумла. А у меня в разных. у меня пользователи с форума и публикаторы с сайта на пересекаются и я не вижу смысл ставить мост, который так же требует одной базы. А мне кажется что в разных базах держать надежнее может я и не прав.

Интресно там внутри модуля есть переменная $datbase если ее переопредлить на другую базу будет работать или есть нормальное средство без залезания в кишки коду?

Duba

Короче. Если не хотите сси, то вот вам примерный код с комментами, вырезал ненужное. Взято с даннео.ком и один запрос там точно лишьний к базе, но все же. (кстати, когда интегрирую смф в смаллнюку, то будет вам для нее и посты и совместная регистрация).
Сразу говорю, что вывод из этого блока делайте какой под ваш сайт, т.е. принтом, эхом иль как у вас реализовано

<?php
$hostname 
"localhost"//Имя хоста - обычно localhost
$namebase "smf";       //Имя базы данных
$nameuser "arisfera";  //Логин для доступа к базе данных
$password "pxNR49";    //Пароль для доступа к базе данных
$basepref "smf";    //Префикс таблиц форума
$limit 10;          //Количество последних сообщений

$connection = @mysql_connect($hostname,$nameuser,$password);
@
mysql_select_db($namebase,$connection);

$lasttop mysql_query("SELECT ID_TOPIC,subject,posterName,posterEmail,posterTime,ID_MEMBER  FROM ".$basepref."_messages ORDER BY ID_MSG DESC LIMIT $limit");

$block_cont .= "<table cellpadding=2 cellspacing=3 border=0 width=100%><tr>";
$block_cont.="<td width=30%><b>Форум:</b></td>\n";
$block_cont.="<td width=30%><b>Последнее сообщение в теме:</b></td>\n";
$block_cont.="<td width=10%><b>Автор:</b></td>\n";
$block_cont.="<td width=10%><b>Дата:</b></td>\n";
$block_cont.="</tr>\n";
for(
$i=0$i<mysql_numrows($lasttop); $i++)
{
$tlist=mysql_fetch_array($lasttop);
$posttimestr date("d-m-y",$tlist[posterTime]);
$topicsel mysql_query("SELECT ID_TOPIC,ID_BOARD FROM ".$basepref."_topics WHERE ID_TOPIC = $tlist[ID_TOPIC]");
$topicstr=mysql_fetch_array($topicsel);
$boardID $topicstr[ID_BOARD];
$boardsel mysql_query("SELECT ID_BOARD,name FROM ".$basepref."_boards WHERE ID_BOARD = $boardID");
$boardstr=mysql_fetch_array($boardsel);
$boardname $boardstr[name];
$postername rawurlencode($tlist[posterName]);

$block_cont .= "<tr><td width=30%><a href=forum/index.php?board=$boardID>$boardname</a></td>";
$block_cont .= "<td width=30%><a href=forum/index.php?board=$boardID;action=display;threadid=$tlist[ID_TOPIC];start=10000#lastpost>".substr($tlist[subject],0,25)."...</a></td>";
$block_cont .= "<td width=10%><a href=forum/index.php?action=viewprofile;user=$postername>$tlist[posterName]</a></td>";
$block_cont .= "<td width=10%>$posttimestr</td></tr>";
}
$block_cont .= "</table>";
return 
$block_cont;

?>


mcmadcat

2Букмастер: Гы-Гы... И тут встретились...
Вот мой вариант. Мне нравится больше:
<?
require_once('./forum/SSI.php');
echo "<hr>";
echo "Последнее на форуме: <br />";
$forumbase = mysql_connect($db_server,$db_user,$db_passwd);
mysql_query("set NAMES cp1251", $forumbase );
mysql_select_db($db_name,$forumbase);

$sql_topics_names = mysql_query("SELECT * FROM `".$db_prefix."messages` ORDER BY `ID_MSG` DESC , `ID_TOPIC` DESC LIMIT 0 , 10 ", $forumbase )
or die ("Invalid query");
while ($topic_name=mysql_fetch_object($sql_topics_names))
{
$mad_shorttitle = substr($topic_name->body,0,32);
if (strlen($topic_name->body)>32) $mad_shorttitle.="...\n[кликните для прочтения полного ответа]"; else  $mad_shorttitle.="";
$sql_board_names = mysql_query("select description,name from ".$db_prefix."boards where ID_BOARD='$topic_name->ID_BOARD'", $forumbase )
or die ("Invalid query");
$board_name=mysql_fetch_object($sql_board_names);
mysql_free_result($sql_board_names);
echo "[<a href=\"$boardurl/index.php?board=$topic_name->ID_BOARD\" target=\"blank\" title=\"$board_name->description\">".$board_name->name."</a>] ";
echo " В тему ";
echo "<img src=\"".$settings['images_url']."/post/".$topic_name->icon.".gif\" border=0>";
echo " «<a href=\"$boardurl/index.php?topic=$topic_name->ID_TOPIC.0\" target=\"_blank\" title=\"$mad_shorttitle\">$topic_name->subject</a>»";
echo " пользователем ";
$sql_members_names = mysql_query("select realName,ID_MEMBER from ".$db_prefix."members where memberName='$topic_name->posterName'", $forumbase )
or die ("Invalid query");
$member_name=mysql_fetch_object($sql_members_names);
mysql_free_result($sql_members_names);
echo "<a href=\"$boardurl/index.php?action=profile;u=$member_name->ID_MEMBER\" target=\"_blank\">$member_name->realName</a>";
echo " в ";
echo date("H:i:s d.m.Y" ,$topic_name->posterTime);
echo "<br />";
}
mysql_free_result($sql_topics_names);
echo "<hr>";
echo "Онлайн: <br />";
$sql_online_ids = mysql_query("SELECT ID_MEMBER FROM `".$db_prefix."log_online`", $forumbase )
or die ("Invalid query3");
while ($online_id=mysql_fetch_object($sql_online_ids))
{
$sql_online_names = mysql_query("select realName from ".$db_prefix."members where ID_MEMBER='$online_id->ID_MEMBER'", $forumbase )
or die ("Invalid query4");
$online_name=mysql_fetch_object($sql_online_names);
//echo $online_name->realName." ";   
echo "<a href=\"$boardurl/index.php?action=profile;u=$online_id->ID_MEMBER\" target=\"_blank\">$online_name->realName</a>";
echo "<hr>";
}
?>

Enemy

капец у мня не работает...
версия форума 1.1 RC2
в папке /forum/ 

а ставлю модуль (у меня джумла) вобще не отображает поле модуля ничего на сайте

Андрей К

2 mcmadcat : спасибо за код - применил - все работает!

2 Enemy  : может переменные не выставил? имя хота, бд, юзера? я поначалу ступил ))
Приглашаем к общению рок-музыкантов - www.sakharock.ru

Nik


<?php
require(dirname(__FILE__) .'/smf11rc2/SSI.php');
ssi_recentTopics(); flush();
?>


Хм... У меня этот код не работает - говорит, что файл SSI.php не найден :(  Правда, у меня код вызывается из файла joomla/templates/megabyte/index.php
Я так понимаю, в примере путь отсчитывается от другой точки. Впорос к знатокам php - как получить правильный путь к корню сайат (и далее - от него к моему файлу)?
: 13 Июня 2006, 19:51:42
Все, я разобрался. Чтобы получить путь относительно корня сайта, используйте такую запись:


require($_SERVER['DOCUMENT_ROOT'] .'/forum/SSI.php');
И время всякому делу под небесами!
Lazarus: секреты и советы.

Pirat

<?php
defined
'_VALID_MOS' ) or die( 'Hacking attempt...' );
include_once ("http://smf.ru/SSI.php?ssi_function=recentPosts");
?>

это текст модуля для Joomla который выводит последние посты)
у меня все работает на 5 баллов, а главное просто...
функцию  "recentPosts" можно поменять на "recentTopics" и т.д.
: 15 Июня 2006, 19:50:07
попробуйте  :) может кому нить понравиться))

boston


Странник

Есть аналогичный вопрос по выводу последних топов и использованию ssi_examples.shtml и ssi_examples.php в движке ДЛЕ. Кто нибудь сталкивался с этим? Я пытлся подключить вывод как доплнительный мод, вроде всё получается, но выводиться только в верху страницы, а не в указанном месте.

Mavn

вывод настраивается в самом движке и теме оформления данного движка соответственно ищите в шаблоне то место где вам нужно вывести сообщения
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

SergeyB

Подскажите пожалуйста, как вывести последние сообщения на site.ru если форум лежит в поддомене - forum.site ru?

Mavn

пропиши в коде абсолютный путь к SSI.php  после чего получишь возможность использовать возможности данного скрипта
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

SergeyB

Спасибо, пробовал, не работает - у апача хостера нет возможности выхода из директори_рут домена  и перехода в директори_рут поддомена.

SergeyB

может есть какое-то решение вывести сообщения форума на заглавную страницу сайта, если форум находится в поддомене? Спасибо

Mavn

SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

SergeyB

Все вывел - работает вот так:

      <?php
                include ("http://forum.site.ru/SSI.php?ssi_function=recentPosts");
                ?>

Теперь возник другой вопрос, как на этот вывод наложить форматирование (фонт, размер, цвет фонта и т.д.) - т.е. привести к виду всей страницы?

По идее должно работать так
<div class="такой-то">
      <?php
                include ("http://forum.site.ru/SSI.php?ssi_function=recentPosts");
                ?>
</div>

Но не работает.

Спасибо.

Mavn

#40
если не ошибаемся то лучше сделать это в SSI.php

Добавлено

<table border="0" class="ssi_table">';
foreach ($posts as $post)
echo '
<tr>
<td align="right" valign="top" nowrap="nowrap">
[', $post['board']['link'], ']
</td>
<td valign="top">
<a href="', $post['href'], '">', $post['subject'], '</a>
', $txt[525], ' ', $post['poster']['link'], '
', $post['new'] ? '' : '<a href="' . $scripturl . '?topic=' . $post['topic'] . '.msg' . $post['new_from'] . ';topicseen#new"><img src="' . $settings['images_url'] . '/' . $context['user']['language'] . '/new.gif" alt="' . $txt[302] . '" border="0" /></a>', '
</td>
<td align="right" nowrap="nowrap">
', $post['time'], '
</td>
</tr>';
echo '
</table>';
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

SergeyB


Mavn

далеко не все и не всегда проверь посмотри код мы привели выше
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

SergeyB


shadowless

При генерации последних постов выдает сообщение:

Notice: Undefined offset: 1 in /mounted-storage/home23b....../smf/Sources/Subs.php on line 2199
....
Notice: Undefined offset: 20 in /mounted-storage/home23b....../smf/Sources/Subs.php on line 2199

А затем выдает ниже последние посты из форума. Как убрать эти нотицы? За ранее благодарю.

shadowless

Удалил строка 2199:

// Escape a bunch of smiley-related characters in the description so it doesn't get a double dose :P.
         $smileytocache[] = '<img src="' . $modSettings['smileys_url'] . '/' . $user_info['smiley_set'] . '/' . $smileysto[$i] . '" alt="' . strtr(htmlspecialchars($smileysdescs[$i]), array(':' => ':', '(' => '(', ')' => ')', '$' => '$', '[' => '[')) . '" border="0" />';

Теперь нормально отображается... Для чего вообще нужна эта строка, как я понял что то со смайлами мудрит?


jox666

Люди! Перепробовал все способы, ни один не помогает. В результате просто ничего.... ни ошибок, ни предупреждений.... просто в том месте, ничего не появляется  :'(
Может кто знает, как еще можно это реализовать? ну ооочень надо  :-\

sever_1978

Подскажите пожалуйста где можно убрать кавычки,на разделах.А то некрасиво.
Спасибо заранее.
Александр Северский

Mavn

SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.