Реклама

Как сделать ленту новостей RSS Обновлено 22.05.2016

Вот буквально вчера я над этим задумался.... У меня есть скрипт для создания sitemap.xml, казалось, надо в нем просто переделать несколько строк и будет RSS... Не тут то было... Дело в том, что данный скрипт склаывает в корень сайта файл... В RSS это не обязательно, ибо сам php-скрипт может восприниматься как xml-rss...

Конечно, кажется, что трудного - вывести на экран xml-поток новостей, загрузить в агрегатор и радоваться?

Во первых, чтобы браузер или агрегатор воспринимал PHP как XML, нужно выставить заголовок - header("Content-type: text/xml;");

Затем посмотреть в любом примере код xml-файла или почитать документацию... Заходим на любой портал, Яндекс например, заходим в новости и везде есть справа - подписаться на RSS, жмем.... Огне-лис показывает список новостей, гугл-хром - пустую страницу... В любом браузере нажимаем правой кнопкой мыши и выбираем - просмотр кода страницы и получаем текст прямо XML-файла...

Нет ни чего сложного, позаимствовать заголовок и вывести его в начале файла... Так и делаем...

Потом в ход идет PHP-скрипт который проходит по базе данных, собирает последние записи и выводит их в поток в нужном нам формате...

И в самом конце - заключительная часть - футер XML-файла...

Кажется, все отлично, все должно работать, но RSS-агрегатор начинает ругаться, что не понимает этот XML... Мазила - показывает урезанную страницу, в лучшем случае - заголовок, скрипт чтения RSS - сыплет ошибками....

Начинаем гуглить - RSS-валидаторы... Мне понравился этот...

Оказывается, там масса тонкостей.... В заголоке ответа (PHP) не указана кодировка, лента конечно читабельна, но валидатор предупреждает, что лучше - казать, изменяем header("Content-type: text/xml;"); на header("Content-type: text/xml; charset=utf-8");

Затем, идет ругань на различные символы... приходится писать - скрипт подмены символов, так как они не допустимы в xml...

Еще по шапке - валидатор ругается на пропущенный элемент atom...

Выглядеть он должен примерно  так - (идет первым после

где прописан адрес где находится RSS-лента...

Но после добавления валидатор снова ругается, на то, что не описан элемент атом... Его нужно описать в строке -

Далее - в заголовке идет логотип... в принципе - поле не обязательное, но желательное... поля link и title - у картинки и у ленты - должны совпадать. Это в принципе - все.... в результате тяжелых родов, около двух часов ночи был рожден скрипт для создания валидного RSS...

Конечно, кто пользуется готовыми CMS не придется страдать написанием или адаптацие скрипта.. Так как там уже все включено... Но проверить на валидность - стоит... Но если у вас - самописный движок, то этот материал будет вам чрезвычайно полезен =)

RSS
RSS - Лента новостей
Закладки
Сообщества