Создаём 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; charset=utf-8"); // Сообщаем браузеру что передаем XML
$lastBuildDate=date(DATE_FORMAT_RFC822); // Дата последней сборки фида
define('DATE_FORMAT_RFC822','r'); // Задаем формат даты
echo ('<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Новости моего сайта</title>
<link>http://mysite.ru</link>
<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>
<title>'.strip_tags(trim($row['title'])).'</title>
<description><![CDATA['.$row['description'].']]></description>
<link>'.$row['link'].'</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