Сейчас: 22:08:06   25-го апреля 2024 г.
UsefulScript.ruХитростиКак сделать RSS-ленту
40
133

Как сделать RSS-ленту (RSS-канал) для сайта

В этой теме мы рассмотрим, как на своем сайте создать простейшую, но зато свою собственную RSS-ленту.


Рассмотрим для начала простенький пример RSS-ленты, которая имеется у нас на сайте и располагается по ссылке - RSS-лента. Далее мы разберем основные её компоненты.

PHP код:
<?php
echo '<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
  <channel>
    <title>Сайт полезных скриптов UsefulScript.ru</title>
    <link>http://usefulscript.ru/</link>
    <description>Полезные скрипты и онлайн-сервисы</description>
    <language>ru</language>
    <copyright>Copyright 2011 by UsefulScript.ru</copyright>
    <lastBuildDate>Sun, 26 Jun 2011 02:13:33 GMT</lastBuildDate>
    <skipDays>
        <day>Thursday</day>
    </skipDays>
    <skipHours>
        <hour>22</hour>
        <hour>23</hour>
    </skipHours>

    <item>
        <title>Градиентная заливка текста</title>
        <link>http://usefulscript.ru/gradient.php</link>
        <description>
        Градиентная заливка текста это наверно самый красивый пример оформления
        текста. Однотонные тексты смотрятся гораздо более мрачными, чем переливающиеся
        различными цветами. Старайтесь использовать данную радужную заливку только
        для заголовков. Пример такой радужной (градиентной) заливки можно посмотреть
        по ссылке - <![CDATA[<a href="http://usefulscript.ru/no_hotlink.php">
        http://usefulscript.ru/gradient.php</a>]]>
        Там же Вы имеется скрипт, делающий такую заливку.
        </description>
    </item>

    <item>
        <title>Вторая тема</title>
        <link>Ссылка на тему</link>
        <description>
        Описание...
        </description>
    </item>
  </channel>
</rss>'
;
?>

Как вы могли заметить, данная лента выполнена с использованием PHP кодов и следовательно файл имеет расширение .php, что не мешает ей быть RSS-каналом. Файл в формате php мы выбрали не случайно, а потому, что в данном файле можно разместить код, который будет обрабатываться на стороне сервера и не будет виден посетителям данной RSS-ленты (например, счетчик посещений).


Обязательные элементы RSS-канала
title Имя RSS-канала. Имя канала, как правило, совпадает с названием сайта.
description Описание RSS-канала.
link URL сайта, с которым связан данный RSS-канал.
Необязательные элементы RSS-канала (channel)
language Язык публикации канала (ru - Русский; en-us - Английский).
copyright Сведения об авторстве на RSS-канал.
managingEditor Email адрес ответственного за содержание RSS-канала.
webMaster Email адрес вебмастера, отвечающего за техническую часть.
pubDate Дата публикации канала, в соответствии с RFC 822.
lastBuildDate Время последнего изменения канала в соответствии с RFC 822.
category Категории, к которым принадлежит канал.
generator Название программы, с помощью которой был сгенерирован данный RSS-канала.
docs Ссылка на файл документации подвида RSS, который был использован при создании канала.
ttl Время, в течение которого канал сохраняет свою актуальность. Время указывается в минутах.
image Используется для вставки графического файла (поддерживаемые расширения: GIF, JPEG, или PNG), который будет показан вместе с RSS-каналом.
Имеет следующие параметры:
title - название изображения;
description - описание изображения, которое будет показано, в случае, когда файл по каким-либо причинам не доступен;
link - ссылка на страницу, с которой связан RSS-канал;
url - URL на графический файл формата JPEG, GIF или PNG, который связан с RSS-каналом;
width - ширина изображения;
height - высота изображения.
skipHours Часы, в которые RSS-ридеры могут не проверять RSS-канал на наличие обновлений. Часы должны указываться внутри параметра hour.
skipDays Дни, в которые RSS-ридеры могут не проверять RSS-канал на наличие обновлений. Дни должны указываться внутри параметра day.
Обязательные элементы итема (item)
title Название итема (новости, темы) RSS-канала.
description Описание итема.
link Ссылка на страницу, содержащую полное описание указанного итема (новости, темы) RSS-канала.
Необязательные элементы итема (item)
author Email адрес автора данного итема (новости, темы).
category Категория итема (новости, темы).
comments Ссылка на страницу, содержащую комментарии по итему (новости, темы).
enclosure Медиа-объект, присоединенный к итему.
Имеет следующие параметры:
url - ссылка на файл объекта;
length - размер файла в байтах;
type - тип файла, в соответствии со спецификацией MIME.
guid Уникальная строка идентификации итема.
pubDate Дата публикации итема, в соответствии с RFC 822.

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

Дата создания: 14:27:12 03.07.2011 г.
Дата обновления: 22:36:47 08.03.2012 г.
Посещений: 18208 раз(а).

Комментарии посетителей (22 шт.):
Алена
1
# 66
(00:59:49  28.01.2012 г.)

Напишите, пожалуйста, конкретно, куда и как вставить этот код для создания RSS на WordPress и Joomla?
Ответить

Administrator
0
# 67
(17:14:18  28.01.2012 г.)

Алена, для создания RSS на WordPress и Joomla есть специальные плагины, а наш код предназначен для самописных сайтов.
Наш код необходимо вставлять в новый файл с расширением php (например, rss.php), который и будет RSS-лентой.
Ответить

Андрей
1
# 69
(21:57:31  04.02.2012 г.)

Благодарю за информацию, про RSS с расширением php не знал, для меня это новость, причем очень полезная, благодаря Вам сократил трудозатраты раз в 10.
Ответить

Вовка
-7
# 182
(14:07:52  05.06.2012 г.)

Показать сообщение
Зачем изобретать велосипед и писать все руками, когда есть бесплатные визуальные редакторы. Я лично пользуюсь программой RSSNinja и вполне доволен.
Ответить

Василий
0
# 408
(07:20:00  22.11.2012 г.)

А можно поподробнее про медиа-объект присоединённый к итему. Как вставить изображение в новость?
Ответить

Administrator
0
# 410
(20:56:37  22.11.2012 г.)

Василий, для вставки изображения лучше используйте такую конструкцию:
<![CDATA[<img src="http://usefulscript.ru/image/usefulscript_logo.png">]]>
Ответить

Никита
-1
# 867
(21:37:49  20.05.2013 г.)

А реально ли вытаскивать в цикле записи из базы данных?
Ответить

Administrator
0
# 869
(22:30:04  20.05.2013 г.)

Конечно реально и совсем не сложно. Но зачем их вытаскивать в цикле из базы данных? Уж лучше за раз вытащить штук двадцать (LIMIT 20), а уже потом в цикле разобрать массив и сформировать из него RSS.
Ответить

Никита
0
# 870
(22:41:08  20.05.2013 г.)

Да, я знаю, что не сложно, и как раз мой следующий вопрос был бы про "лимит" новостей в RSS ленте - есть какие-нибудь ограничения? Почему бы не вытащить все заметки?
PS: Приведённый выше код некорректно отображается при обновлении страницы rss.php - почему-то вся информация дублируется.
Ответить

Administrator
0
# 871
(23:03:08  20.05.2013 г.)

А зачем все? Лента предназначена для анонса новых статей и тем.
По поводу дублирования - возможно у Вас что-то кэшируется. Только что проверил в Опере и IE - полет нормальный.
Ответить

Никита
0
# 872
(00:52:30  21.05.2013 г.)

Вопрос конечно уже немного по другой теме, но всё же - наличие такой RSS-ленты хоть как-то влияет на продвижение ресурса?
Ответить

Administrator
0
# 874
(21:53:28  21.05.2013 г.)

Влияет, но не сильно. Но в любом случае лишние посетители и внешние ссылки на сайт не будут лишними.
Ответить

Никита
0
# 881
(20:55:48  26.05.2013 г.)

Почему-то в браузере Хром данная rss лента не отображается вообще - вместо неё показан не отформатированный текст и цифры.
А в Опере у меня почему-то при повторном посещении этой страницы вся информация дублируется.
Ответить

Administrator
0
# 885
(18:36:43  27.05.2013 г.)

Ответил на нашем форуме в теме Неправильная работа RSS-ленты.
Ответить

Lily
1
# 1254
(18:00:32  05.11.2013 г.)

Добрый день, а как вводится дата в Вашем RSS канале - автоматически? И сколько записей должно быть в RSS?
Ответить

Administrator
0
# 1255
(20:21:36  05.11.2013 г.)

Даты тем мы берем в формате unixtime из MySQL базы и при помощи функции date("r",дата) преобразуем в нужный формат. Дату последнего изменения ленты - при помощи date("r").
Ответить

Виталий
0
# 1397
(13:16:05  14.01.2014 г.)

Подскажите добавил все. Добавил несколько item но отображается только последний. И дата не отображается.
В чем причина может быть?
Вот ссылка ***/rss.xml
Ответить

Administrator
0
# 1400
(20:12:45  14.01.2014 г.)

Проверьте на ошибки Вашу RSS ленту при помощи сервиса, описанного в теме Онлайн-сервис проверки валидности RSS-ленты
Ответить

гость
0
# 4089
(21:11:11  08.10.2017 г.)

Здравствуйте.
У меня блог полностью на английском языке, а в файле rss.xml дата на русском языке, и уже не в первый раз замечаю. Почему так происходит?
Заранее спасибо за ответ.
Ответить

Administrator
0
# 4090
(21:48:10  08.10.2017 г.)

Это надо смотреть код, который создает файл rss.xml. Скорее всего, у Вас дата выводится с учетом текущих настроек локали.
Ответить

гость
0
# 4095
(23:55:16  10.10.2017 г.)

А самостоятельно я могу на хостинге установить нужную опцию, чтобы дата выводилась на английском языке? Если - да, то что мне нужно сделать? А то я в этом PHP не силён абсолютно.
Ответить

Administrator
0
# 4096
(15:38:37  11.10.2017 г.)

Это было лишь предположение. Нужно смотреть код, который генерирует файл rss.xml и уже в него вносить изменения в зависимости от того, как он генерирует дату.
Ответить

Закрыть
Ваше имя:
642 + 5 =
Добавить комментарий:
Ваше имя:
642 + 5 =

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Посетителей онлайн: 4

Мешает ли Вам реклама?