- RewriteEngine On
- RewriteCond %{SCRIPT_FILENAME} !-d
- RewriteCond %{SCRIPT_FILENAME} !-f
- RewriteRule ^latest-news\.xml$ /rss.php [NE,QSA,L]
RSS каналы в настоящее время используются повсеместно, на них подписываются, их используют в качестве обмена новостями между сайтами, а также их парсят различные роботы, например, ЯППБ (поиск по блогам Яндекса).
Каждый уважающий себя сайт, который имеет регулярно обновляемый контент (это могут быть новости, статьи, фотографии, дневники и т.д.), просто обязан иметь RSS фиды, так как люди, заинтересованные в свежей информации на сайте, первым делом ищут, как подписаться на эти самые обновления. К тому же, имея RSS на своем сайте, можно регистрировать его в различных, специально предназначенных для этого, каталогах и, таким образом, получать обратные ссылки и главное — траффик!
То, что рсс потоки важны, мы выяснили, теперь разберемся, как установить на свой сайт (например, прикрепить к новостям) этот самый RSS, если сам движок сайта не делает этого автоматически.
Прежде всего, надо уяснить, что на выходе мы должны получить XML файл определенной структуры (об этом можно почитать в википедии). Для удобного манипулирования с RSS каналами у меня имеется хороший PHP класс (class.RSSFeed.zip [1.25KB]).
Для того, чтобы установить себе на сайт RSS канал, проделайте следующие шаги: 1. загрузите класс RSSFeed себе на сервер; 2. создайте файл rss.php, в который поместите строки, приведенные ниже в примере (с вашими конфигурационными настройками).
В приведенном PHP коде необходимо настроить константы (задаются функцией define). Обратите особое внимание на NEWS_TABLE и DATE_COLUMN, это имя таблицы новостей (или статей и т.д.) и имя колонки с датой, если последней в таблице нет, то её надо добавить (записи RSS фида обязательно должны содержать дату публикации).
Мы определили константы и подключились к БД, теперь необходимо вывести все записи в XML формате. Для этого используем следующие строки кода (добавляем их ниже предыдущих не изменяя).
Единственное, что можно редактировать в вышеприведенном коде, это названия полей в базе данных для 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 должен содержать примерно следующее:
Теперь вы можете использовать http://site.ru/latest-news.xml в качестве адреса для своего нового RSS канала, или же зарегистрировать его в FeedBurner, и отдавать читателям и ботам адрес фидбернера. Преимущество последнего варианта в том, что при создании на сайте новой новости она помимо того, что автоматически помещается в фид, фидбернер ещё пингует множество сервисов и поисковых систем, чтобы они были в курсе ваших обновлений.
На этом процесс установки завершен, осталось поставить на сайт какую-нибудь иконку, чтобы люди кликали и подписывались. Если есть вопросы или предложения, с удовольствием можно обсудить в комментариях.
Успехов с RSS!
Найдите нужного исполнителя через каталог seo-компаний Рунета.
Комментарии
мая 27, 2009 at 02:23
1Сейчас большинство cms включают rss представление данных и вебмастерам не нужно заморачиваться с установкой дополнительных скриптов.
Хотя статья полезна тем, кто использует самописные движки.
мая 28, 2009 at 05:00
2Лучше в .htaccess сделать редирект фида на feedburner, а на страницах отдавать ссылку на реальный адрес. В TxP для этого я использую плагин. Решение пришло после того, как Google начал двигать фиды – проще поменять адрес в админке в одном месте, чем в двух-трёх местах в шаблоне.
Сергей, это статья “как нужно в теории”, или это всё было проделано собственноручно на этом блоге?
мая 28, 2009 at 11:46
3IHHI, этот блог на txp. Но собственноручно было проделано подобное неоднократно и не только для себя. Я ведь web-разработчик по совместительству )
мая 29, 2009 at 11:31
4Извиняюсь за нубский вопрос. Для просмотра RSS я использую закладки на ленты новостей FireFox. Если подписаться на ваш блог с помощью кнопки rss в адресной строке FireFox, то в закладках напротив прочитанных постов будет появляться фавикон блога. Поэтому на поиск непрочитанных постов уходят секунды. Но у ленты некоторых блогов фавикон не появляется. С чем это связано и что нужно сделать, чтобы отображался фавикон?
мая 29, 2009 at 11:55
5Kinatope, проблема скорей всего с неправильным прописанием favicon в HTML (про то, как правильно установить иконку фавикон на свой сайт читайте тут).
мая 29, 2009 at 01:06
6На самих блогах фавиконы отображаются. И если просто добавить такой блог в закладки, то фавикон у ссылки будет (блог Димка), а вот в ленте новостей FF нет . В RSS у таких блогов посты имеют адреса: http://feedproxy.google.com/…
В вашей ленте у постов свои настоящие адреса. Но если подписаться на ваш RSS с помощью ссылки на самом блоге, то адреса постов тоже будут иметь вид http://feedproxy.google.com/… и фавикон отображаться не будет. Видимо, здесь важно где расположен сам фид? Если подписываться из адресной строки FF, то его адрес: http://devaka.ru/rss/ или http://devaka.ru/atom/, а если вторым способом то здесь: http://feeds2.feedburner.com/devaka?format=xml
А у блога Димка в обоих случаях он на http://feeds.feedburner.com/… и фавикон в закладках на ленты новостей FF не отображается.
мая 29, 2009 at 03:42
7Вообще как иконка rss “попадает” в адресную строку? <link rel=“alternate” … ?
июня 13, 2009 at 12:55
8Управленец, да, rss иконка в адресную строку попадает из тега link.
июля 3, 2009 at 10:35
9Пытаюсь установит rss по вашей методике на php-fusion, однако при проверке валидности пишет, что файл не является xml. Помогите пожалуйста разобраться. Дополнительную информацию, которая необходима могу сбросить на e-mail.
июля 31, 2009 at 01:54
10оп получилось спс;)
августа 29, 2009 at 05:51
11А можно ли форматировать текст в рсс, например использовать тэги <p> <br> <div>?
августа 29, 2009 at 06:02
12@Hum: Форматировать можно, без проблем.
Для этого в теге описания текст нужно вставлять между тегами:
<![CDATA[ и ]]>
Подробней читайте тут.
@Igrik: Проблему решили?
сентября 13, 2009 at 05:19
13Я – чайник, у меня сайт в xhtml, я дизайнер по интерьерам, не веб-мастер, но на свой сайт, для раскрутки хотелось бы поместить rss ленту. Вот хоть кто нибудь объяснил бы как и что надо делать для установки в обычный xhml сайт человеку, который не понимает в php. Есть ли добрые люди? HELP! что сделать надо ПО ШАГАМ? Да прибудет с вами удача! ;)
сентября 27, 2009 at 08:15
14Подскажите, ЕСЛИ КТО В КУРСЕ, можно ли у себя в РСС ленте размещать новости с других сайтов, но чтоб автоматически подгружались только новости отсортированные по КЛЮЧЕВЫМ СЛОВАМ?!!
Заранее thnx
октября 11, 2009 at 07:17
15Ирокез, меня тоже этот вопрос интересует, как узнал?
октября 11, 2009 at 08:13
16Можно, написав скрипт на php или другом языке )
декабря 5, 2009 at 09:06
17Здравствуйте. А скажите, пожалуйста, есть ли возможность сделать следующее изобретение для сайта в бесплатном хостинге народ.ру:
БЛОГ (blogspor, wordpress или другой). В него записывают новости и они автоматически переводятся в тамошний RSS-канал.
САЙТ НАРОДОВСКИЙ.
На нём есть
1. файл сайт/rss.xml, который сам по себе ничего не содержитэ, но в него автоматически пересылаются посты из канала в блоге.
2. файл сайт/news.html, внутри которого стоит сценарий на JavaScript, который импортирует данные из канала в блоге и представляет их на странице в виде HTML.
Заранее спасибо.
января 2, 2010 at 01:49
18я так понял, что для того, чтобы юзать рсс, обязательно нужно иметь в бд соответствующую структуру данных. а что делать, если есть не все? ну, например, нету дат или других колонок. эти данные обязательны для рсс?
Комментирование этой статьи закрыто.