Вывод новостей в RSS


Организовать вывод любого справочника в RSS формате можно с помощью обычного макроса $News[]$.

Шаг 1. Создать файл rss.xml в папке Templates, в него написать строку

$Content$

Шаг 2. Создать страницу для вывода RSS ленты, например, с псевдонимом news_rss. Присвоить странице шаблон rss.xml. В menu.xml это будет выглядеть примерно так:

<node id="rss001" title="Новости в форме RSS">
    <alias editable="true" title="Псевдоним страницы">
        news_rss
    </alias>
    <template editable="true" title="Шаблон фронтзоны" type="front-templates">
     rss.xml
    </template>
    <admin_template editable="true" title="Шаблон админзоны" type="back-templates">
     page_simple_edit
    </admin_template>
</node>

Использование расширения xml в имени шаблона позволит системе отличить вывод xml от вывода html и правильно сформировать заголовок content-type на выходе.

Шаг 3. В страницу news_rss через админзону или прямой правкой файла Content/news_rss.txt внести макрос $News[]$ и настроить его для своих целей.

Например так:

$News[source: news; design: news_archive_rss; filter: state=on; count: 20]$

Шаг 4. Создать в файле Templates/news_design.xml секцию с дизайном news_archive_rss примерно следующего вида:

<newsdesign id="news_archive_rss">
<header><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <title><![CDATA[$Encode[source: "Страта Технологии"; in: windows-1251; out: utf-8]$]]></title>
        <link>http://www.twl.ru</link>
        <description><![CDATA[$Encode[source: "Новости компании Страта Технологии"; in: windows-1251; out: utf-8]$]]></description>
        <language>RU-ru</language>
        <generator>Twilight CMS</generator>]]>
</header>
<someitem><![CDATA[
    <item>
        <title><![CDATA[$Encode[source: "$Attribute:caption$"; in: windows-1251; out: utf-8]$]]></title>
        <link>http://www.twl.ru/news/?nid=$Attribute:id$</link>
        <description><![CDATA[$Encode[source: "$Attribute:announce$"; in: windows-1251; out: utf-8]$]]></description>
        <dc:creator>Twilight CMS</dc:creator>
        <dc:date>$DateTime [datetime: "$Attribute:date$ 00:00:00"; format_in: "DD.MM.YYYY hh:mm:ss"; format_out: "YYYY-MM-DDThh:mm:ss+04:00"]$</dc:date>
        <guid isPermaLink="false">$Attribute:id$</guid>
    </item>]]>
</someitem>
<footer><![CDATA[
    </channel>
</rss>$SetEncoding[UTF-8]$]]>
</footer>

</newsdesign>

На первый взгляд конструкция сложная, но это только потому, что мы в наш xml дизайн положили куски xml оформления RSS 2.0. Если выбросить обычное обрамление секций header, footer и someitem (это псевдоним для секции item, который сделан чтобы не пересекались элементы с одинаковым названием) - останется чистый RSS.

Если все имена полей расставлены верно, то при входе на страницу /news_rss вы увидите примерно такой XML файл:

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <title>Twilight CMS official site</title> 
        <link>http://www.twl.ru</link> 
        <description>Twilight CMS - official site of content management system</description> 
        <language>RU-ru</language> 
        <generator>Twilight CMS</generator> 
        <item>
            <title><![CDATA[ В "Библиотеке разработчика" опубликована статья "Оптимизация производительности сайта"]]></title>
            <link>http://www.twl.ru/news/?nid=275e6f281d392b915c54637234ce0e0a</link> 
            <description><![CDATA[ Материал ориентирован на партнеров и опытных разработчиков. Рассматриваются частые ошибки и типовые советы по оптимизации скорости работы сайта на "Twilight CMS" при возникновении проблем с производительностью.]]></description>
            <dc:creator>Twilight CMS</dc:creator>
            <dc:date>2007-09-09T00:00:00+04:00</dc:date> 
            <guid isPermaLink="false">275e6f281d392b915c54637234ce0e0a</guid> 
        </item>
    </channel>
</rss>

В данном примере показан рабочий дизайн для RSS 2.0. Изменяя дизайн для вывода новостной ленты вы можете настроить вывод в любом нужном вам RSS формате. Только аккуратно следите за количеством и именами полей, именами используемых в заголовке схем и форматом даты. Для формирования даты в RSS версии 0.9 применяйте макрос GMT.

Начать изучение RSS можно с материалов в Википедии (откроется в новом окне).