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.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Василий
23.09.2010
Постоянная ссылка (Permalink)
FEED Validator - удобный сервис.