Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1

RSS для форума

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#1
Для поддержки RSS необходимо добавить в файл "\modules\forum\index.php" в конец файла (но перед "}?>" ) следующую функцию
Code:
/**
     * RSS for forum (c) Wasja
     */
    function rss($id_forum = null) {
        $sitename = '/';
        if (!empty($_SERVER['SERVER_NAME'])) {
            $sitename = 'http://' . $_SERVER['SERVER_NAME'] . '/';
        }
        $html = '<?xml version="1.0" encoding="UTF-8"?>';
        $html .= '<rss version="2.0">';
        $html .= '<channel>';
        $html .= '<title>' . h(Config::read('title', 'forum')) . '</title>';
        $html .= '<link>' . $sitename . 'forum/</link>';
        $html .= '<description>' . h(Config::read('description', 'forum')) . '</description>';
        $html .= '<pubDate>' . date('r') . '</pubDate>';
        $html .= '<generator>RSS Generator for Fapos (c) Wasja</generator>';
        $last_added_posts = $this->DB->select('themes', DB_ALL, array(
            'joins' => array(
                array(
                    'table' => 'users',
                    'alias' => 'b',
                    'cond' => '`b`.`id` = `a`.`id_author`',
                    'type' => 'LEFT',
                ),
                array(
                    'table' => 'users',
                    'alias' => 'c',
                    'cond' => '`c`.`id` = `a`.`id_last_author`',
                    'type' => 'LEFT',
                ),
                array(
                    'table' => 'forums',
                    'alias' => 'd',
                    'cond' => '`d`.`id` = `a`.`id_forum`',
                    'type' => 'LEFT',
                )
            ),
            'fields' => array('a.*', 'b.`name` AS author', 'c.`name` AS last_author', 'd.`title` AS forum_title'),
            'alias' => 'a',
            'order' => 'a.`last_post` DESC',
            'limit' => 10)
        );
        if (!empty($last_added_posts)) { 
            $html .= '<lastBuildDate>' . date('r', strtotime($last_added_posts[0]['last_post'])) . '</lastBuildDate>';
            foreach ($last_added_posts as $last_post) { 
                $html .= '<item>';
                $html .= '<link>' . $sitename . 'forum/view_theme/' . $last_post['id'] . '</link>';
                $html .= '<pubDate>' . date('r', strtotime($last_post['last_post'])) . '</pubDate>';
                $html .= '<title>' . $last_post['title'] . '</title>';
                $html .= '<description><![CDATA[Форум: <a href="' . $sitename . 'forum/view_forum/' . $last_post['id_forum'] . '">' . $last_post['forum_title'] . '</a><br />';
                $html .= 'Автор темы: ' . $last_post['author'] . '<br />';
                $html .= 'Автор сообщения: ' . $last_post['last_author'] . '<br />';
                $html .= 'Количество ответов: ' . $last_post['posts'] . ']]></description>';
                $html .= '<category>' . $last_post['forum_title'] . '</category>';
                $html .= '<guid>' . $sitename . 'forum/view_theme/' . $last_post['id'] . '</guid>';
                $html .= '</item>';
            }
        }
        $html .= '</channel>';
        $html .= '</rss>';
        echo $html;
    }
Дополнительно необходимо добавить в шаблон "forum\main.html" перед строкой "</head>" ссылку на RSS
Code:
<link href="/forum/rss" rel="alternate" type="application/rss+xml" title="RSS 2.0" />

Путь к RSS: "/forum/rss".

Отредактировано автором 22 Фев 2011

Genera1

  • Свой человек
  • Юзер
  • 109
  • Репутация:0 
  • Предупреждения: 0 
  • Регистрация:
    21 Ноя 2010
#2
Спасибо, Все работает!

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#3
Подкорректировал генерацию ссылок - теперь дополнительно используется имя домена (необходимо для работы офлайн RSS-ридеров).

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#4
=0 Wasja, ну ты самец:)))) Спасибки

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)
1
Сейчас online: 164. Зарегистрированных: 0. Гостей: 164.