Basist Опубликовано 3 Марта 2009 Жалоба Поделиться Опубликовано 3 Марта 2009 Есть ли возможность формирования rss потока в версии 1.3? Или необходимо ставить какой-либо дополнение? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 3 Марта 2009 Жалоба Поделиться Опубликовано 3 Марта 2009 http://www.ibresource.ru/forums/index.php?showtopic=11104 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Basist Опубликовано 3 Марта 2009 Автор Жалоба Поделиться Опубликовано 3 Марта 2009 Спасибо!!! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 3 Марта 2009 Жалоба Поделиться Опубликовано 3 Марта 2009 У меня сделаны дополнения этого мода, чтобы не вводить с руки список форумов для исключения из потока, а чтобы считывал настройки доступов сам; при этом введенные с руки тоже продолжают скрываться:<?php /* RSS For Yandex и не только Выдает последние сообщения, опубликованны в форуме, в rss Шаблон выдачи зашит внутри функции do_lastposts Там же определяются количество элементов для выдачи и "служебные форумы", в которых сообщения трогать не надо. Сделано было мною для добавления форума в яндексовский поиск по форумам и блогам. Сделано на основе мода "Блок последних сообщений из форума IBF для PHP-Nuke" (http://www.ibresource.ru/db/index.php?pg=show&id=97) Инструкция: Переименовать файл в yandex.php, положить в корень форума. Скормить Яндексу url [url="http://yourdomain.ru/forum/yandex.php"]http://yourdomain.ru/forum/yandex.php[/url] Проверялось только на версии форума 1.3.1. Вполне возможно, что будет работать на 1.1 и 1.2. Прошу прощения за неаккуратность кода - php не знаю ) Замечания приветствуются. Георгий (Юра) Киселев [url="http://www.helpix.ru/feedback/george.html"]http://www.helpix.ru/feedback/george.html[/url] */ //----------------------------------------------- // USER CONFIGURABLE ELEMENTS //----------------------------------------------- // Root path $root_path = "../../"; //----------------------------------------------- // NO USER EDITABLE SECTIONS BELOW //----------------------------------------------- error_reporting (E_ERROR | E_WARNING | E_PARSE); set_magic_quotes_runtime(0); class info { var $input = array(); var $base_url = ""; var $vars = ""; function info() { global $sess, $std, $DB, $root_path, $INFO; $this->vars = &$INFO; } } //-------------------------------- // Import $INFO, now! //-------------------------------- require $root_path."conf_global.php"; //-------------------------------- // Require our global functions //-------------------------------- require $root_path."sources/functions.php"; $std = new FUNC; //-------------------------------- // Load the DB driver and such //-------------------------------- $INFO['sql_driver'] = !$INFO['sql_driver'] ? 'mySQL' : $INFO['sql_driver']; $to_require = $root_path."sources/Drivers/".$INFO['sql_driver'].".php"; require ($to_require); $DB = new db_driver; $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']; // Get a DB connection $DB->connect(); //-------------------------------- // Wrap it all up in a nice easy to // transport super class //-------------------------------- $ibforums = new info(); //-------------------------------- // Set up our vars //-------------------------------- $ibforums->input = $std->parse_incoming(); $ibforums->base_url = $ibforums->vars['board_url']; //-------------------------------- // What to do? //-------------------------------- do_lastposts(); //------------------------------------------------- // Last Posts //------------------------------------------------- function do_lastposts() { global $DB, $ibforums, $root_path, $std, $INFO; $admin_forums = '(0)'; // ID разделов, которые вы хотите спрятать (через запятую) // (если стоит 0 то будут показаны все разделы) $limit = "7"; // Количество 'последних постов' if(isSet($ibforums->input['n'])) { $n=intval($ibforums->input['n']); if($n<31 and $n>0)$limit = $n; } $n_days = $limit.""; $limit = time() - $limit*3600*24; $prefix = $INFO['sql_tbl_prefix']; //---------------------------------------- // Header parse... //---------------------------------------- @header('Content-Type: text/xml'); @header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); @header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); @header('Pragma: public'); // Темплейт для постов $template = " <item> <guid isPermaLink='true'>{post_url}</guid> <pubDate>{rfc_date}</pubDate> <title>{author} создал(а) тему: {thread_title}</title> <link>{post_url}</link> <description><![CDATA[{text}]]></description> <comments>{post_url}</comments> </item> "; // Темплейт для каментов $template_c = " <item> <guid isPermaLink='true'>{post_url}</guid> <pubDate>{rfc_date}</pubDate> <title>{author} ответил(а) тему: {thread_title} (автор темы {j_a_name})</title> <link>{post_url}</link> <description><![CDATA[{text}]]></description> <comments>{post_url}</comments> </item> "; $to_echo = "<?xml version='1.0' encoding=\"windows-1251\"?> <rss version='2.0'> <channel> <title>Сообщения и комментарии в журналах Анонимных Алкоголиков за последние ".$n_days." дней</title> <link>http://vesvalo.net/</link> <description>Русскоязычная группа анонимных алкоголиков онлайн</description> <generator>Vesvalo.net</generator> "; // Тянем посты $DB->query("SELECT p.post_date, p.pid, p.author_name, p.title, p.post, me.j_public, me.id FROM ibf_jposts p LEFT JOIN ibf_member_extra me ON ( me.id = p.journal_id ) WHERE p.post_date > '".$limit."' AND me.j_blocked <>1 AND me.j_public =1 ORDER BY p.post_date ASC"); if ( ! $DB->get_num_rows() ) { fatal_error("Could not get the information from the database"); } while( $out = $DB->fetch_row($query) ) { $thread_title = $out['title']; $thread_title = preg_replace( "'&'si", "&" , $thread_title ); $forum_name = $out['name']; $author = $out['author_name']; $rfcdate = date( 'r', $out['post_date'] ); $out['post_date'] = $std->get_date( $out['post_date'], 'LONG' ); $date = $out['post_date']; $text = $out['post']; $to_echo .= parse_template( $template,array ( 'thread_url' => $ibforums->base_url."/journal.php?user=".$out['id']."&comm=".$out['pid'], 'thread_title' => $thread_title, 'forum_url' => $ibforums->base_url."/journal.php?user=". $out['id'], 'post_url' => $ibforums->base_url."/journal.php?user=".$out['id']."&comm=".$out['pid'], 'forum_name' => $forum_name, 'date' => $date, 'rfc_date' => $rfcdate, 'author' => $author, 'text' => $text, 'profile_link' => $ibforums->base_url."?act=Profile&CODE=03&MID=".$out['id'], ) ); } // Тянем каменты $DB->query("SELECT c.cid, c.post_date, c.post, c.author_name, p.author_name as j_a_name, p.title, p.pid, me.j_public, me.id FROM ibf_jcomments c LEFT JOIN ibf_jposts p ON (p.pid=c.post_id) LEFT JOIN ibf_member_extra me ON (me.id=c.owner_id) WHERE p.post_date > '".$limit."' AND me.j_blocked <>1 AND me.j_public =1 ORDER BY p.post_date ASC"); if ( ! $DB->get_num_rows() ) { fatal_error("Could not get the information from the database"); } while( $out = $DB->fetch_row($query) ) { $thread_title = $out['title']; $thread_title = preg_replace( "'&'si", "&" , $thread_title ); $forum_name = $out['name']; $author = $out['author_name']; $rfcdate = date( 'r', $out['post_date'] ); $out['post_date'] = $std->get_date( $out['post_date'], 'LONG' ); $date = $out['post_date']; $text = $out['post']; $to_echo .= parse_template( $template_c,array ( 'thread_url' => $ibforums->base_url."/journal.php?user=".$out['id']."&comm=".$out['pid'], 'thread_title' => $thread_title, 'forum_url' => $ibforums->base_url."/journal.php?user=". $out['id'], 'post_url' => $ibforums->base_url."/journal.php?user=".$out['id']."&comm=".$out['pid']."&c=".$out['cid']."#c".$out['cid'], 'forum_name' => $forum_name, 'date' => $date, 'rfc_date' => $rfcdate, 'author' => $author, 'j_a_name' => $out['j_a_name'], 'text' => $text, 'profile_link' => $ibforums->base_url."/index.php?act=Profile&CODE=03&MID=".$out['id'], ) ); } $to_echo .= " </channel> </rss> "; echo $to_echo; } //+------------------------------------------------- // GLOBAL ROUTINES //+------------------------------------------------- function parse_template( $template, $assigned=array() ) { foreach( $assigned as $word => $replace) { $template = preg_replace( "/\{$word\}/i", "$replace", $template ); } return $template; } function fatal_error($message="") { echo("An error occured whilst processing this directive"); if ($message) { echo("<br>$message"); } exit(); } ?> Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Вопрос
Basist
Ссылка на комментарий
Поделиться на других сайтах
3 ответа на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.