КодSEOБлогИное

RSS

Курсы HTML, CSS, PHP, JavaScript, лектор Трепачёв Д.П.

Что такое RSS канал сайта

Файл RSS (он же «RSS-канал», «RSS-поток», «RSS-лента», «Feed», «фид») — это файл с перечнем публикаций сайта (или их анонсов), отсортированных по времени создания/обновления. Он не должен включать ссылки на страницы со служебной информацией или предназначенные для навигации, например, корзину интернет-магазина или страницы рубрик.

Символ RSS

<svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg" height="80" width="80" style="overflow: hidden;"><circle r="1.5" cx="1.5" cy="8.5" fill="#FF993C"></circle><g fill="none" stroke="#FF993C" stroke-linecap="round" stroke-width="2"><circle r="5.8" cx="0" cy="10"></circle><circle r="9" cx="0" cy="10"></circle></g></svg>

Указывая ширину (width) и/или высоту (height) иконки, изображение будет пропорционально изменяться и подстраиваться под любой размер.

Пример RSS

http://shpargalkablog.ru/rss.php

Валидатор RSS

https://validator.w3.org/feed/

Что такое RSS-ридер

RSS-ридер (он же «RSS-агрегатор») — это программа, которая объединяет RSS-файлы нескольких сайтов в одну ленту. Cсылки на новые материалы всех интересующих сайтов собраны в одном месте. Не требуется переходить на каждый сайт в отдельности только для того, чтобы узнать есть ли новые публикации. Просмотренные ссылки помечаются как прочитанные. К непрочитанным можно вернуться в любое удобное время.

Пример RSS-ридера

Inoreader

Как создать rss.php на PHP и MySQL

Для базы данных table, содержащей такие столбцы:

+----------------+----------------------------+-------------------------------------+-----------------------------+----------------------------+----------------------------------------------------+ | id | url | title | update | meta | description | | smallint(5) | varchar(255) | varchar(255) | timestamp | set('noindex', 'feed', '') | varchar(255) | | UNSIGNED | | | CURRENT_TIMESTAMP | | | | AUTO_INCREMENT | | | ON UPDATE CURRENT_TIMESTAMP | | | +----------------+----------------------------+-------------------------------------+-----------------------------+----------------------------+----------------------------------------------------+ | 1 | 2017/02/rss-php-mysql.html | Как сделать RSS канал | PHP примеры | 2017-02-14 09:07:30 | feed | Что такое RSS-канал, зачем он нужен, пример файла, | | | | | | | как сделать его на PHP и MySQL и если требуется | | | | | | | с помощью .htaccess перенаправить в Feedburner | +----------------+----------------------------+-------------------------------------+-----------------------------+----------------------------+----------------------------------------------------+ | 2 | 2017/02/example.html | Название статьи | 2017-01-26 12:00:00 | | Описание статьи | +----------------+----------------------------+-------------------------------------+-----------------------------+----------------------------+----------------------------------------------------+

Файл db.php

<?php
if (defined('dbOn')) {
    $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db'); // подключение к серверу MySQL: тут указывается пароль к базе данных
    if ($mysqli->connect_error) {
        die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
    }
} else {
    exit();
}

Файл rss.php

<?php

// см. стандарт

if ($_SERVER['QUERY_STRING'] == '') { // убирать невостребованные страницы с параметрами, например, site.ru/rss.php?p=0, site.ru/rss.php?p=1 и т.д.

    // подключить файл с паролем от базы данных
    define('dbOn', '');
    require_once 'абсолютный_адрес/db.php';

    if (!$mysqli->set_charset("utf8")) {
        printf("Ошибка при загрузке набора символов utf8: %s\n", $mysqli->error);
        exit();
    } else {

        if ($result = $mysqli->query("SELECT url, title, update, description FROM table WHERE meta LIKE '%feed%' ORDER BY update DESC LIMIT 10;")) {  // ORDER BY осуществляет сортировку строк по дате обновления, условие WHERE meta LIKE '%feed%' — выбор только тех, в ячейках которых на пересечении со столбцом meta есть значение feed (если перед обновлением строки не убрать feed, то читатели увидят дубликат записи), а LIMIT 10 останавливает перебор и вывод после первых 10-и найденных
            header("Content-Type: application/rss+xml;");
            echo '<?xml version="1.0"?>
  <rss version="2.0">
    <channel>
      <title>Шпаргалка блоггера</title>  // своё название RSS-ленты
      <link>http://shpargalkablog.ru/</link>  // свой URL сайта, данные которого транслируются в RSS-ленте
      <description>Вебмастеру в помощь: SEO, аналитика, HTML, CSS, JS, PHP</description>  // своё описание RSS-ленты одним предложением
      <language>ru</language>';

            while ($row = $result->fetch_assoc()) {
                echo '
        <item>
          <title>'. $row['title'] .'</title>
          <link>http://shpargalkablog.ru/'. $row['url'] .'</link>
          <description>'. $row['description'] .'</description>
          <pubDate>'. date('r', strtotime($row['update'])) .'</pubDate>
          <guid>http://shpargalkablog.ru/'. $row['url'] .'</guid>
        </item>';
            }

            echo '
    </channel>
  </rss>';
        }
		
    }

    $mysqli->close();
    exit();

} else { // 404 ошибка
    http_response_code(404);
    include_once 'http://site.ru/404.php'; // подключить файл со своим оформлением 404 ошибки
    exit();
}

Файл .htaccess

# если нужен редирект с /rss.php на Feedburner (см. страница справки)

RewriteEngine On # если запись отсутствует
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
RewriteCond %{QUERY_STRING} ^$ [NC]
RewriteRule ^rss.php$ http://feeds.feedburner.com/shpargalkablog [R=301,L]

HTML разметка страниц сайта

Не нужно непременно искать адрес RSS-ленты. В RSS-ридер достаточно добавить адрес любой страницы сайта, в исходном коде которой есть запись:

<!DOCTYPE html>
<html>
<head>
<link title="RSS | Шпаргалка блоггера" type="application/rss+xml" rel="alternate" href="/rss.php"/>
Все комментарии