1 (01.12.2006 22:27 отредактировано lorien)

Тема: RSS генератор

Решил выложить, вдруг кому пригодицца: web-brains.com/archives/38
Собственно, егоную выдачу RSS можно заценить тут: it-omsk.com/rss/

Сайт lorien

Поделиться

2

Re: RSS генератор

Чего - то линк не рабочий..где бы еще его скачать можно?

Сайт avatar

Поделиться

3

Re: RSS генератор

Here you can find my generator: web-brains.com/archives/38

Сайт lorien

Поделиться

4

Re: RSS генератор

Большое спасибо! запустил, все работает smile

Сайт avatar

Поделиться

5

Re: RSS генератор

Thank you ) I hope you didn't forget to edit rss.conf.php.
Если будут баги, пишите обязательно сюда или на блог.

Сайт lorien

Поделиться

6

Re: RSS генератор

Ну, я поправил rss.php, чтобы он не искал config.php в вышестоящей директории, так как твои файлы и положил все таки в корень, а не в custom как советовалось в ридми (честно говоря, я не понял, зачем это надо). а не поправить конфиг..вряд бы у меня так получилось ) на то он и конфиг, что бы его править )

Сайт avatar

Поделиться

7

Re: RSS генератор

Просто, у меня вся самописная функциональность лежит в custom, в том числе и rss-генератор.

Сайт lorien

Поделиться

8

Re: RSS генератор

lorien пишет:

Here you can find my generator: web-brains.com/archives/38

Время ожидания соединения истекло
Время ожидания ответа от сервера web-brains.com истекло.

Дайте рабочую сцылу плиз.

Поделиться

9

Re: RSS генератор

svelludo пишет:

Дайте рабочую сцылу плиз.

+1

Поделиться

10

Re: RSS генератор

тут посмотрите, грубовато вышел хак, но тем не менне работает
blog.w-research.ru/?id=122

Сайт iDrum

Поделиться

11

Re: RSS генератор

там написано что он иногда нерботает.
или уже испралено?

Сайт niikto

Поделиться

12 (10.07.2007 16:08 отредактировано maximum)

Re: RSS генератор

Данный мод всегда был доступен на сайте разработчика.

Пример работы мода можно посмотреть на моих форумах.

Поделиться

13

Re: RSS генератор

niikto пишет:

там написано что он иногда нерботает.
или уже испралено?

работает,это проблема с хостингом была.
пример работы: www.otadoya.ru/forum/rss/rss.xml

Сайт iDrum

Поделиться

14

Re: RSS генератор

Дайте рабочую сцылу плиз.

Нате рабочую ссылку: it-omsk.com/pub/rss.tgz

Сайт lorien

Поделиться

15

Re: RSS генератор

maximum
ты про мод iDrum'а говоришь?
ато я запутался...
мне понравилось что он в базу не лезет

Сайт niikto

Поделиться

16

Re: RSS генератор

niikto пишет:

ты про мод iDrum'а говоришь?
ато я запутался...
мне понравилось что он в базу не лезет

Нет, у него мод вообще не верный - показывает последние темы, а не сообщения.

А откуда тогда данные берутся? wink

Поделиться

17

Re: RSS генератор

хм, обидно.

так получается что есть только один рсс-мод, который включает в себя сообщения? или у тебя какой то иной?

(днные у него добавляются в фид только при постинге)

Сайт niikto

Поделиться

18

Re: RSS генератор

я никогда не видел надобности в рсс ленте последних сообщений форума, подфорума, темы. У самого в рсс ридере 30 лент последних тем различных форумов. Но не трудно было переделать выше изложеный хак для генерации 20 последних сообщений на форуме.
Все обьяснения по старому адресу: blog.w-research.ru/?id=122

Сайт iDrum

Поделиться

19

Re: RSS генератор

В 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, и на сборке этого сайта. Ни там, ни там нет.

Сайт VanDriessen

Поделиться

20

Re: RSS генератор

исправил инсталяшку.
ps: если не трудно отписывайтесь в блоге, сюда крайне редко захожу

Сайт iDrum

Поделиться

21

Re: RSS генератор

iDrum
Вот по этой ссылке всё то же самое:
blog.w-research.ru/file/rss_gen1.0.rar

Сайт VanDriessen

Поделиться

22

Re: RSS генератор

спасибо за замечания.исправил.кстати он заточен под определённый дизайн форума..чуть попозже сделаю общую версию

Сайт iDrum

Поделиться

23

Re: RSS генератор

Мне тут недавно понадобился 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#&amp;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 значения не играет.

Поделиться