Создаём RSS ленту для сайта средствами PHP


RSS лента позволяет различным агрегаторам новостей и программам собирать анонсы статей с вашего сайта, и обеспечивает дополнительный трафик на ваш ресурс. Создав RSS фид, вы можете указать его тематику и добавить свой канал в каталоги RSS потоков.

RSS базируется на стандарте XML и представляет собой XML документ, в котором есть обязательные элементы - описание канала в теге channel и анонсы статей в теге item. Внутри тега item должны присутствовать теги title и description, в которых указывают заголовок и анонс статьи.

Сейчас чаще всего используется стандарт RSS 2.0 и кодировка utf-8, поэтому, в RSS фидах старайтесь применять именно их. Ниже я покажу как создать RSS 2.0 ленту для любого сайта на PHP.

Предположим, у нас есть база данных под названием rssdb, а в ней таблица blog, которая содержит поля title, description, link, и date. Давайте подключимся к этой базе данных через PDO и выведем RSS поток, соответствующий стандарту RSS 2.0

<?php
header("Content-type: text/xml;  // Сообщаем браузеру что передаем  // Дата последней сборки фида
define('DATE_FORMAT_RFC822','r'); // Задаем формат даты

echo ('<?xml  >
<rss >
<channel>
Новости моего сайта
http://mysite.ru
<description>Интересная RSS лента моего сайта</description>
<lastBuildDate>'.$lastBuildDate.'</lastBuildDate>
<language>ru</language>');

// Подключаемся к БД с помощью PDO
// Подставьте ваши логин, пароль, имя БД и хоста
$formdb = new PDO('mysql:host=localhost;dbname=rssdb', 'dblogin', 'dbpassword'); 
$formdb->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); 
$formdb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$formdb->exec("set names utf8"); 
$formdb->exec("SET CHARACTER SET utf8");

// Модифицируйте SQL запрос под вашу таблицу
// В моем случае у меня таблица blog и четыре поля - title, description, link, date
$query = "SELECT title, description, link, UNIX_TIMESTAMP(date) as postdate FROM blog ORDER by date desc LIMIT 0,10";
$stmt=$formdb->prepare($query);
if ($stmt->execute()) {
    while ($row = $stmt->fetch()) {
        echo('<item>
        '.strip_tags(trim($row['title'])).'
        <description><![CDATA['.$row['description'].']]></description>
        '.$row['link'].'
        <guid>'.$row['link'].'</guid>
        <pubDate>'.date(DATE_FORMAT_RFC822, $row['postdate']).'</pubDate>
        </item>');
        };
    };

echo ('</channel></rss>');
?>

В самом начале скрипта мы указали заголовки, сообщающие браузеру что мы будем отдавать XML документ. Далее мы вывели основные теги RSS и описание канала в теге channel. Подключившись к БД с помощью PDO, в цикле while мы пробежались по 10 свежим записям таблицы blog, и вывели их поля в тегах item.

Вот таким нехитрым способом можно создать свою RSS ленту на PHP, добавить ее в каталоги RSS ресурсов, и тем самым повысить посещаемость и доступность вашего сайта.

Исходники скрипта можно скачать здесь

Материал подготовлен автором @pythono


Comments 2


Благодарю.
В будущем понадобится.
Осталось научиться добавлять данные в базу через php. А то как посмотрю какие-то скрипты, работающие с Mysql, ничего не понимаю.
Также напрягает то, что в большинстве случаев используется ООП, а я его почему-то не переношу. Наверное по причине того, что считаю бессмысленным городить кучу новых терминов и конструкций, если есть функции, переменные, массивы и т. п.

Но развиваться надо: не всегда ж делать скрипты, работающие без БД.

29.12.2017 10:27
0