Как обновлять RSS-ленту автоматически

Если ваш сайт работает на Wordpress, Joomla или еще какой CMS, то перед вами вряд ли стоит такая проблема, как обновление RSS-ленты. А что делать, если сайт самописный и ЦМСка к нему соответствующая? В принципе из всех возможных вариантов я выбрал наиболее простой и далее расскажу о нем.

Каким бы ни был ваш движок, он скорее всего хранит содержимое ваших постов в базе данных (я хорошо разбираюсь только в MySQL, так что и примеры все будут с ней), и когда нам нужно будет обновить новостную ленту, мы просто запустим скрипт, который возьмет из базы последних, скажем, 20 постов, и обновит rss полученными данными.

Возьму для примера структуру таблицы wp_posts в Wordpress. В ней можно найти ID поста, заголовок (post_title), короткое описание (post_excerpt), имя поста (post_name, который может использоваться в url), а также guid (постоянная ссылка на пост).

А далее все просто.

<?php

// заготовка
$rss = '<?xml version="1.0" encoding="UTF-8" ?> 
<rss version="2.0">
<channel>
<title>Androoha.com - обновления</title> 
<link>http://androoha.com</link> 
<description>Статьи блога Андрухи</description> 
<language>ru-ru</language>
<webMaster>your email</webMaster>
<lastBuildDate>'.date('r').'</lastBuildDate>
';


$con = mysql_connect('localhost', 'root', ''); // данные, разумеется, ваши
mysql_select_db('test'); // и здесь
mysql_query('SET NAMES UTF8'); // у меня базы и страницы обычно в utf-8, и чтобы избежать проблем с кодировками, я выполняю такой запрос

$posts = mysql_query('SELECT * FROM `wp_posts` ORDER BY `id` DESC LIMIT 20');

while ( $post = mysql_fetch_assoc($posts) ) {
 
 $post_date = strtotime($post['post_date']);
 $date = date('r', $post_date);
 // эти манипуляции с датой не обязательны, просто в базе они хранятся в одном виде, а я привожу их к другому
 
 $rss .= '<item>
 <title>'.$post['post_title'].'</title>
 <link>http://androoha.com/?p='.$post['ID'].'</link>
 <description>'.$post['post_excerpt'].'</description>
 <author>your email</author>
 <pubDate>'.$date.'</pubDate>
</item>';
 // link здесь формируется в зависимости от того, какого вида ссылки у вас на сайте

}

$rss .= '</channel>
</rss>';

file_put_contents('rss.xml', $rss); // здесь прописываем путь к своему файлу rss

?>

Что, всё?! О_О Так просто?! Ну да ;)

 Жду с нетерпением
ваших комментариев!
 

Подписаться на RSS

Вы можете нажать "подписаться", чтобы следить за моими новостями!
Так вы всегда будете в курсе появления новостей на сайте =)
О том, что такое RSS можно прочитать здесь.

Подписаться

Подписаться на Twitter

Я специально зарегистрировался в Твиттере, чтобы вы могли следить за обновлениями на сайте =)

Подписаться

Envato marketplace А эти люди занимаются прокатом карнавальных костюмов и масок в Минске. К слову, я им делал сайт.