26,695 просмотров

Инструкция по установке RSS скрипта на свой сайт, используя PHP RSS каналы в настоящее время используются повсеместно, на них подписываются, их используют в качестве обмена новостями между сайтами, а также их парсят различные роботы, например, ЯППБ (поиск по блогам Яндекса).

Каждый уважающий себя сайт, который имеет регулярно обновляемый контент (это могут быть новости, статьи, фотографии, дневники и т.д.), просто обязан иметь RSS фиды, так как люди, заинтересованные в свежей информации на сайте, первым делом ищут, как подписаться на эти самые обновления. К тому же, имея RSS на своем сайте, можно регистрировать его в различных, специально предназначенных для этого, каталогах и, таким образом, получать обратные ссылки и главное — траффик!

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

PHP скрипт для установки RSS на сайт

Прежде всего, надо уяснить, что на выходе мы должны получить XML файл определенной структуры (об этом можно почитать в википедии). Для удобного манипулирования с RSS каналами у меня имеется хороший PHP класс (class.RSSFeed.zip [1.25KB]).

Для того, чтобы установить себе на сайт RSS канал, проделайте следующие шаги: 1. загрузите класс RSSFeed себе на сервер; 2. создайте файл rss.php, в который поместите строки, приведенные ниже в примере (с вашими конфигурационными настройками).

PHP: (rss.php, начало файла)
  1. <?
  2. # отключаем вывод замечаний
  3. error_reporting(E_ALL ^ E_NOTICE);
  4. # устанавливаем макс. время работы скрипта 30 сек.
  5. set_time_limit(60 * 30);
  6. # подключаем класс (в каталоге lib)
  7. require_once("lib/class.RSSFeed.php");
  8.  
  9. # задаем параметры базы данных
  10. define("DB_HOST", "localhost"); // хост
  11. define("DB_NAME", "sitedatabase"); // имя БД
  12. define("DB_USER", "mysite_dbuser"); // имя польз-ля
  13. define("DB_PASS", ""); // пароль к БД
  14.  
  15. # другие настройки
  16. define("NEWS_TABLE", "news"); // таблица новостей
  17. define("DATE_COLUMN", "dtadded"); // поле в таблице, в кот. хранится дата добавления новости
  18. define("NUM_ROWS", 15); // кол-во выводимых в rss записей
  19. define("HTTP_URL", "http://mywebsite.ru/"); // адрес сайта (или раздела)
  20. define("RSS_TITLE", "Последние новости на нашем сайте site.ru"); // заголовок RSS канала
  21. define("RSS_DESCR", "Самая свежая информация с сайта site.ru: события, игры, путешествия, конкурсы и многое другое!"); // описание RSS канала
  22.  
  23. # соединяемся с СУБД
  24. if (!($conn = mysql_connect(DB_HOST, DB_USER, DB_PASS)))
  25.     exit(); // при неудачном соединении
  26. mysql_select_db(DB_NAME, $conn); // выбор БД
  27. mysql_query("SET NAMES 'utf8'"); // используем utf8

В приведенном PHP коде необходимо настроить константы (задаются функцией define). Обратите особое внимание на NEWS_TABLE и DATE_COLUMN, это имя таблицы новостей (или статей и т.д.) и имя колонки с датой, если последней в таблице нет, то её надо добавить (записи RSS фида обязательно должны содержать дату публикации).

Мы определили константы и подключились к БД, теперь необходимо вывести все записи в XML формате. Для этого используем следующие строки кода (добавляем их ниже предыдущих не изменяя).

PHP: (rss.php, конец файла)
  1. # формируем запрос
  2. $query = "
  3.    SELECT *
  4.    FROM `%s`
  5.    ORDER BY `%s` DESC
  6.    LIMIT 0, %d
  7. ";
  8.  
  9. # посылаем запрос к базе данных
  10. if (!($rs = mysql_query(sprintf($query, NEWS_TABLE, DATE_COLUMN, NUM_ROWS))))
  11.     exit(); // при неудачном выполнении запроса
  12.  
  13. # создаем rss объект
  14. $rss = new RSSFeed(HTTP_URL, RSS_TITLE, RSS_DESCR);
  15.  
  16. # формируем Item в RSS для каждой записи
  17. while($row = mysql_fetch_assoc($rs))
  18. {
  19.     $rss->AddItem(
  20.         htmlentities(HTTP_URL . $row['path']),
  21.         $row['title'],
  22.         $row['body'],
  23.         $row[DATE_COLUMN]
  24.     );
  25. }
  26.  
  27. # публикуем рузельтирующий RSS 2.0
  28. $rss->Publish();
  29. ?>

Единственное, что можно редактировать в вышеприведенном коде, это названия полей в базе данных для URL страницы ($row['url']), заголовка ($row['title']) и описания ($row['body']). То есть, если у вас эти параметры формируются по другому принципу (например URL) или исходя из других названий полей, то необходимо сделать соответствующие правки.

Файл готов, что теперь?

Теперь необходимо проверить, работает ли то, что мы написали!?
Ваш новые RSS канал будет находиться по адресу http://site.ru/rss.php. Проверьте, отдается ли что-нибудь по этому адресу и если нет, то что-то не учли и надо искать причину (вероятнее всего в конфиге).

Также используйте валидаторы для проверки валидности самих XML фидов. Это можно сделать с помощью Feed Validator или W3C Feed Validator. Если все прошло отлично, поздравляю, вы успешно поставили себе на сайт RSS!

Неужели это все, что касается установки?

Да, на этом можно закончить установку RSS, однако адрес вида /rss.php не очень юзабелен, лучше с помощью .htaccess (если используется apache) сделать URL вида /latest-news.xml, этот вариант будет понятней для подписчиков. Файл .htaccess должен содержать примерно следующее:

Text: (.htaccess)
  1. RewriteEngine On
  2.  
  3. RewriteCond %{SCRIPT_FILENAME} !-d
  4. RewriteCond %{SCRIPT_FILENAME} !-f
  5. RewriteRule ^latest-news\.xml$  /rss.php  [NE,QSA,L]

Теперь вы можете использовать http://site.ru/latest-news.xml в качестве адреса для своего нового RSS канала, или же зарегистрировать его в FeedBurner, и отдавать читателям и ботам адрес фидбернера. Преимущество последнего варианта в том, что при создании на сайте новой новости она помимо того, что автоматически помещается в фид, фидбернер ещё пингует множество сервисов и поисковых систем, чтобы они были в курсе ваших обновлений.

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

Успехов с RSS!

  • 20 Нет
  • 125 Да
  • Мне понравилось!

Если вам понравилась статья, вы можете подписаться на RSS или E-mail рассылку. Для получения обновлений по электронной почте, введите ваш e-mail адрес в эту форму (Доставка от FeedBurner):