Best-club - портал хорошего настроения!
→◊ Библиотека ◊←
Меню сайта
  • Драмы
  • Ужасы
  • Фэнтези
  • Боевики
  • Мистика
  • Комедии
  • Триллеры
  • Мелодрамы
  • Фантастика
  • Мультфильмы
  • Приключения
  • Связь с админом
  • Список пользователей
  • Полная статистика сайта
  • ТОП наград
  • Переводчик
  • Конвертер величин
  • Проверка правописания
  • Раздача ICQ
  • Оставить отзыв о сайте
  • Раскрутка сайтов

  • Поиск по сайту
    Введите ключевое слово
    для поиска



    Статистика сайта




    ProfiSmart TOP webgari.com Рейтинг сайтов

    Каталог сайтов

    bodr_top
    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Зарегистрировано:
    Всего: 1117
    Парней: 1070
    Девушек: 47
    Последний: molodoo

    Облако тегов
    Важная информация
    Главная » Статьи » Wap/Web Мастеру » PHP, Perl, ASP

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

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

    <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, Я не стал городить классы и шаблоны, а сделал все достаточно прямолинейно:
    // Задаем формат даты (московское время)
    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 <<
    <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>";
    echo "</feed>";
    ?>

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

    Категория: PHP, Perl, ASP | Добавил: Admin | Дата: 26.08.2009 | Просмотры: 913 | Рейтинг:
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Вход на сайт
    Гость, добро пожаловать на best-club! Тапки в углу, пиво в холодильнике. Располагайся:) Для получения большего комфорта войди как пользователь или зарегистрируйся.



    Обмен музыкой [?]
    Открыть в новом окне

    Партнёры





    Опрос

    Какой номер icq вы хотели бы больше всего?
    Всего ответов: 15

     
    Best-club team © 2008 - 2024

    SiteMap Партнёры и друзья Поддержать проект
    Третий Мир: Война Королей - Форум
    Администрация сайта не несёт ответственности за материалы опубликованные на сайте! Все материалы исключительно для ознакомления!
    Мини профиль