Вот буквально вчера я над этим задумался.... У меня есть скрипт для создания 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 - у картинки и у ленты - должны совпадать. Это в принципе - все....
Конечно, кто пользуется готовыми CMS не придется страдать написанием или адаптацие скрипта.. Так как там уже все включено... Но проверить на валидность - стоит... Но если у вас - самописный движок, то этот материал будет вам чрезвычайно полезен =)
Обновление:
Сейчас я RSS генерирую автоматически, но теперь с поддержкой сервиса Яндекс.Турбо, то есть, если зайти на сайт по ссылке https://new.yurecnt.ru/rss/info-0-999.xml можно увидеть первые 999 страниц и оно проходит валидацию у Яндекса.
По сути отрабатывает модуль /rss/ и выдает нужное количество записей, больше 999 делать не надо, так как Яндекс за один прием не возьмет больше.
Рейтинг: 84
Обновлено: 21.11.2024