ATOM 1.0 лента на PHP 5

Данный формат появился в июле 2003 года как альтернатива RSS каналам. Сначала проект назывался Echo, но затем возникли проблемы с товарным знаком и проект был переименован в Atom. Atom — это основанный на XML формат, предназначенный для агрегирования информации в первую очередь с веб-сайтов. Он создавался для использования в блогах, однако может применяться и для любых других новостных и периодических изданий в web. Существенной частью спецификации является протокол, работающий поверх HTTP, предназначенный для автоматизации ведения блога. Мы будем рассматривать версию 1.0 ставшую стандартом W3C в 2005 году.

Пример формата Atom 1.0

По своей сути Atom так же как и RSS напоминает обычный XML файл:

<?xml version="1.0" encoding="windows-1251"?> <feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru-RU"> <title>My News</title> <subtitle type="text">News from my family.</subtitle> <generator>Weblog Editor 2.0</generator> <link rel="alternate" type="text/html" href="http://mysite.com/" /> <link rel="self" type="application/atom+xml" href="http://mysite.com/atomfeed.php" /> <id>http://mysite.com/</id> <updated>2007-11-21T15:24:28-03:00</updated> <author> <name>Your name</name> <email>webmaster@mysite.com</email> </author> <entry> <title>My birthday</title> <link rel="alternate" type="text/html" href="http://mysite.com/blog/2007/mybirtday.php" /> <id>http://mysite.com/blog/2007/mybirtday.php</id> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> I celebrate my birthday today! </div> </content> <updated>2007-07-05T14:33:30-03:00</updated> <published>2007-07-05T14:33:30-03:00</published> </entry> <entry> <title>My new PC</title> <link rel="alternate" type="text/html" href="http://mysite.com/blog/2007/mynewpc.php" /> <id>http://mysite.com/blog/2007/mynewpc.php</id> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml"> I want to buy new PC. </div> </content> <updated>2007-04-10T14:32:34-03:00</updated> <published>2007-04-10T14:32:34-03:00</published> </entry> </feed>

Как вы видите ничего сложного нет, я не буду сейчас описывать значения полей, а перейду сразу к генератору ленты новостей. Если вы чего-то непоняли, то можете почитать подробнее в rfc4287

Реализация на PHP 5

Как и в статье про RSS, Я не стал городить классы и шаблоны, а сделал все достаточно просто:

<?php // Задаем формат даты (московское время) define('DATE_FORMAT_RFC3339','Y-m-d\\TH:i:s-03:00'); // Сообщяем браузеру что передаем XML header("Content-type: text/xml; charset=windows-1251"); // Дата последней сборки фида $lastBuildDate=date(DATE_FORMAT_RFC3339); echo <<<END <?xml version="1.0" encoding="windows-1251"?> <feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru-RU"> <title>mysite.com AtomFeed</title> <subtitle type="text">Мой супер блог</subtitle> <generator>Weblog Editor 2.0</generator> <link rel="alternate" type="text/html" href="http://mysite.com/" /> <link rel="self" type="application/atom+xml" href="http://mysite.com/atomfeed.php" /> <id>http://mysite.com/</id> <updated>$lastBuildDate</updated> <author> <name>Mihail</name> <email>editor@mysite.com</email> </author> END; // В этом файле надо разместить подключение к базе данных include_once("config.php"); // Модифицируйте запрос под вашу таблицу $query = "SELECT name, anon, url, UNIX_TIMESTAMP(date) as pubdate FROM news WHERE visible=1 ORDER by date desc LIMIT 0,10"; $res = mysql_query($query); while ($row=mysql_fetch_array($res)) { // Убираем из тайтла html теги и лишние пробелы $title = strip_tags(trim($row['name'])); // С аноносом можно не проводить такие // манипуляции, т.к. мы обьявим для него тип xhtml $anon = $row['annonce']; $url = $row['uri']; $pubDate = date(DATE_FORMAT_RFC3339, $row['pubdate']); echo <<<END <entry>> <title>$title</title> <link rel="alternate" type="text/html" href="http://mysite.com/news/$url" /> <id>http://mysite.com/news/$url</id> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml">$anon</div> </content> <updated>$pubDate</updated> <published>$pubDate</published> </entry> END; } echo "</feed>"; ?>

Как видите ничего сложного, теперь можно назвать полученный файл atomfeed.php и и сделать ссылочку на сайте как у нас. Кстати проверить ленту на валидность можно с помощью замечательного сервиса FEED Validator.

Теги:
Поделись с друзьями:
Комментарии

FEED Validator - удобный сервис.