Короткий посібник з формування rss стрічок
Після того, як я виявив в мережі Інтернет, що все прогресивне людство давно вже користується форматом RSS (R eally S imple S yndication) для передачі новин, а я прикрутив сіё дитя шкодливою думки до сайту. Потім ще до одного. І ще. В процесі прикручування оного дитяти до різних сайтах, я зіткнувся з деякими проблемами, які мені довелося вирішувати, чим і поспішаю поділитися. Отже, по порядку.
Почнемо ab ovo. Що з себе являє формат RSS в самому мінімальному вигляді, видно з наведеного нижче прикладу:
Природно, що в такому вигляді він нікому і даром не потрібний, але не поспішайте, це тільки приказка, казка вся попереду. Отже, що ми маємо з гусака? Перший рядок говорить нам про те, що це мова розмітки XML і кодування тексту всередині windows-1251. Звичайно, найбільш правильним було б використовувати UTF-8, як це рекомендується в документації до XML, але оскільки допускаються будь-які стандартні кодування. Не будемо мудрувати лукаво і возмем кодування, яка використовується для документів нашого сайту. Можлива також кодування koi8-r або будь-яка інша за Вашим вибором.
Другий рядок це відкриває тег
Назва вашого каналу. Саме з цього назвою і будуть посилатися на Ваш ресурс. Якщо Ви це робите для свого веб - просто впишіть назву свого сайту.
Короткий опис каналу.
Тепер, про необов'язкових елементах.
Ну, а тепер збираємо все разом. Вставка виділена жирним шрифтом.
Якщо ми робимо RSS вручну, то тепер при появі чергової новини ми просто додаємо її в фаил, стираючи в міру необхідності старі. В принципі, без різниці куди додавати черговий блок, але красивіше коли він йде в зворотному хронологічному порядку. наприклад:
Слід нагадати, що якщо ви хочете використовувати в форматі XML, припустимо, в елементі
Змініть атрибут href і буде Вам щастя.
Тепер про програмування цього всього на PHP в динамічному режимі. Думаю, що людині знайомому з азами PHP зробити висновок файлу в описаному форматі не буде складно, завдання тривіальне, але є одне "але". Справа в тому, що треба правильно сформувати заголовки. Оскільки агрегатори можуть звертатися до Вашого ресурсу досить часто, непогано щоб вони отримували відкоша, якщо ніяких змін на сайті немає. Для цього в HTTP-заголовку прописуються такі речі:
header ( "Content-type: text / xml");
header ( "Last-Modified. $ MypubDate");
header ( "Etag." $ MyETAG "");
Залишу на Ваш розсуд формування елемента Etag. Я, особисто, використовую timestamp найсвіжішої новини плюс якусь службову інформацію. Але, можливо, до видачі перерахованого вище може і не дійти, оскільки спершу треба перевірити заголовки виклику і в разі, якщо у нас нічого не змінилося повернути код помилки HTTP 304 Not Modified. Фрагмент коду, який здійснює перевірки, наведено нижче.
Зверніть увагу: всі дати в заголовках HTTP повинні формуватися тільки відповідно до стандарту RFC 1123. Коректний формат дати, відповідний даному стандарту, можна отримати, наприклад, наступним чином: $ MyGMTtime = gmdate ( "D, d MYH: i: s", $ mytime). "GMT";
Можу ще додати для допитливих:
- Що крім формату RSS є ще активно розробляється формат Atom. в даний момент версії 0.3 і остаточно не затверджений. Деякі сайти вже видають новини і в цьому форматі, але я поки не поспішаю.
- Існує ще формат CDF або Microsoft Active Channel. Даний формат також освоєний і застосовується. Так, на головній сторінці цього сайту встановлена внизу зліва відповідна кнопка, яку видно при наявності у Вас IE 4.0 і вище. Але, як показала практика, інтересу він не представляє. Досить корявий механізм і незручний у використанні.