Да элементарно для удобства. Большая часть ресурсов, которые я регулярно посещаю, RSS имеют и мне не нужно заботиться о том, чтобы проверить, нет ли чего нового - оно [новое] само мне об этом сообщает. А Беспощадные по этому вопросу не выскажутся?
Внимание! У форума есть RSS! http://www.wasm.ru/forum/extern.php?type=rss&action=active&fid=10 - вот это хип. То есть число 10 - это id форума. Не знаю, почему он не виден, но он есть! Вот так его можно поместить на главную (index.php) Найдем Код (Text): $forum_field = '<h3><a href="viewforum.php?id='.$cur_forum['fid'].'">'.pun_htmlspecialchars($cur_forum['forum_name']).'</a></h3>'; Заменим (предварительно найдя красивую кнопку rss) Код (Text): $forum_field = '<h3><a href="viewforum.php?id='.$cur_forum['fid'].'">'.pun_htmlspecialchars($cur_forum['forum_name']).'</a><div style="float:right;"><a href="extern.php?type=rss&action=active&fid='.$cur_forum['fid'].'"><img src="img/rss.png" border="0" height="15" width="27" alt="RSS" align="middle" /></a></div></h3>';
интересно, а как часто rss обновляется? что-то у меня темы старые... ЗЫ: в опере тоже кнопочки соответствующей нет. 2 администрация: добавьте Код (Text): <link href="ссылка на rss" rel="alternate" type="application/rss+xml" title="wasm.ru" /> в заголовок страниц.
Все правильно Читай спецификацию Код (Text): action: active (show most recently active topics) (HTML or RSS) new (show newest topics) (HTML or RSS) online (show users online) (HTML) online_full (as above, but includes a full list) (HTML) stats (show board statistics) (HTML)
В файле header.php найти Код (Text): ?> <link rel="stylesheet" type="text/css" href="style/<?php echo $pun_user['style'].'.css' ?>" /> <?php Перед ним написать Код (Text): /*RSS*/ if (in_array(basename($_SERVER['PHP_SELF']), array('viewforum.php'))) { //if(ereg("viewtopic\.php", $_SERVER['PHP_SELF'])) { if (isset($_GET["id"])) { echo '<link href="extern.php?type=rss&action=active&fid='.$_GET["id"].'" rel="alternate" type="application/rss+xml" title="RSS Rootkits.ru" />'; } } /*RSS*/ RSS лучше сделать 2.0 (extern.php) Код (Text): // Should we output this as RSS? if (isset($_GET['type']) && strtoupper($_GET['type']) == 'RSS') { $rss_description = ($_GET['action'] == 'active') ? $lang_common['RSS Desc Active'] : $lang_common['RSS Desc New']; $url_action = ($_GET['action'] == 'active') ? '&action=new' : ''; // Send XML/no cache headers 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'); // It's time for some syndication! echo '<?xml version="1.0" encoding="'.$lang_common['lang_encoding'].'"?>'."\r\n"; echo '<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">'."\r\n"; echo '<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">'."\r\n"; echo '<channel>'."\r\n"; echo "\t".'<title>'.pun_htmlspecialchars($pun_config['o_board_title']).'</title>'."\r\n"; echo "\t".'<link>'.$pun_config['o_base_url'].'/</link>'."\r\n"; echo "\t".'<description>'.pun_htmlspecialchars($rss_description.' '.$pun_config['o_board_title']).'</description>'."\r\n"; echo "\t".'<language>en-us</language>'."\r\n"; // Fetch 15 topics $result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.last_post, f.id AS fid, f.forum_name 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=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL'.$forum_sql.' ORDER BY '.$order_by.' DESC LIMIT 15') or error('Unable to fetch topic list', __FILE__, __LINE__, $db->error()); while ($cur_topic = $db->fetch_assoc($result)) { if ($pun_config['o_censoring'] == '1') $cur_topic['subject'] = censor_words($cur_topic['subject']); echo "\t".'<item>'."\r\n"; echo "\t\t".'<title>'.pun_htmlspecialchars($cur_topic['subject']).'</title>'."\r\n"; echo "\t\t".'<link>'.$pun_config['o_base_url'].'/viewtopic.php?id='.$cur_topic['id'].$url_action.'</link>'."\r\n"; echo "\t\t".'<description><![CDATA['.escape_cdata($lang_common['Forum'].': <a href="'.$pun_config['o_base_url'].'/viewforum.php?id='.$cur_topic['fid'].'">'.$cur_topic['forum_name'].'</a><br />'."\r\n".$lang_common['Author'].': '.$cur_topic['poster'].'<br />'."\r\n".$lang_common['Posted'].': '.date('r', $cur_topic['posted']).'<br />'."\r\n".$lang_common['Last post'].': '.date('r', $cur_topic['last_post'])).']]></description>'."\r\n"; echo "\t\t".'<content:encoded><![CDATA[<p></p>]]></content:encoded>'."\r\n"; echo "\t\t".'<pubDate>'.date('r', $cur_topic['last_post']).'</pubDate>'."\r\n"; echo "\t".'</item>'."\r\n"; } echo '</channel>'."\r\n"; echo '</rss>'; }
Немного переделанный вариант. Может понравится. RSS стал 2.0. Выглядит так. Код (Text): // Should we output this as RSS? if (isset($_GET['type']) && strtoupper($_GET['type']) == 'RSS') { $rss_description = ($_GET['action'] == 'active') ? $lang_common['RSS Desc Active'] : $lang_common['RSS Desc New']; $url_action = ($_GET['action'] == 'active') ? '&action=new' : ''; // Send XML/no cache headers 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'); // It's time for some syndication! echo '<?xml version="1.0" encoding="'.$lang_common['lang_encoding'].'"?>'."\r\n"; echo '<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">'."\r\n"; echo '<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">'."\r\n"; echo '<channel>'."\r\n"; echo "\t".'<title>'.pun_htmlspecialchars($pun_config['o_board_title']).' : #'.$_GET["fid"].'</title>'."\r\n"; echo "\t".'<link>'.$pun_config['o_base_url'].'/</link>'."\r\n"; echo "\t".'<description>'.pun_htmlspecialchars($rss_description.' '.$pun_config['o_board_title']).'</description>'."\r\n"; echo "\t".'<language>en-us</language>'."\r\n"; // Fetch 15 topics $result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.last_post, f.id AS fid, f.forum_name 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=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL'.$forum_sql.' ORDER BY '.$order_by.' DESC LIMIT 15') or error('Unable to fetch topic list', __FILE__, __LINE__, $db->error()); while ($cur_topic = $db->fetch_assoc($result)) { if ($pun_config['o_censoring'] == '1') $cur_topic['subject'] = censor_words($cur_topic['subject']); echo "\t".'<item>'."\r\n"; echo "\t\t".'<title>'.pun_htmlspecialchars($cur_topic['subject']).'</title>'."\r\n"; echo "\t\t".'<link>'.$pun_config['o_base_url'].'/viewtopic.php?id='.$cur_topic['id'].$url_action.'</link>'."\r\n"; echo "\t\t".'<description><![CDATA[]]></description>'."\r\n"; echo "\t\t".'<content:encoded><![CDATA[<p>'.escape_cdata($lang_common['Forum'].': <a href="'.$pun_config['o_base_url'].'/viewforum.php?id='.$cur_topic['fid'].'">'.$cur_topic['forum_name'].'</a><br />'."\r\n".$lang_common['Author'].': '.$cur_topic['poster'].'<br />'."\r\n".$lang_common['Posted'].': '.date('r', $cur_topic['posted']).'<br />'."\r\n".$lang_common['Last post'].': '.date('r', $cur_topic['last_post'])).'</p>]]></content:encoded>'."\r\n"; echo "\t\t".'<pubDate>'.date('r', $cur_topic['last_post']).'</pubDate>'."\r\n"; echo "\t".'</item>'."\r\n"; } echo '</channel>'."\r\n"; echo '</rss>'; } Весь остальной код остался прежним. Интересные возможности форума или привет от Rickard Andersson Вот это самый низкотрафиковый отчет о последних 15 темах. Даже без регистрации даёт! http://wasm.ru/forum/extern.php?action=active Вот это 10 новых топиков форумов по ID 5, 6 и 7: http://wasm.ru/forum/extern.php?action=new&show=10&fid=5,6,7 А кто у нас онлайн? http://wasm.ru/forum/extern.php?action=online_full 15 активных тем в RSS http://host.com/extern.php?action=active&type=RSS 15 активных тем в RSS из форума с ID=2 http://host.com/extern.php?action=active&type=RSS&fid=2 То есть можно еще играться параметрами action=new action=active