Тема: RSS генератор
Решил выложить, вдруг кому пригодицца: web-brains.com/archives/38
Собственно, егоную выдачу RSS можно заценить тут: it-omsk.com/rss/
|
Фонд моральной поддержки |
|
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
PunBB по-русски → Модули и плагины → RSS генератор
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Решил выложить, вдруг кому пригодицца: web-brains.com/archives/38
Собственно, егоную выдачу RSS можно заценить тут: it-omsk.com/rss/
Here you can find my generator: web-brains.com/archives/38
Thank you ) I hope you didn't forget to edit rss.conf.php.
Если будут баги, пишите обязательно сюда или на блог.
Ну, я поправил rss.php, чтобы он не искал config.php в вышестоящей директории, так как твои файлы и положил все таки в корень, а не в custom как советовалось в ридми (честно говоря, я не понял, зачем это надо). а не поправить конфиг..вряд бы у меня так получилось ) на то он и конфиг, что бы его править )
Просто, у меня вся самописная функциональность лежит в custom, в том числе и rss-генератор.
Here you can find my generator: web-brains.com/archives/38
Время ожидания соединения истекло
Время ожидания ответа от сервера web-brains.com истекло.
Дайте рабочую сцылу плиз.
тут посмотрите, грубовато вышел хак, но тем не менне работает
blog.w-research.ru/?id=122
там написано что он иногда нерботает.
или уже испралено?
Данный мод всегда был доступен на сайте разработчика.
Пример работы мода можно посмотреть на моих форумах.
там написано что он иногда нерботает.
или уже испралено?
работает,это проблема с хостингом была.
пример работы: www.otadoya.ru/forum/rss/rss.xml
maximum
ты про мод iDrum'а говоришь?
ато я запутался...
мне понравилось что он в базу не лезет
ты про мод iDrum'а говоришь?
ато я запутался...
мне понравилось что он в базу не лезет
Нет, у него мод вообще не верный - показывает последние темы, а не сообщения.
А откуда тогда данные берутся? ![]()
хм, обидно.
так получается что есть только один рсс-мод, который включает в себя сообщения? или у тебя какой то иной?
(днные у него добавляются в фид только при постинге)
я никогда не видел надобности в рсс ленте последних сообщений форума, подфорума, темы. У самого в рсс ридере 30 лент последних тем различных форумов. Но не трудно было переделать выше изложеный хак для генерации 20 последних сообщений на форуме.
Все обьяснения по старому адресу: blog.w-research.ru/?id=122
В install.php написано:
#---------[ 1. OPEN ]---------------------------------------------------------
#
/include/functions.php
#---------[ 3. FIND ]---------------------------------------------------
#
// END SUBST - <pun_keywords>
#
#---------[ 5. FIND ]---------------------------------------------------
#
$tpl_main = str_replace('<pun_status>', $tpl_temp, $tpl_main);Ни третьего, ни пятого пункта найти в functions.php не могу. Пробовал на старенькой уже версии punbb, и на сборке этого сайта. Ни там, ни там нет.
исправил инсталяшку.
ps: если не трудно отписывайтесь в блоге, сюда крайне редко захожу
iDrum
Вот по этой ссылке всё то же самое:
blog.w-research.ru/file/rss_gen1.0.rar
спасибо за замечания.исправил.кстати он заточен под определённый дизайн форума..чуть попозже сделаю общую версию
Мне тут недавно понадобился RSS, который выдаёт только первые сообщения в топике т.е. можно следить не за новыми сообщениями, а за новыми топиками.
Привожу код, вдруг кому пригодится. Это всё тот же код, что был в первом сообщении, только переработанный:
<?php
require_once "../config.php";
require_once "rss.conf.php";
mysql_connect($db_host,$db_username,$db_password) or
die("Could not connect to DB server");
mysql_select_db($db_name) or
die("Could not select db");
$data = <<<IDSTR
<?xml version="1.0" encoding="{$channelCharset}" ?>
<rss version="2.0">
<channel>
<title>{$channelTitle}</title>
<link>{$baseUrl}/</link>
<description>{$channelDescription}</description>
<language>{$channelLanguage}</language>
<copyright>{$channelCopyright}</copyright>
<pubDate>{$channelPubDate}</pubDate>
<generator>{$channelGenerator}</generator>
<ttl>{$channelTtl}</ttl>
#items#
</channel>
</rss>
IDSTR;
$item = '
<item>
<title>[#post_author] #forum_name#: #topic_name# </title>
<link>#base_url#/viewtopic.php?pid=#post_number##p#post_number#</link>
<description>#post_content#</description>
<comments>#base_url#/post.php?tid=#topic_number#&qid=#post_number#</comments>
<guid isPermaLink="true">#base_url#/viewtopic.php?pid=#post_number##p#post_number#</guid>
<pubDate>#post_time#</pubDate>
</item>
';
function do_query($condition_sql, $limit, $order) {
global $db_prefix;
$result = mysql_query("
SELECT
p.id AS post_number,
p.message AS post_content,
p.posted AS post_time,
p.poster AS post_author,
t.subject AS topic_name,
t.id AS topic_number,
f.forum_name AS forum_name
FROM {$db_prefix}posts p
LEFT JOIN {$db_prefix}topics t ON t.id = p.topic_id
LEFT JOIN {$db_prefix}forums f ON f.id = t.forum_id
LEFT JOIN {$db_prefix}forum_perms fp ON fp.forum_id = f.id AND fp.group_id = 3
WHERE
( fp.read_forum = 1 OR fp.read_forum IS NULL ) AND t.moved_to IS NULL {$condition_sql}
ORDER BY p.posted {$order}
LIMIT {$limit}
") or die("Mysql error: ".mysql_error());
$posts = array();
while($row = mysql_fetch_assoc($result)) {
$posts[] = $row;
}
return $posts;
}
if ( isset($_GET['fids']) and strlen($_GET['fids']) ) {
$fids = explode(",",@$_GET['fids']);
$fids = array_map("intval",$fids);
}
$posts = array();
$sql = "";
if ( sizeof($fids) ) {
$sql = " AND f.id IN (".implode(",",$fids).")";
}
if ( ! isset($_GET['onlytopics']) ) {
$posts = do_query($sql, $channelSize, 'DESC');
} else {
$result = mysql_query("
SELECT t.id
FROM {$db_prefix}topics t
LEFT JOIN {$db_prefix}forums f ON f.id = t.forum_id
LEFT JOIN {$db_prefix}forum_perms fp ON fp.forum_id = f.id AND fp.group_id = 3
WHERE
( fp.read_forum = 1 OR fp.read_forum IS NULL ) AND t.moved_to IS NULL {$sql}
ORDER BY t.posted DESC
LIMIT {$channelSize}
") or die("mysql error: ".mysql_error());
$tids = array();
while($row = mysql_fetch_assoc($result)) {
$tids[] = $row['id'];
}
foreach($tids as $_ => $tid) {
$sql = " AND t.id = ".$tid;
$local_posts = do_query($sql, 1, 'ASC');
$post = $local_posts[0];
$posts[] = $post;
}
}
$item_data = "";
foreach( $posts as $_ => $iter ) {
$tail = ( $itemDescriptionLength < strlen($iter['post_content']) ) ? "..." : "";
$c = substr($iter['post_content'],0,$itemDescriptionLength).$tail;
$c = preg_replace('{(\[quote[^\[]*\])}si',"\n".'\1',$c);
$c = preg_replace('{\[/quote\]}si',"[/quote]
\n",$c);
$c = nl2br($c);
$iter['post_content'] = $c;
$iter = array_map("htmlspecialchars",$iter);
$iter['post_content'] = "[ ".$iter['post_author']." ] ".$iter['post_content'];
$iter['post_time'] = gmdate('r',$iter['post_time']);
$item_data = $item_data.
str_replace(
array(
'#post_author',
'#post_time#','#topic_number#','#post_content#',
'#post_number#','#forum_name#','#topic_name#',
'#base_url#'),
array(
$iter['post_author'],
$iter['post_time'],$iter['topic_number'],$iter['post_content'],
$iter['post_number'],$iter['forum_name'],$iter['topic_name'],
$baseUrl),
$item
);
}
$data = str_replace('#items#',$item_data,$data);
header("Content-Type: application/rss+xml; charset={$channelCharset}");
print $data;
?>Конфиг:
<?php
$baseUrl = "http://it-omsk.com";
$channelCharset = "utf-8";
$channelPubDate = gmdate('r');
$channelLanguage = "ru-ru";
$channelTitle = "IT Омск";
$channelDescription = "Новые сообщения на it-omsk.com";
$channelSize = 10;
$channelCopyright = "Copyright: (C) it-omsk.com";
$channelTtl = 10; // minutes
$channelGenerator = "PRG 0.1";
$itemDescriptionLength = 1000;
?>У меня этот код лежит в каталоге %punroot%/custom, потому и конфиг punbb подключается из родительского каталога.
Скрипт принимает два GET параметра:
- fids - это список id подфорумов, разделённый запятыми. Примеры: 3 или 3,14,29
- onlytopics - если этот параметр присутсвует в запросе, то выдаются только первые сообщения в темах, иначе все сообщения. Значение параметра onlytopics значения не играет.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
PunBB по-русски → Модули и плагины → RSS генератор
Сгенерировано за 5.842 секунды (65% PHP — 35% БД) 11 запросов к базе данных
Технологии с открытым исходным кодом, несомненно, обладают серьезным преимуществом над аналогичными продуктами, распространяемыми по ограниченным лицензиям. И совершенно неважно, что это. Возможно это:
Впрочем, неважно. Что бы это ни было, важно всячески поощрять и поддерживать Open Source в любом виде. Тем более, что вы знаете, PunBB распространяется по лицензии GPL/GNU. И спасибо за внимание.