RSS своими руками

    Вчера создал для блога RSS-поток. Теперь, если выдержу писать постоянно, можно будет оперативно читать мои заметки.
    Знаю, что подавляющее большинство использует wordpress или другие блоговые движки, поэтому их могу отослать сразу ко второй части заметки. У меня же полностью hand-made – надеюсь, я такой не единственный в своём роде маньяк-новичок, и моим коллегам тоже будет интересно почитать.

    иконка RSS
    При написании скрипта были использованы спецификация и две статьи типа «RSS на PHP»: вот тут всё расписано коротко и ясно, вплоть до готового кода; тут более обобщенно, зато рассмотрены также ввод и вывод данных (в моём случае пока абсолютно не нужно).

    Итого, скрипт был собран на ходу минут за 10, но… работать отказался. Пришлось ждать до вечера, когда попаду домой, к Интернету. Вот приобретённым на этом этапе опытом и есть смысл поделиться.

    Во-первых, обращу ваше внимание на то, что языка <language>ru</language> не существует. Была произведена разведка боем десятка RSS-каналов – все используют en или en-us. Хотя, в принципе, спецификация вежливо сообщает, что есть и другие языковые метки, отсылая к некоторому другому стандарту, он на другой список стандартов – в общем, так я и не узнал, может ли быть поток официально русским.

    А для того, чтобы всё это работало, прямо в тэге xml указывается encoding=«UTF-8» или (у меня же всё не как у людей) encoding=«windows-1251».

    В случае, если в description'ах новостей используется html, текст заключается в <![CDATA[… ]]> – об этом, в статьях выше, кажется, не было.

    Вот по первой части и всё. Добавлю только, что для тестирования потока на валидность пришлось гонять IE7 – он единственный из всего моего набора браузеров сообщает о конкретных ошибках, и то, как в итоге выяснилось, не совсем верно – в моём случае он ругался на заглавную «Б» в описании канала :( Зато IE6 потоки предлагает сохранить на ПК, после чего их можно «препарировать» по собственному усмотрению.


    А теперь обещанная вторая часть.

    Далее ваш покорный слуга решил воспользоваться услугами сервиса FeedBurner, предоставляющего владельцам RSS-каналов подробную статистику и море всяких других приятностей, о которых я пока ещё не знаю.

    Зарегистрировавшись на сервисе (большое текстовое поле с кнопкой на главной же странице), я получил на выбор кучу материалов, что мне делать дальше, если у меня блог на Blogger, Wordpress, MySpace и т.д. О рукотворных чудесах, ясное дело, ни слова.

    Так вот, методом проб и ошибок, установлено: новый адрес канала типа feeds.feedburner.com/JustKitich вставляется только в link в шаблоне блога, всё остальное (собственно, сам скрипт генерации потока) остаётся без изменений.

    Шаг 2. Хочу красивую кнопочку с количеством читателей. Я например, забил на FeedBurner и попытался выудить код кнопки с первого попавшегося блога – не тут-то было. Пришлось всё же найти, где оно находится на сервисе и… активировать услугу! Кстати, там же рядом находится куча кнопок типа «подписаться через ваш любимый сервис чтения новостей». И всё это в разделе Publicize – FeedCount и friendly graphic ссылки соответственно.

    Шаг 3. Сбор статистики. Используется скрипт, помещается (как правило) в части «head» шаблона блога. На FeedBurner спрятан далеко – даже найти сейчас повторно не могу, но активации не требует, потому привожу здесь код:

    <скрипт src='http://feeds.feedburner.com/~s/JustKitich?i=...' type='text/javascript' charset='utf-8'></скрипт>


    вместо "..." вставляется адрес текущей заметки, а вместо скрипт script (фича Хабра).

    Теперь объясняю: этот текущий адрес нужен, чтобы скрипт знал, откуда его вызывают и заносил соответствующую страницу в статистику. Я же на многих блогах видел ужасы типа из заметок скрипт передаёт ссылку на заметку, а со всех остальных страниц – ссылку на последнюю заметку. ИМХО неправильно как-то. У себя, например повесил следующий код:

    <?
    if ($page_curr == 'blog') {
    if ($id>0)
    print "";
    else
    print "";
    }
    ?>


    то есть, скрипт выводим только в блоге (у меня ещё и другие разделы есть), причём в заметках отсылаем адрес заметки, иначе – просто главную блога. Посмотрим, как теперь работать будет.

    На этом, собственно, и всё. У меня лично пока вопросов больше нет. Рад, если пригодится хоть кому-то ещё.
    Оригинал — тут

    Похожие публикации

    Средняя зарплата в IT

    120 000 ₽/мес.
    Средняя зарплата по всем IT-специализациям на основании 6 532 анкет, за 1-ое пол. 2021 года Узнать свою зарплату
    Реклама
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее

    Комментарии 9

      +2
      Это разве своими руками? Я пишу своими все вплоть до кода, думал вы опытом поделитесь…
        0
        своими-своими. От вышеприведенных ссылок только отталкивался. А не своими — значит, когда вордпресс замечательный все готовое на блюдечке подает
        +1
        только не говорите, что вы RSSку эхами отдавали. Omg. Есть же simplexml. Лучше бы рассказали об этом, а не о том, как на фидбернере региться.
          0
          ну, думаю, кому-то и это полезным может быть.
          +1
          статья в общем слабовата.
            0
            Купите книжку «Объектно-ориентированное программирование на php5» (Питер Ловэйн)
            Там про rss и soap немного описано, тоесть работать по крайней мере будет и хмл не через эхо генерится конечно.
              +1
              ОК, все набросились. А почему не через эхо, принты или еще что-нидь?

              Я, например, ненавистник ООП (только не надо холиварить). И если всё просто, процедурно-модульно, зачем мне для банального RSS-а что-то выдумывать?
                +1
                >А почему не через эхо, принты или еще что-нидь?
                Просто тогда не нужно размышлять, как же всё это барахло экранировать, чтобы XML был валидным. В случае даже SimpleXML — это уже не ваша забота.

                >Я, например, ненавистник ООП
                А это зря. ООП не надо ненавидеть. Надо лишь осознавать, что не для всех задач он хорош. Его использование для простейшего RSS генератора совершенно необязательно.

                Просто в данном контексте ваша фраза похожа на: «я ненавижу цикл for, у меня и while'ами всё хорошо получается, зачем ещё что-то выдумывать?»

                >зачем мне для банального RSS-а что-то выдумывать?
                Уже всё выдумано, не надо ничего выдумывать :)
                  0
                  да, я погорячился. просто сегодня день неудачный )

                  Но вокруг развелось столько любителей ООП, пихающих его куда угодно, и отрицающих другие точки зрения, что поневоле появляется отвращение.

                  А в целом Вы правы: «Надо лишь осознавать, что не для всех задач он хорош.». Но мне проще вот так, принтить

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое