RSS лента для вашего сайта - это просто
Основой данного материала стала статья "
Технология RSS | Экспорт информации в RSS" но некоторым этот материал показался - не совсем понятным, что ж, я постараюсь разжевать.
Первым шагом будет написание скрипта RSS ленты: создаём файл
rss.php и пишем в него наш код:
<?
mysql_connect("хост бд", "имя пользователя бд", "пароль пользователя бд");
mysql_select_db("имя бд");
function BuildRss($title, $link, $desc) {
$re=mysql_query("select * from `news` order by id desc limit 10");
echo "<?xml version=\"1.0\" encoding=\"windows-1251\" ?>\n";
echo "<rss version=\"2.0\">";
echo "<channel>";
echo "<title>$title</title>";
echo "<link>$link</link>";
echo "<description>$desc</description>";
while($res=mysql_fetch_array($re)) {
echo "<item>";
echo "<title>$res[title]</title>";
echo "<link>$link/index.php?str=$res[id]</link>";
echo "<description>$res[desc]</description>";
echo "<pubDate>$res[date]</pubDate>";
echo "<guid>$link/index.php?str=$res[id]</guid>";
echo "</item>";
}
echo "</channel>";
echo "</rss>";
}
BuildRss("Имя канала новостей", "http://адрес канала", "Описание канала");
?>
Оcнова есть, сохраняем, но не закрываем, решаем с какой таблицей будем работать, допустим, с новостями и таблица называется
news.
Ищем в нашем коде строчку:
$re=mysql_query("select * from `news` order by id desc limit 10");
Нас интересует:
select * from `news` order by id desc limit 10
select - как переводится, так и работает - можно перечислить выбираемые поля таблицы, а можно указать
* тогда будут выбраны все поля.
from - тоже работает как и переводится, из какой таблице будут выбраны поля, в нашем случаи как пример будет таблица
"news"
order by - стоит перед значением по которому будет производится сортировка, в данном случаи
`id` новости, и сортироваться будет сверху вниз, но этого нам не надо поэтому дописываем
desc - с этим значением сортировка будет снизу вверх.
limit - из названия понятно "лимит" - лимит на количество выводимой информации, дабы не завалить всеми материалами подписавшегося - ставим ограничение к примеру в
10.
Готово, теперь разберём шаблон.
Ищем внизу строчки:
# $res[имя поля в таблице, которое будет заголовком]
echo "<title>$res[title]</title>";
Здесь придётся немного притормозить, дело в том, что у некоторых новости сортируются не так, как предполагаю я - если структура просмотра новостей другая - попробуйте подобрать сами, в общем, здесь должна содержаться ссылка на новость. Хотя возможно, что все новые новости у вас на одной станице, и вы могли бы указать её, как пример:
$link/index.php?str=news или
$link/news.php
Переменная
$link будет содержать ваш url поэтому её не меняем.
echo "<link>$link/index.php?str=$res[id]</link>";
$res[имя поля в таблице, которое будет содержать основной текст]
Обычно это поле содержащее текст материала (новости) - но как быть, если новость слишком длинна. Да, если это так-то придётся немного подправить наш скрипт - в конце этой части материала я приведу пример такого решения.
echo "<description>$res[desc]</description>";
$res[имя поля содержащие дату добавления новости]
echo "<pubDate>$res[date]</pubDate>";
Снова ссылка на новость - или как предположили выше - ссылка на страницу новых новостей.
echo "<guid>$link/index.php?str=$res[id]</guid>";
Отредактировали - сохраняем, теперь скрипт работает с нашей уже имеющейся таблицей новостей.
Как я и упоминал выше на счёт:
$res[desc] - поля содержащие текст, может содержать большой материал, поэтому нам необходимо его обрезать и отправить только определённый размер материала. Для этого вернёмся к строчке:
$re=mysql_query("select * from `news` order by id desc limit 10");
И разберём её иначе, а именно:
select * - заменим * на имена необходимых полей таблицы, как пример у нас идут:
id, date, title, desc. Поле desc мы и будем менять, сделаем следующие:
SUBSTRING(desc,1,250) AS text - данное выражение вырежет из нашего материала в поле
desc от первого символа -
250 символов и переименует поле для нас из
desc в
text, говоря простым языком. Теперь в шаблоне меняем
$res[desc] на $res[text].
У нас получится:
$re=mysql_query("select id, date, title, SUBSTRING(desc,1,250) AS text from `news` order by id desc limit 10");
Вот такой вот пример скрипта экспорта наших данных в RSS.
Для того чтобы добавить иконку RSS в адресной строке браузера (чтобы пользователи видели наличие RSS новостной ленты и могли подписаться)
Пишем в шаблоне сайта, между тэгами
<nead></nead> следующую строку:
<link rel="alternate" href="rss.php" mce_href="rss.php" type="application/rss+xml">