Ответить
1
RSS для форума
Отправлено: 21 Фев 2011#1
Для поддержки RSS необходимо добавить в файл "\modules\forum\index.php" в конец файла (но перед "}?>" ) следующую функцию
Дополнительно необходимо добавить в шаблон "forum\main.html" перед строкой "</head>" ссылку на RSS
Путь к RSS: "/forum/rss".
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;
}
* 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;
}
Code:
<link href="/forum/rss" rel="alternate" type="application/rss+xml" title="RSS 2.0" />
Путь к RSS: "/forum/rss".
Отредактировано автором 22 Фев 2011
Отправлено: 22 Фев 2011#3
Подкорректировал генерацию ссылок - теперь дополнительно используется имя домена (необходимо для работы офлайн RSS-ридеров).
Отправлено: 22 Фев 2011#4
Wasja, ну ты самец))) Спасибки
Я горжусь тем, что создал бесплатную CMS - AtomX . И люблю нашу команду)
1
Зарегистрируйтесь или авторизуйтесь что бы писать
Сейчас online: 164. Зарегистрированных: 0. Гостей: 164.