<MyRusakov.ru />

PHP и MySQL с Нуля до Гуру 2.0

PHP и MySQL с Нуля до Гуру 2.0

Данный курс научит Вас программировать на самом популярном Web-языке в мире - PHP. Курс состоит из 11 разделов, в которых с нуля рассказывается и показывается процесс написания различных скриптов на PHP.

В курсе Вы узнаете всю необходимую теоретическую часть, а также увидите массу практических примеров, в том числе, и из моей практики.

Почти к каждому уроку идут упражнения.

Просмотрев данный курс, Вы сможете создавать абсолютно любые PHP-сайты любой сложности.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Как сделать RSS на сайте

Как сделать RSS на сайте

Пришло время, наконец-то, по-настоящему применить знания по XML на практике. В этой статье я расскажу, как сделать RSS-канал у себя на сайте. Безусловно, помимо небольших знаний по XML, потребуется знания по PHP (в зависимости от Вашего сайта, и MySQL тоже).

Вообще, весь смысл создания RSS-канала на сайте заключается в том, что нужно написать всего одну страницу в XML-формате с нужным кодом. Эту страницу необходимо динамически менять через PHP, добавляя туда свежие материалы из базы (либо от туда, где Вы держите контент). А вот в каком формате нужно добавлять, об этом написано чуть ниже.

Я сейчас сразу приведу пример, в каком виде надо генерировать XML-страницу с RSS-каналом Вашего сайта:

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Лента сайта MyRusakov.ru</title>
    <link>http://myrusakov.ru</link>
    <description>Создание и раскрутка сайтов</description>
    <item>
      <title>Как сделать RSS на сайте</title>
      <link>http://myrusakov.ru/xml-rss.html</link>
      <description>Описание процесса создания RSS-канала на сайте</description>
    </item>
    <item>
      <title>Как закрыть сайт на реконструкцию</title>
      <link>http://myrusakov.ru/php-close-reconstruction.html</link>
      <description>Как провести закрытие сайта на реконструкцию?</description>
    </item>
  </channel>
</rss>

В принципе, структура здесь достаточно прозрачная, однако, на всякий случай, поясню. Ваша задача подправить содержимое элемента channel, в частности, title, link и description надо изменить на название Вашего сайта, его адрес и краткое описание соответственно. Это фиксированная часть, которая не меняется. А вот дальше идут элементы item.

Вот именно содержимое элементов item и необходимо генерировать через PHP. Одна статья - один элемент item. Структура та же: title, link и description, что означает: название статьи, её адрес и краткое описание.

Помимо этих 3-х обязательных элементов есть ещё целая уйма необязательных параметров, полный список которых можно посмотреть здесь: http://cyber.law.harvard.edu/rss/rss.html.

Также обратите внимание, что весь код XML-документа должен быть написан без единой ошибки, иначе RSS-агрегаторы его просто не поймут. Для проверки валидности RSS-страницы используйте сервис W3: http://validator.w3.org/feed/.

На этом всё. Далее Вам необходимо лишь раскручивать данный RSS-канал, чтобы люди на него подписывались, но это уже совсем другая история.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (25):

sync.o sync.o 28.09.2011 21:20:27

Спасибо, Михаил, за статью! Хоть я уж не дождался и сделал свой первый feed сам) Кстати, валидатор попросил еще послать заголовок: Header("Content-type: application/rss+xml; charset=utf-8"); Ну это ладно, но вот зачем ему понадобилось это, я не понимаю: item should contain a guid element; Missing atom:link with rel="self". Может вы растолкуете?

Ответить

Admin Admin 28.09.2011 21:38:42

Это совсем необязательно, но если так хочется, то проблема решается так: 1. В атрибутах у элемента rss добавляется ещё один атрибут: xmlns:atom="http://www.w3.org/2005/Atom" 2. Внутри элемента channel надо добавить строчку <atom:link href="path_to_rss" rel="self" type="application/rss+xml" /> Вместо path_to_rss надо поставить ссылку к данному RSS-каналу.

Ответить

Валик :) Валик :) 20.11.2011 13:24:51

А как отправлять сообщения с ленты?

Ответить

Admin Admin 20.11.2011 15:59:55

Их не отправлять надо, на ленту должны люди самостоятельно подписываться.

Ответить

Валик :) Валик :) 20.11.2011 17:15:01

Я вот создал ленту. Подписался. Как должны приходить сообщение с ленты?

Ответить

Admin Admin 20.11.2011 17:20:02

В самом браузере теперь должна быть RSS-лента, куда должны приходить уведомления о новых материалах. Так же есть различные программы для чтения RSS-лент, и, наконец, есть сервисы (даже у Google есть), которые уведомляют пользователей по e-mail о новых статьях.

Ответить

klinkoff klinkoff 17.01.2012 02:22:38

Здравствуйте Михаил, Если можно прошу ответить на такой глупый вопрос: как заменить RSS-ленте надписи "All Ads", "Description" и включить в ленту картинки (фото). Теоретически понимаю как это можно сделать, а в каком файле найти не могу. На моем сайте лента автоматически создалась в ADSManagere. Адрес сайта на всякий случай: *** Заранее спасибо.

Ответить

Admin Admin 17.01.2012 02:26:55

На указанном сайте таких проблем не обнаружил, фото там также имеется.

Ответить

klinkoff klinkoff 17.01.2012 22:44:34

Михаил, простите может я не правильно выразился. Еще раз: будучи на своем сайте я захожу на страницу, где есть RSS (в объявления), жму, Mozilla (например) формирует ленту, открывает в отдельном окне, которое называется "All Ads" (сверху написано), под чертой типа описание - слово "Description". Вопрос 1: Как изменить эти надписи, написать свои, например, вместо "All Ads" имя сайта "Slavutich Board" и т.д.? При этом у меня отображается лента в виде списка новостей без картинок (фото). Вопрос 2: Как сделать, чтобы фото отображались? Спасибо.

Ответить

Admin Admin 18.01.2012 12:09:46

Заходил через Mozilla, картинки там были. Что касается надписей, то это уже где-то в настройках ADSManager, а если там нет, то обратитесь к их разработчикам. Лезть в их исходный код крайне опасно.

Ответить

regina_87 regina_87 15.05.2012 10:27:17

Здравствуйте, у меня проблемы с rss(выдается ошибка). Сам код правильный(разные пробовала), но если в базе обычный текст - все отлично выводится, а если много символов, выдается ошибка, например: &mdash;(выделено) или тег <p> почему-то выделяется как ошибка. Как мне это исправить, ведь у меня в текстах много символов?

Ответить

Admin Admin 15.05.2012 13:01:02

Все HTML-теги нужно преобразовывать в сущности, например, < в &lt;. Для этого есть функция htmlspecialchars().

Ответить

regina_87 regina_87 16.05.2012 03:52:01

Спасибо, попробую!

Ответить

regina_87 regina_87 16.05.2012 04:35:10

Все получилось! Спасибо!

Ответить

budeanov budeanov 07.09.2012 11:06:39

Здравствуйте Михаил,вот мой rss.xml : <?xml version="1.0" encoding="utf-8" ?> <rss version="2.0"> <channel> <title>TV7.MD RSS</title> <link>http://tv7.md/</link> <description>TV7.MD RSS</description> {foreach from=$recs item=item} <item> <title>{$item.Title|escapefquotes}</title> <link>{$item.link}</link> <description>{$item.Description|escapefquotes}</description> <guid>{$item.guid}</guid> <pubDate>{$item.CreateDate|date_format:"%a, %d %b %Y %T %z"}</pubDate> </item> {/foreach} </channel> </rss> Подскажите как вставить фото(видео) к каждой новости ($item). Примерно: <enclosure url="http://tv7.md/?action=image&id={$item.image|escapeofquotes}&size=1"length="11" type="image/jpeg"/> так? Спасибо

Ответить

Admin Admin 07.09.2012 13:29:41

<![CDATA[<img src="ссылка_на_картинку">]]> добавьте в description

Ответить

budeanov budeanov 13.09.2012 11:55:56

спасибо Михаил

Ответить

malina95 malina95 25.09.2012 23:48:55

Здравствуйте Михаил...Извините что так поздно...но я решил сделать у себя ленту...Но мне важно знать безопасность и работоспособность на хостинге...Подскажите правильно я сделал? (на локалке работает) немножко доработал <?php header("Content-Type: text/xml"); echo "<?xml version=\"1.0\" encoding=\"windows-1251\"?>"; ?> <rss version="2.0"> <channel> <title>Канал новостей блога ruseller.info</title> <link>http://test.local/</link> <description>Главная страница сайта</description> <language>ru</language> <?php require_once "blocks/bd.php"; $result = mysql_query("SELECT id,title,description FROM data WHERE secret='0' order by 'id' "); if ($myrow = mysql_fetch_array($result)) { do { echo<<<TXT <item> <title>$myrow[title]</title> <link>http://test.local/post.php?id=$myrow[id]</link> <description>$myrow[description]</description> <author>boss.Malinichev@yandex.ua</author> <guid>http://test.local/post.php?id=$myrow[id]</guid> </item> TXT; } while ($myrow = mysql_fetch_array($result)); } ?> </channel> </rss>

Ответить

Admin Admin 26.09.2012 15:10:33

Выглядит нормально, но всё равно тестировать надо.

Ответить

malina95 malina95 26.09.2012 17:40:26

Спасибо за ответ...Я очень старался но у меня нет хостинга чтобы его протестировать...

Ответить

peterburg87 peterburg87 08.06.2013 22:22:44

Здравствуйте Михаил,подскажите пожалуйста как добавить иконку в адресную строку,что-бы человек нажал и перешёл в rss ленту

Ответить

Admin Admin 09.06.2013 12:21:18

<link rel="alternate" type="application/rss+xml" title="RSS" href="rss.xml" />

Ответить

alexfor alexfor 27.06.2013 17:21:14

Здравствуйте, Михаил. Спасибо за пример. А у Вас есть урок генерации <item></item> через php. Сам столкнулся с таким вопросом. Пытался проинклудить в xml php(данные из БД в цикле) Не получается. Подскажите, пожалуйста, куда копать?

Ответить

Admin Admin 27.06.2013 18:37:39

Нужно изучать DOM, затем с его помощью генерировать XML-документ.

Ответить

rysich rysich 13.11.2013 19:47:50

Кроме RSS пожалуй и не знаю, где предпочтительнее использовать XML, вроде можно заменить его более простым форматом JSON. Ну единственное, если сохраняете какие-то архисложные конфиги или форматы данных на сервере, то возможно лучше тоже перегонять их в XML и потом только писать. Извините конечно за офтоп.

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.