Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
7 лет назад

Создаём 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

25
34.782 GOLOS
На Golos с August 2017
Комментарии (2)
Сортировать по:
Сначала старые