Nokoll Опубликовано 16 Сентября 2009 Жалоба Поделиться Опубликовано 16 Сентября 2009 Здравствуйте, есть ли скрипт для сайта(движок свой) последние темы с форума? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Ritsuka Опубликовано 16 Сентября 2009 Жалоба Поделиться Опубликовано 16 Сентября 2009 Ну если движок свой, то смело пишите такой скрипт сами) Запрос SQL:SELECT tid, title, starter_name, views FROM ibf_topics WHERE approved = 1 ORDER BY start_date DESC LIMIT 0, 10 Формирование ссылки на топик:http://example.com/index.php?showtopic=$tid Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FarStar Опубликовано 16 Сентября 2009 Жалоба Поделиться Опубликовано 16 Сентября 2009 Ну, это еще не все. Надо еще добавить: последний пост из темы, проверку на права доступа к форуму (чтобы были доступны темы только из тех форумов, которые доступны гостям). Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Nokoll Опубликовано 17 Сентября 2009 Автор Жалоба Поделиться Опубликовано 17 Сентября 2009 Сделал, скрипт работает каму нада берите.Правдо мусора много ну мне влом чистить.<?php header("Content-Type: text/html; charset=UTF-8",true) ?> <?php //======[ОСНОВНЫЕ НАСТРОЙКИ]====== //Префикс таблицы с IPB $prefix = ''; //Сколько тем выводить $num = 10; //Сколько символов оставить в названии темы после урезания $topic_num_sym = 40; //Имя папки с картинками текущего скина $img_path = '1'; //Формат времени $time = 'd.m H:i'; //Форумы, которые мы не трогаем $forumexclude = '11,21'; //Сервер БД на котором висит база форума $host="localhost"; //Имя БД $database="forum"; //Логин БД $username="Имя"; //Пароль БД $password="Пароль"; //====[Если не знаем 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"; } $bt = "<table width=\"100%\" border=\"0\" cellpadding=\"2\" cellspacing=\"1\" bgcolor=\"#dee2e5\">"; $bt.= "<th width=\"60%\" height=\"26\" align=\"center\"><font class=\"storytitle\">Название темы</font></th>"; $bt.= "<th width=\"10%\" height=\"26\" align=\"center\"><font class=\"storytitle\"><b>Автор</b></font></th>"; $bt.= "<th width=\"5%\" height=\"26\" align=\"center\"><font class=\"storytitle\">Ответов</font></th>"; $bt.= "<th width=\"5%\" height=\"26\" align=\"center\"><font class=\"storytitle\">Просмотров</font></th>"; $bt.= "<th width=\"20%\" height=\"26\" align=\"center\" colspan=\"2\"><font class=\"storytitle\"><b>Последний ответ</b></font></th>"; $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=\"В сообщении есть прикрепленные файлы\"> " : ""; $icon = ($row_resultf['icon_id'] == "0") ? " <img border=\"0\" src=\"temp/Default/images/icon.gif\"> " : "<img src=\"forum/style_images/$img_path/folder_post_icons/icon$icon_id.gif\" border=\"0\" alt=\"Иконка сообщения\"> "; $last_date = date($time,$row_resultf['last_post']); $bt.= "<tr>"; $bt.= "<td bgcolor=\"#FFFFFF\">"; $bt.= "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"#FFFFFF\"><tr>"; $bt.= "<td>$icon</td>"; $bt.= "<td width=\"100%\"><a title=\"".$row_resultf['description']."\" href=\"forum/index.php?showtopic=".$row_resultf['tid']."&view=getlastpost\">$topicstrip</a></td>"; $bt.= "<td align=\"center\" valign=\"middle\">$attach</td>"; $bt.= "<td align=\"center\" valign=\"middle\">$status</td>"; $bt.= "</tr></table></td>"; $bt.= "<td bgcolor=\"#FFFFFF\" align=\"center\"><a href=\"forum/index.php?showuser=".$row_resultf['starter_id']."\">".$row_resultf['starter_name']."</a></td>"; $bt.= "<td bgcolor=\"#FFFFFF\" align=\"center\">".$row_resultf['posts']."</td>"; $bt.= "<td bgcolor=\"#FFFFFF\" align=\"center\">".$row_resultf['views']."</td>"; $bt.= "<td bgcolor=\"#FFFFFF\" align=\"center\">$last_date</td>"; $bt.= "<td bgcolor=\"#FFFFFF\" align=\"center\"><a href=\"forum/index.php?showuser=".$row_resultf['last_poster_id']."\">".$row_resultf['last_poster_name']."</a></td>"; $bt.= "</tr>"; } while($row_resultf = mysql_fetch_assoc($resultf)); $bt.= "</table>"; mysql_free_result($resultf); echo $bt; return $bt; ?> Подскажите название талицы, с самим 1м сообщением, хочу сделать вывод ещё и с самим сообщением естественно ограниченным по количеству букаф. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FarStar Опубликовано 17 Сентября 2009 Жалоба Поделиться Опубликовано 17 Сентября 2009 ibf_posts, связь через topic_id. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Ritsuka Опубликовано 17 Сентября 2009 Жалоба Поделиться Опубликовано 17 Сентября 2009 Топорненько так ^^' Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 KveSteR Опубликовано 17 Сентября 2009 Жалоба Поделиться Опубликовано 17 Сентября 2009 Переделайте под трешку пожалуйста кто нибудь этот скрипт.<? // ******************************************* // // Оригинальная идея Miles Johnson. // // Дополнение: HungerGhost // // Schnapz // // mrMad-Cat // // Дополнительная информация в readme.html // // ******************************************* // $i=1; $posts = 10; $showtopiclength = 1; $topiclength = 35; $forumexclude = "26"; $datedisplay = 'd F Y'; // Скрипт работает на российском 24х часовом формате показа времени // Так что следующие две строки не меняем :) $hours_display='H'; $minutes_display = 'i'; // Сюда вводим размер коррекции по часам и по минутам // Если не нужны - ставим нули $hours_corrector = 0; $minutes_corrector = 0; require "ips_kernel/class_db_mysql.php"; require "conf_global.php"; $db = new db_driver_mysql; $db->obj['sql_database'] = $INFO['sql_database']; $db->obj['sql_user'] = $INFO['sql_user']; $db->obj['sql_pass'] = $INFO['sql_pass']; $db->obj['sql_host'] = $INFO['sql_host']; $db->obj['sql_tbl_prefix'] = $INFO['sql_tbl_prefix']; $db->connect(); ob_start(); $getposts = $db->query("SELECT posts, last_poster_name, last_poster_id, title, tid, forum_id, last_post FROM ibf_topics WHERE (forum_id NOT IN ($forumexclude)) ORDER BY last_post DESC LIMIT $posts"); while ($post = $db->fetch_row($getposts)) { $post[full_title] = $post[title]; if ($showtopiclength == 1 AND strlen($post[full_title]) > $topiclength) { $post[short_title] = substr($post[full_title],0,$topiclength); $post[short_title] = $post[short_title]."..."; } else { $post[short_title] = $post[full_title]; } $posted_on = date($datedisplay, $post[last_post]); $today_date = date($datedisplay, time()); $hours_edited = substr(date($hours_display, $post[last_post]),0,2); $hours_edited = $hours_edited + $hours_corrector; if ($hours_edited == 24) {$hours_edited = "00";} if ($hours_edited > 24) {$hours_final =$hours_edited - 24; $hours_edited = "0".$hours_final;} $minutes_edited = substr(date($minutes_display, $post[last_post]),0,2); $minutes_edited = $minutes_edited + $minutes_corrector; if ($minutes_edited == 60) {$minutes_edited = "00";} if ($minutes_edited > 60) {$minutes_final = $minutes_edited - 60; } else {$minutes_final = $minutes_edited; } if ($minutes_final < 10) { $time_edited = $hours_edited.":0".$minutes_edited; } else { $time_edited = $hours_edited.":".$minutes_edited; } If ($posted_on == $today_date) { $datefield = "Сегодня"; $datefield = $datefield . ", " . $time_edited; } elseif (date('d F Y',strtotime("-1 day")) == $posted_on) { $datefield = "Вчера"; $datefield = $datefield . ", " .$time_edited; } else { $datefield = $posted_on; } // Вывод информации (Вы можете изменить вывод для своего дизайна сайта, примеры представлены в readme.html) echo <<<EOD <li> <noindex><a rel="nofollow" href="$INFO[board_url]/index.php?showtopic=$post[tid]&view=getnewpost">$post[short_title]</a><br><span class="meta">[<a href="$INFO[board_url]/index.php?showuser=$post[last_poster_id]">$post[last_poster_name]</a> - $datefield]</span><br></noindex> </li> EOD; } $tmp = ob_get_contents(); ob_end_clean(); echo iconv('CP1251','UTF-8', $tmp); ?> Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 thesan Опубликовано 18 Сентября 2009 Жалоба Поделиться Опубликовано 18 Сентября 2009 Nokollу меня база своей цмс - cp1251 а с форума этот скрипт выдает крякозяблы вместо русского(( Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FarStar Опубликовано 18 Сентября 2009 Жалоба Поделиться Опубликовано 18 Сентября 2009 Используйте iconv, примерно так: iconv("UTF-8","windows-1251",$data['post']); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 KveSteR Опубликовано 18 Сентября 2009 Жалоба Поделиться Опубликовано 18 Сентября 2009 Nokollу меня база своей цмс - cp1251 а с форума этот скрипт выдает крякозяблы вместо русского(( В том скрипте что я выложил в строке(самый конце) "echo iconv('CP1251','UTF-8', $tmp);", поменяй местами 'CP1251' на 'UTF-8' Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 thesan Опубликовано 18 Сентября 2009 Жалоба Поделиться Опубликовано 18 Сентября 2009 А можно как нить сделать чтоб не последние темы выводил а текст последних сообщений (обрезанный)? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 KveSteR Опубликовано 18 Сентября 2009 Жалоба Поделиться Опубликовано 18 Сентября 2009 Мои знания php на очень слабом уровне. насколько понимаю тут цепляется последнее сообщение, когда с базы данные выводятся, значит можно. Только вот одаптровал бы его кто для тройки.Проблема в том, что здесь используются из файла class_db_mysql.php. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 frostbite Опубликовано 12 Февраля 2010 Жалоба Поделиться Опубликовано 12 Февраля 2010 каким оператором можно вывести название форума в котором находится тема? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 tolik777 Опубликовано 12 Февраля 2010 Жалоба Поделиться Опубликовано 12 Февраля 2010 Подскажите а как вот этот скрипт приспособить для тройки (до этого на 2.3.х работал):<? // **************************************** // // Original mod submitted by Miles Johnson. // // Completely rewritten by Anthony Petito.. // // Modify and locate by Barinyn Vladimir // // V2.0: 4 April 2005...................... // // V2.1: 10 April 2005..................... // // V2.1.1: 6 October 2005.................. // // **************************************** // // Этот мод выводит последние Х постов из ващего форума в любое место на Вашем сайте // Эта новая версия локализована и позволяет выводить коротко начало последнего поста в теме. // Поместите этот файл в директорию, куда установлен Ваш форум (например, http://domain.tld/forum. // Вставьте этот код в то место у себя на сайте, где хотите выводить последние топики: /* <?php include("http://domain.tld/forum/latest_posts.php");?> */ /////////////////////////////////// // Отредактируйте настройки мода // /////////////////////////////////// // Количество последних постов $posts = 10; // Выводить начало поста? $showposttext = 1; // Обрезать длинные топики $showtopiclength = 1; // Длинна топика и длинна сообщения $topiclength = 40; $postlength = 100; // Форумы из которых НЕ ВЫБИРАТЬ последние топики $forumexclude = "12,13,20,30,36,38,39"; $datedisplay = 'd F Y'; $timedisplay = 'H:i'; $rusmonth = array(1 => "Января","Февраля","Марта","Апреля","Мая","Июня","Июля","Августа","Сентября","Октября","Ноября","Декабря"); $correct = 1; //Коррекция времени в часах $correct_time = $correct * 60 * 60; //Вычисляем коррекцию в секундах ////////////// // Required // ////////////// require_once "ips_kernel/classDbMysqlClient.php"; require "conf_global.php"; ////////////// // Database // ////////////// $db = new db_driver_mysql; $db->obj['sql_database'] = $INFO['sql_database']; $db->obj['sql_user'] = $INFO['sql_user']; $db->obj['sql_pass'] = $INFO['sql_pass']; $db->obj['sql_host'] = $INFO['sql_host']; $db->obj['sql_tbl_prefix'] = $INFO['sql_tbl_prefix']; $db->connect(); //mysql_query("SET NAMES cp1251"); // Query the DB with the supplied user inputted variables. $getposts = $db->query("SELECT posts, last_poster_name, last_poster_id, title, tid, forum_id, last_post FROM ibf_topics WHERE (forum_id NOT IN ($forumexclude)) ORDER BY last_post DESC LIMIT $posts"); // Format and display the results. echo '<h4>Последние '.$posts.' тем с форума:</h4>'; echo '<div style="padding-left:10px; font-size: 12px; color: #666666;">'; while ($post = $db->fetch_row($getposts)) { $post[full_title] = $post[title]; $postpid = $post[pid]; if ($showposttext == 1) { $getposttext = $db->query("SELECT post FROM ibf_posts WHERE topic_id = '$post[tid]'"); while ($text = $db->fetch_row($getposttext)) { $lastposttext= $text[post]; $posttext = substr($lastposttext,0,$postlength); $posttext = $posttext."...<br>"; } } if ($showtopiclength == 1 AND strlen($post[full_title]) > $topiclength) { $post[short_title] = substr($post[full_title],0,$topiclength); $post[short_title] = $post[short_title]."..."; } else { $post[short_title] = $post[full_title]; } $post[last_post] = $post[last_post] + $correct_time; //Корекция времени $posted_on = date($datedisplay, $post[last_post]); // Need to change mySQL timestamp to something more human readable. $today_date = date($datedisplay, time()); // Grab today's date so we can compare it against the posted date $posted_day = date("d", $post[last_post]); $posted_month = date("n", $post[last_post]); $posted_year = date("Y", $post[last_post]); // If it was posted today, we want to display "Today, hh:mm AMPM" If ($posted_on == $today_date) { $datefield = "Сегодня"; $datefield = $datefield . ", " . date($timedisplay, $post[last_post]); } // If it was posted yesterday, we want to display "Yesterday, hh:mm AMPM" elseif (date('d F Y',strtotime("-1 day")) == $posted_on) { $datefield = "Вчера"; $datefield = $datefield . ", " . date($timedisplay, $post[last_post]); } else { $datefield = $posted_day."-".$rusmonth[$posted_month]."-".$posted_year; } echo //////////////////// // ФОРМАТ ВЫВОДА // /////////////////// // Вы можете изменять HTML код внутри маркеров EOD под Ваши требования // $INFO[board_url]/index.php?showtopic= <<<EOD <a href="http://forum.net/forum/index.php?showtopic=$post[tid]&view=getnewpost" class="ind"><b>$post[short_title]</b></a> разместил $post[last_poster_name] $datefield, с $post[posts] ответами <br> EOD; } ?> Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 mushara Опубликовано 16 Апреля 2010 Жалоба Поделиться Опубликовано 16 Апреля 2010 (изменено) Есть хороший скрипт, работает под 3.05 - вывод JS одной строчкой. Возможно настроить стили отображения.Кому надо - стучите в аську 48 пять 67 одын одын 80, плата символическая Изменено 16 Апреля 2010 пользователем mushara Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Вопрос
Nokoll
Ссылка на комментарий
Поделиться на других сайтах
14 ответов на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.