Как я понимаю - этот вопрос остался в далеком прошлом и не планируется.OkayCMS писал(а):Да, планируется. Скорее всего даже в версию 1.2 будет включено. Но пока не гарантирую.mjoy писал(а):Планируется ли для блога сделать RSS ленту?
Код: Выделить всё
<?PHP
require_once('View.php');
class RssView extends View
{
public function fetch()
{
// Количество постов на 1 странице
$items_per_page = 20;
$params = array();
$params['visible'] = 1;
$params['limit'] = $items_per_page;
switch($this->request->get('type', 'string')) {
default:
$items = $this->blog->get_posts($params);
$category = 'Блог';
$cat_url = $this->config->root_url.'/blog';
$base_url = $this->config->root_url.'/blog/';
}
header("Content-Type: application/rss+xml; charset=UTF-8");
//выберем первую запись, чтобы сформировать дату публикации
//правда эта логика верна только для блога, т.к. он отсортирован по дате с убыванием
//для каталога такое не пройдет - но об этом потом
$p = $items[0];
$rssfeed = '<?xml version="1.0" encoding="UTF-8"?>';
$rssfeed .= '<rss version="2.0">';
$rssfeed .= '<channel>';
$rssfeed .= '<title>'.$this->settings->site_name.'</title>';
$rssfeed .= '<link>'.$cat_url.'</link>';
$rssfeed .= '<description>'.$this->settings->company_name.'</description>';
$rssfeed .= '<language>ru-ru</language>';
$rssfeed .= '<category>' . $category . '</category>';
$rssfeed .= '<copyright>Copyright '.date('Y').' '.$this->settings->company_name.'</copyright>';
$rssfeed .= '<pubDate>' . date("D, d M Y H:i:s O", strtotime($p->date)) . '</pubDate>';
$rssfeed .= '<lastBuildDate>' . date("D, d M Y H:i:s O", strtotime($p->date)) . '</lastBuildDate>';
// Выбираем статьи из базы
foreach($items as $p) {
$rssfeed .= '<item>';
$rssfeed .= '<guid isPermaLink="true">'. $base_url . $p->url . '</guid>';
$rssfeed .= '<link>'. $base_url . $p->url . '</link>';
$rssfeed .= '<title>' . $p->name . '</title>';
$rssfeed .= '<description><![CDATA[' . ($p->annotation) . ']]></description>';
$rssfeed .= '<comments>'. $base_url . $p->url . '#comments</comments>';
$rssfeed .= '<pubDate>' . date("D, d M Y H:i:s O", strtotime($p->date)) . '</pubDate>';
$rssfeed .= '</item>';
}
$rssfeed .= '</channel>';
$rssfeed .= '</rss>';
print($rssfeed);
exit();
}
}
Код: Выделить всё
<?php
require_once('api/Okay.php');
$okay = new Okay();
header("Content-type: text/xml; charset=UTF-8");
print '<?xml version="1.0" encoding="utf-8"?><rss xmlns:rss="'.$okay->config->root_url.'" version="2.0"><channel>';
print '<title>'.$okay->settings->site_name.'</title>';
print '<url>'.$okay->config->root_url.'</url>';
print '<lastBuildDate>'.date("D, d M Y H:i:s O").'</lastBuildDate>';
$rss = $okay->blog->get_posts();
foreach($rss as $r) {
print '<item>';
print '<title>'.htmlspecialchars($r->name).'</title>';
print '<link>'.$okay->config->root_url.'/blog/'.$r->url.'</link>';
print '<description>'.htmlspecialchars($r->annotation).'</description>';
print '<pubDate>'.date("l, d M Y H:i:s O", strtotime($r->date)).'</pubDate>';
print '<pubDateUT>'.time(strtotime($r->date)).'</pubDateUT>';
print '</item>';
}
print ' </channel></rss>';
?>
Код: Выделить всё
# RSS
RewriteRule ^([a-z]{2}/)?rss?$ index.php?module=RssView [L,QSA]
Код: Выделить всё
<link rel="alternate" type="application/rss+xml" title="RSS" href="rss" />
Вернуться в «Предложения по улучшению OkayCMS»
Сейчас этот раздел просматривают: 33 гостя