[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Web - программирование / PHP /

Делаем свою RSS ленту

Полагаю, что практически все слышали о том, что бывают ленты новостей. Но далеко не все сайтовладельцы пользуются этой несомненно полезной вещью. А ведь если Вы - владелец форума или новостного сайта, rss - штука весьма нужная, она позволит Вашим посетителям просматривать заголовки новостей и заходить на сайт только для прочтения того, что им действительно нужно и интересно. Одним словом, я решил по возможности коротко рассказать о том, как создать свою rss-ленту, взяв как пример скрипт, сделанный мною для нашего форума.

Для начала выдаем правильный content-type:


header("content-type: application/rss+xml");


Затем формируем заголовок ленты:


<?xml version="1.0" encoding="koi8-r"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>recovered.info</title>
<link>http://recovered.info/</link>
<description>recovered.info forum</description>
<language>ru-ru</language>';


Следует обратить внимание на кодировку документа (encoding), а также заголовок, описание, ссылку и язык. Хотя, как показывает опыт, большинство rss-reader'ов показывает только название ленты, скрывая остальную информацию.

Далее мы собственно должны вывести ленту новостей. Каждая запись состоит из заголовка (title), ссылки (link), описания (description) и даты (dc:date). Обязательными параметрами являются заголовок и ссылка, остальное можно при желании опустить. Или, наоборот, добавить имя автора, категорию или еще что-нибудь (см. описание стандарта).


<item>
<
title>'.htmlspecialchars($topic_title).'</title>
<
link>http://recovered.info/viewtopic.php?p='.$post_id.'#'.$post_id.'</link>
<description>
topic:
<
a href="http://recovered.info/viewtopic.php?t='.$topic_id.'">'.
htmlspecialchars($topic_title).
'
</a>
<
br />
forum:
<
a href="http://recovered.info/viewforum.php?f='.$forum_id.'">'.
htmlspecialchars($forum_name).
'
</a>
</
description>
<
category>'.
htmlspecialchars($forum_name).
'
</category>
<
dc:date>'.
strftime('
%y-%m-%dt%h:%m:%s+02:00', $last_post_time).
'</dc:date>
</
item>


Обратите внимание на то, что внутри тагов не должна встречаться спец-символы (<, > и т.д.). А также на формат времени (yyyy-mm-ddthh:mm:ss+offset). Весьма распространенный недочет rss-лент - это именно неверное указание времени публикации, что приводит к большой путанице в ленте и неудобствам при чтении. Кстати говоря, дату можно указывать и используя таг - в этом случае она должна соответствовать rfc 822.

После вывода всех записей остается только закрыть ленту:


</channel>
</
rss>


А теперь посмотрим, как выглядит готовый скрипт для вывода ленты сообщений форума, использующего движок phpbb:


<?php

include('config.php');

header("content-type: application/rss+xml");

echo
'<?xml version="1.0" encoding="koi8-r"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>recovered.info</title>
<link>http://recovered.info/</link>
<description>recovered.info forum</description>
<language>ru-ru</language>'
;

if (!(
$mysql = mysql_connect($dbhost, $dbuser, $dbpasswd)))
return
0;

if (!(
$db = mysql_select_db($dbname)))
return
0;

$result = mysql_query('select phpbb_posts.topic_id, max(phpbb_posts.post_id),
phpbb_topics.topic_title, phpbb_forums.forum_name,
max(phpbb_posts.post_time) as last_post_time,
phpbb_forums.forum_id
from phpbb_topics, phpbb_posts, phpbb_forums
where ( phpbb_topics.topic_id = phpbb_posts.topic_id ) and
( phpbb_topics.forum_id = phpbb_forums.forum_id )
group by phpbb_posts.topic_id
order by last_post_time desc
limit 15'
);

while (list(
$topic_id, $post_id, $topic_title,
$forum_name, $last_post_time, $forum_id) = mysql_fetch_row($result)) {
echo
'
<item>
<title>'
.htmlspecialchars($topic_title).'</title>
<link>http://recovered.info/viewtopic.php?p='
.$post_id.'#'.$post_id.'</link>
<description>
topic:
<a href="http://recovered.info/viewtopic.php?t='
.$topic_id.'">'.
htmlspecialchars($topic_title).
'</a>
<br />
forum:
<a href="http://recovered.info/viewforum.php?f='
.$forum_id.'">'.
htmlspecialchars($forum_name).
'</a>
</description>
<category>'
.
htmlspecialchars($forum_name).
'</category>
<dc:date>'
.
strftime('%y-%m-%dt%h:%m:%s+02:00', $last_post_time).
'</dc:date>
</item>'
;

}
// while - fetch rows

mysql_free_result($result);

echo
'
</channel>
</rss>'
;

mysql_close($mysql);

?>




Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Web - программирование / PHP /

GTK+: перспективы развития
02-03-2010   

Библиотека GTK+ прошла долгий путь развития и сейчас очень популярна. GNOME, одна из ведущих оконных сред, использует GTK+ почти исключительно, GIMP построен на GTK+, множество коммерческих разработчиков ПО, таких как Abobe, NVidia и VMware, решили использовать эту библиотеку в качестве графической основы для своих продуктов... подробнее

Кол. просмотров: общее - 4397 сегодня - 2

Новостной портал
13-11-2009   

Slashdot.org – популярный новостной портал с посещаемостью 50 млн. человек в месяц. Авторы проекта добились такого успеха, предоставляя пользователям свежие и интересные новости из мира IT... подробнее

Кол. просмотров: общее - 4292 сегодня - 1

Параллельное выполнение скриптов может нарушить целостность информации в файлах
13-11-2009   

Здесь рассматривается вопрос, что бывает, если запустить некий скрипт почти одновременно (что происходит, например, при большой нагруженности сервера) несколько раз, т.е. запустить несколько копий одного и того же скрипта. И к чему это может привести... подробнее

Кол. просмотров: общее - 4105 сегодня - 1

No spam.php
10-11-2009   

...и снова о спаме. Кто о нем только не писал, и все писали, что это плохо и ай-яй-яй. Я не буду оригинальничать, и тоже скажу – это плохо. Это ай-яй-яй. Как бороться со спамерами со своей стороны... подробнее

Кол. просмотров: общее - 4153 сегодня - 0

Начинаем работу с рисунками в php для Windows
10-11-2009   

Эта статья даст вам общее представление о том, как создавать, обрабатывать и выводить рисунки в PHP4 для Windows... подробнее

Кол. просмотров: общее - 4138 сегодня - 1



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects